1.1 什么是XSS?
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)
的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html
代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户
的特殊目的。
在Web漏洞中,XSS是出现最多的漏洞,没有之一。
1.2 攻击场景及形成原因
造成XSS漏洞的原因就是,攻击者的输入没有经过严格的控制,最终显示给来访的用
户,攻击者通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行恶意制造的
网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,
ActiveX,Flash或者甚至是普通的HTML。
攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、个人网页内容、会话
和cookie等各种内容。常见场景:
1.回帖,评论,用户输入在页面直接进行显示,没有进行过滤。
2.用户反馈,客服提问,输入的恶意脚本在后台进行了执行,窃取后台管理员cookie
等信息。
3.搜索展示搜索结果的时候直接展示用户输入。
1.3 XSS类型
XSS主要有三类:
反射性XSS(也叫非持久型XSS),
存储型XSS(也叫持久型XSS)和DOM XSS。
1.3.1 反射性XSS
通过GET、POST、referer等参数未加处理直接输出到页面执行。该类型是最为常见
的,攻击者主要利用此类型通过email、热度非常大的论坛、或者有针对性的某一用户
发送一个隐藏性的链接,让受害者进行点击触发。
1.3.2 存储型XSS
由攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据,然
后显示在公共显示的固定页面上,那么所有浏览该页面的用户都会被攻击。该类型攻
击性非常大,危险也非常大。
1.3.3 DOMXSS
由Javascript脚本动态创建、输出到页面造成的。该类型不容易发现,具有隐藏性的
特点,必需手工去发现。
1.4 XSS 有什么危害?
XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、插入
恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。
1.5 如何防御?
1、htmlspecialchars()函数。
用于转义处理在页面上显示的文本。
2、htmlentities()函数。
用于转义处理在页面上显示的文本。
3、strip_tags()函数。
过滤掉输入、输出里面的恶意标签。
4、header()函数。
使用header("Content-type: application/json");用于控制json数据的头部,不用于浏览。
5、urlencode()函数。
用于输出处理字符型参数带入页面链接中。
6、intval()函数
用于处理数值型参数输出页面中。
7、自定义函数。
在大多情况下,要使用一些常用的html标签,以美化页面显示,如留言、小纸条。
那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字
符。
基于黑名单的过滤和基于白名单的过滤。后者的防御效果往往更好,对于用户在白名
单之外的输入,可以直接忽略。在构造白名单的过程中需要保证在不影响用户体验的
同时,尽可能杜绝一切不必要的输入内容。
Flash XSS的修复需要对相应的flash进行修改或升级替换。在cookie中加入httponly
属性可以在一定程度上保护用户的cookie,减少出现XSS时损失。
1.5.1 一些在线XSS游戏
http://prompt.ml/
答案:
https://github.com/cure53/xss-challenge-wiki/wiki/prompt.ml
http://escape.alf.nu/
答案:
http://blog.163.com/cmdbat@126/blog/static/17029212320149385547765/
https://xss-game.appspot.com/
答案:
http://www.freebuf.com/articles/web/36072.html
http://xss-quiz.int21h.jp/
答案:http://blog.163.com/cmdbat@126/blog/static/1702921232013112542728566/
推荐一些学习的网址:
•https://www.owasp.org/index.php/XSS
•https://www.google.com/about/appsecurity/
•http://www.freebuf.com/author/black-hole(看原理与剖析系列)
•http://html5sec.org/
•http://www.pkav.net/
•https://xssing.org/
•https://pockr.org
