1. 什么是反射型XSS
反射型 XSS(Cross - Site Scripting)也被称为非持久型 XSS。它是一种常见的网络安全漏洞。简单来说,反射型 XSS 是指攻击者通过诱使用户点击一个恶意链接或者提交一个特制的表单,将恶意脚本注入到当前的 HTTP 请求中。当服务器处理这个请求时,恶意脚本会被包含在响应中,然后在用户的浏览器中执行。与持久型 XSS 不同的是,反射型 XSS 的恶意脚本不会被存储在服务器端,而是仅仅在这次请求 - 响应的交互过程中被执行。
我写过一篇博客分析过不同种类的XSS漏洞。欢迎查看:
XSS原理&dvwa&xssvalidator使用-CSDN博客
2. 漏洞发现过程
2.1 扫描发现疑似XSS漏洞
在进行网络安全评估时,我们使用了专业的安全扫描工具对目标网站进行全面的检测。扫描工具在分析网站的各个页面和交互流程时,标记出了一个可能存在 XSS 漏洞的区域。根据扫描工具的提示,我们初步判断这些区域存在较高的反射型 XSS 风险。
点击进入查看扫描结果,打开相关的探测报文:
可以准备定位到一个可疑的注入点。就是在/index.html后方。
2.2 使用浏览器+BurpSuite验证漏洞存在
于是我启动浏览器和Burp Suite, 配置好环境后,Burp Suite打开拦截器(Intercept on)在浏览器输入上节发现的URL,抓获一条报文。
根据扫描器的可以报文结构,修改本次抓到的报文的头部内容,并把<WMMRXE>位置的注入字符替换为常见的XSS注入的payload。
尝试:
1. 使用经典payload:
<script>alert(/xss/)</script> 和 <img src=1 οnerrοr=alert(/xss/)>
发现都得到错误响应。无现象。
2. 尝试大小写和复写绕过:
<ScRipt>alert(/xss/);</ScRipt> 和<scr<script>ipt>alert(/xss/);</script>
<Img Src=1 οnerrοr=alert(/xss/)> 和 <iimmgg src=1 οnerrοr=alert(/xss/)>
发现都得到错误响应。无现象。
3. 尝试 编码绕过:
将 <img src = 1 onerror = alert(xss)> 编码为 %3Cimg%20src%3D1%20onerror%3Dalert%28%27xss%27%29%3E
点击Burp Suite工具上的forward all,接收到正确响应的报文,观察到浏览器弹框,成功找到漏洞。
3. 总结
通过此次对反射型 XSS 漏洞的发现过程,即使有专业的安全扫描工具辅助,漏洞的确认也并非一蹴而就,需要进行多轮的尝试和验证。
在本次漏洞发现中,我们首先借助安全扫描工具确定了疑似漏洞区域,然后通过手动修改报文进行测试。在尝试多种 payload 后,最终通过编码绕过的方式成功触发了漏洞,验证了反射型 XSS 漏洞的存在。
这一过程提醒我们,开发人员在构建网站和应用程序时,必须高度重视用户输入的验证和输出的编码,以防止恶意脚本的注入。
此外,对于企业和组织来说,定期进行全面的网络安全评估和漏洞扫描是至关重要的,及时发现并修复潜在的安全漏洞,才能有效保护用户数据和系统的安全稳定。