i春秋学院是国内比较知名的安全培训平台,前段时间看了下网站,顺便手工简单测试常见的XSS,发现网站搜索功能比较有意思。

其实是对用户输入的内容HTML编码和URL编码的处理方式在这里不合理,提交到乌云被拒绝了,因为确实没啥危害,因此技术BLOG记录下。

如搜索:http://www.ichunqiu.com/search/ab<>,搜索内容为ab<>,页面会把<>做html编码后在页面展现,这样看起一切正常。

如:

但经过多次分析,发现把搜索的内容用URL多次编码或html多次编码后,服务端后台都会自动解码然后输出到客户端,那是否可以把恶意的标签通过多次编码后来搜索,伪造一个URL地址,达到XSS的攻击效果呢。

结果经过多次测试,发现虽然多次URL和HTML编码后,后台会自动解码,但输出到客户端前,会再次对输出的内容做安全性检测,导致不能XSS。

比如输入:%25253Cimg%20src%253D"http%3A%2F%2Fwww.baidu.com%2Flogin%2Flogout"%25253E

该内容是标签:<img src="http://www.baidu.com/login/logout">,经过URL多次编码的效果,实际把英文字母用HTML多次编码一样可以,之前测试的时候用iframe,javascript等,都经过html多次编码字母内容也可以绕过,但输出到客户端时服务端又做了处理,所以导致不能XSS。

效果如下:

要是把img里的内容换成<img src="http://www.ichunqiu.com/login/logout">,则访问这个的地址会自动退出该网站。

最终没有对用户和网站造成任何安全影响,但觉得html这样处理的方式适合多文本框输入输出的处理方式,不适合对搜索内容的编码处理方式。

i春秋url地址编码问题的更多相关文章

  1. URL地址编码和解码

    0. 参考 [整理]关于http(GET或POST)请求中的url地址的编码(encode)和解码(decode) python3中的urlopen对于中文url是如何处理的? 中文URL的编码问题 ...

  2. 为何url地址不是直接发送到服务器,而是被编码后再发送

    首先,先说一下,关于为何必须将url地址,去编码后,再发送,是因为相关的协议规范:RFC 1738,定义了url地址中不能包含除了0-9的数字,大小写字母(a-zA-Z),短横线’-‘ 之外的字母.换 ...

  3. url传输编码

    首先:协议规范,RFC 1738,定义url地址中不能包含除:0-9,a-zA-Z,- 之外的字符,即,如URL中包含特殊字符,如$-_.+!*’(), 都要编码. 关于为什么如此定义,有如下几个原因 ...

  4. URL地址的编码和解码问题

    编码:encodeURIComponent() 方法:把URI字符串采用 UTF-8编码格式转化成escape格式的字符串.与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字 ...

  5. [LeetCode] Encode and Decode TinyURL 编码和解码精简URL地址

    Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...

  6. 图片的base64编码通过javascript生成图片--当前URL地址的二维码应用

    前面的话 在电脑端发现一篇好的博文,想在手机上访问.这时,就必须打开手机浏览器输入长长的URL地址才行,非常不方便.如果在博客标题的后面跟一张小的图片,点击该图片后,出现一张二维码的大图,然后再通过手 ...

  7. [转]PHP base64_encode 在URL地址参数编码上使用

    因为我使用公钥,使用php的 openssl 加密之后的资料 base64_encode()字符串,然后放入请求 url 中当作参数,urlencode(base64_encode()),然后用 ur ...

  8. 用jq编码解码一个url地址

    介绍一下编码解码函数对 1.    escape /unescape   主要用于汉字编码,返回字符的unicode编码值, 对“+”不能编码 2.     encodeURI / decodeURI ...

  9. URL地址中使用中文作为的参数【转】

    原文:http://blog.csdn.net/blueheart20/article/details/43766713 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作 ...

随机推荐

  1. Nginx 颁发自签证书

    首先,确保安装了OpenSSL库,并且安装Nginx时使用了–with-http_ssl_module参数. 1:进入生成证书的目录 cd /usr/local/nginx/conf 2:使用open ...

  2. UUID库

    If you cannot afford to use Boost, then there is a very minimal library that I implemented which sim ...

  3. Backbone事件模块及其用法

    事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说 ...

  4. HTTPS 双向认证构建移动设备安全体系

    HTTPS 双向认证构建移动设备安全体系 对于一些高安全性要求的企业内项目,我们有时希望能够对客户端进行验证.这个时候我们可以使用Https的双向认证机制来实现这个功能. 单向认证:保证server是 ...

  5. NOSDK--关于android傻瓜式的分包设想

    一直以来,我总是以“够用就好”为理由,很少再维护过自己的一键打包的项目.最近接触了棱镜的sdk,感觉将apk包上传到棱镜服务器,后台来进行分包这种简单的方式很招人待见. 原理似乎不难,apk即zip压 ...

  6. Bookshop(一)数据库连接

    连接池配置文件db.properties配置 1.新建一个普通文件->改名为db.properties(后缀)手动添加属性 一般为数据库驱动类.数据库连接地址.用户名.用户密码 driver=c ...

  7. express-session使用理解

    本篇主要段落翻译来自https://github.com/expressjs/session 客户端与服务会使用一个Sessionid的Cookie值来进行客户端和服务器端会话的匹配,这个Cookie ...

  8. 高程三:Array

    一:Array数组 1.Array.isArray(参数) 检测是否是数组,*不兼容IE8,兼容IE9及以上.Chrome.Firefox等,要兼容IE8,可以用 Object.prototype.t ...

  9. Eclipse 各版本版本号代号对应一览表

    版本号 代号 日期   Eclipse 3.1 IO [木卫一,伊奥] 2005   Eclipse 3.2 Callisto [木卫四,卡里斯托] 2006   Eclipse 3.3 Eruopa ...

  10. 【krpano】加密XML手动解密分析

    krpano允许对XML文件进行加密,对XML进行相应的保护.加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML.两种加密方式的算法 ...