1、Xeye 2009-07-11 攻击维度不单一 Cross Site Attack XSS with CSRF with UI Redress with Phishing 目录 XSS XSS类型 哪里可以 XSS Bypass XSS Filter 我们的目标是什么(案例分析) XSS能做什么( Tips) 相关资源 讨论时刻 XSS XSS(Cross-Site Scripting) 即跨站脚本攻击,这类攻击发生在客户端,是攻击者将恶意代码注入到 Web客户端,从而影响到其他浏览此 Web界面的用户 注入的恶意代码包括: 危险的 HTML标签、客户端脚本、其它能执行 JS的容器等 大多数时
2、候与 JavaScript有关 注入源 form: post/get url parameters cookie header html媒体文件的内容 一句话概括:只要是输入点都可以是注入源 XSS类型 Reflected XSS 跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码一般不存储到服务端 Stored XSS 这是利用起来最方便的跨站类型,跨站代码存储于服务端(比如数据库中) DOM Based XSS 一种基于 DOM的跨站,这是客户端脚本自身解析不正确导致的安全问题 哪里可以 XSS HTML本身 HTML元素、元素属性、 CSS等 XML文
3、档 Flash 客户端软件 QQ2009、灵格斯词典、 office、 rar自解压等 HTML上的一些媒体元素 wmf, word, pdf ,applet Bypass XSS Filter 1. HTML中有多处可以合法执行 JS 2. HTML中的其它媒体元素导致的 XSS 3. 浏览器解析处理差异导致的 XSS 4. 浏览器特性导致的 XSS 5. 浏览器 bug导致的 XSS 6. 编码问题导致的 XSS 7. 不完备的黑名单策略导致的 XSS 8. XSS Filter本身的缺陷导致的 XSS 9. 以上综合因素导致的 XSS 1、 HTML中有多处可以合法执行 JS 标签 ja
4、vascript伪协议 HTML属性 on*事件、 style属性、 action/src/href等 CSS中 expression, javascript:, moz-binding等 Data URI XSS data:text/html;base64,PHNjcmlwdD5hbGVydCgveGV5ZS8pPC9zY3JpcHQ+DQo= 内容输出到 html中,包括 base64解码后的脚本 2、 HTML中的其它媒体元素导致的 XSS flash actionscript getURL(“javascript:alert(/xeye/)“); ExternalInterface.c
5、all(“eval“, “tryalert(/xeye/);catch(e)window.location.reload();“); pdf xss applet xss wmf xss http:/ 3、浏览器解析处理差异导致的 XSS webkit textarea innerHTML http:/xeye.us/blog/2009/04/textarea-innerhtml-not-encode-in-webkit/ 对宽字节编码的处理方式差异 eg: gbk编码的网页对 %c3处理, ff/chrome与 ie/opera的默认处理方式不同 4、浏览器特性导致的 XSS(一) IE 比
6、如 css中的 expression, *background里的伪协议 alert(/xeye/) 反单引号的支持 FF css中的 BODY-moz-binding:url(“xss-test.xml#xss“) E4X的实例: foo=x; alert(foo.id); more from http:/ 4、浏览器特性导致的 XSS(二) Opera from http:/www.thespanner.co.uk/2009/05/08/opera-xss-vectors/ 5、浏览器 bug导致的 XSS ie7/8 javascript伪协议 bypass执行 http:/xeye.u
7、s/demo/pseudo/javascript.txt “;? http:/ 6、编码问题导致的 XSS utf-7编码 +ACI- onmouseover=+ACI-alert(/xeye/)+ADsAIg- x=+ACI- us-ascii编码的 high bit问题 %A2%BE%BCscript%BEalert(/xeye/);%BC/script%BE multi-byte编码 gbk, big5, euc-jp等 eg: %c3绕过 gbk编码环境下的 php对 的转义:%c3肻 7、不完备的黑名单策略导致的 XSS 要么黑名单,要么就白名单? 总是有新元素出现,黑名单很可能就被
8、bypass 对 html标签的过滤 html5出现新的标签: video/audio/canvas等 对 on事件的过滤 出现新的事件: onloadedmetadata, ondurationchanged, ontimeupdate等 from http:/ 8、 XSS Filter本身的缺陷导致的 XSS 预留 filter开关 http:/ xml.xml文件仅包含这样的代码 在 ff/opera/chrome下有效 from http:/ Malicious Flash Flash Parameter Injection 通过类似http:/xeye.us/fpi.swf?url
9、=http:/的方式,将恶意数据传进 flash的 as脚本中处理执行 Cross-Site Flashing as脚本 if (_root.movieURI = undefined) _root.movieURI = “http:/host/movie.swf“; loadMovieNum(_root.movieURI, 1); Cross-Site Scripting through Flash as脚本 if (_root.url = undefined) _root.url = “http:/host/“; getURL(_root.url); more from http:/ Fla
10、sh封装网马 一般网马 exp是用 js编码,无论使用何种加密、验证等手段,只要在客户端执行就肯定暴露 使用 Flash AS脚本封装 隐藏 flash封装的最大优势 不是所有 exp都可以做这样封装 flash封装的缺陷 Flash AS的扩展 API: ExternalInterface类 与 html中的 js脚本通讯而达到封装且执行的目的 more from http:/ QQ2009 XSS QQ2009 XSS QQ2009客户端的 XSS攻击 昵称修改为: iframe x= 发送一条这样的消息给被攻击者:src=http:%y=。 当被攻击者查看聊天记录时,触发以上代码 more from http:/xeye.us/blog/2009/04/qq-xss-0day/ QQ2009查找群的 XSS风险 QQ2009 XSS QQ2009 XSS