1.了解
跨站脚本(Cross-site Scripting)攻击,攻击者通过网站注入点注入客户端可执行解析的脚本代码(payload),当用户访问网页时,恶意脚本自动加载并执行,已达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。
为了避免与HTML语言中的CSS相混淆,通常称为XSS。
2.危害
获取用户信息(浏览器信息、ip地址、cookie信息等)
钓鱼(利用XSS漏洞构造出一根登录框,骗取用户账户密码)
注入木马或广告链接(在主站中注入非法网站的链接)
后台增删改网站数据等操作(配合CSRF漏洞,骗取用户点击,利用js模拟浏览器发包)
xxs蠕虫(微博蠕虫:只要看过某人的微博就自动关注某人;贴吧蠕虫:只要看过某个帖子就自动回复这个帖子)
3.详解
漏洞基础类型:
反射型XSS
可用于钓鱼、引流、配合其他漏洞。
特点:仅执行一次,非持久型;参数型跨站脚本。
成因分析:
攻击者将恶意脚本附加到URL的参数中,发送给受害者,服务端未经过严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。
初步尝试:
一般在输入框中输入JavaScript代码进行测试。
攻击手段:
1.测试
在输入框中输入
看是否有弹框
2.注入JavaScript文件代码
过滤方式:
将输入框内Script替换为空。
区分大小写。
把预定义的字符"<" “/” “&” 等转换为HTML实体,防止浏览器识别为HTML代码。
绕过方法:
大写绕过:
双写绕过:<scr
使用其他标签:<img src=1 οnerrοr=alert(‘hack’)>
存储型XSS
攻击范围广,流量传播大。可配合其他漏洞。
特点:持久型。常见于评论留言。
比如评论框中输入:
那么别人查看评论的时候,也会加载你的评论,那么就会加载这个代码,弹出弹框,每次加载都会弹出,所以是持久型。
成因分析:
攻击者将恶意脚本存储到服务器数据库中,当用户访问包含恶意相关数据的页面时,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行 恶意代码数据。
初步尝试:
将JavaScript代码放入输入框中。
攻击手段:
1.测试
在输入框中输入
看是否有弹框
2.注入JavaScript文件代码
对漏洞的防范方法:
移除字符串两侧的空白字符或预定义字符。
移除字符串中的反斜杠。
对字符串中sql的特殊字符进行转义。
剥去字符串中的HTML、XML、Javascript以及PHP的标签。
使用htmlspecialchars()函数,将特殊字符变为实体,不参与标签使用。
绕过方法:
大写绕过:
双写绕过:<scr
使用其他标签:<img src=1 οnerrοr=alert(‘hack’)>
DOM型XSS
属于客户端的XSS,长度大小不受限制。可配合其他漏洞。
**特点:**通过JavaScript操作document,实现dom树的重构。
主要存在于用户能修改页面的dom,造成客户端恶意脚本代码(payload)在浏览器中执行。
成因分析:
在网址中插入JavaScript代码,程序没有对网址内容进行限制,就会造成漏洞。
初步尝试:
在网址中添加JavaScript代码。
攻击手段:
1.测试
“” ‘’ \ & < {()} 一一测试程序限制了哪些内容
2.查看网页源代码
了解如何闭合属性、标签
3.编写恶意代码
http://github.com/pgaijin66/XSS-Payloads/blob/master/payload.txt
防范方法:
移除JavaScript标签。
限制输入选择。
网址输出时再进行限制。
绕过方法:
使用大小写,标签套标签。
闭合相应的标签,在后面添加Javascript代码。
使用#注释PHP代码的限制输入。