1. 前言
跨站脚本攻击(XSS,Cross-Site Scripting)是一种常见的网络安全漏洞,攻击者通过在网页中插入恶意脚本,诱导用户执行这些脚本,从而窃取敏感信息或进行其他恶意操作。
2. 漏洞产生原因
XSS 漏洞的产生原因主要包括:
- 缺乏输入验证:未对用户输入进行有效过滤和验证,导致恶意脚本被注入。
- 输出编码不足:在将用户输入回显到页面时,未进行适当的编码,导致脚本被浏览器执行。
- 不当的内容安全策略:未实施或配置不当的内容安全策略(CSP),未能有效阻止恶意脚本的执行。
3. 漏洞的危害
XSS 漏洞可能导致的危害包括:
- 敏感信息泄露:攻击者可以窃取用户的 cookies、会话令牌、输入的密码等敏感信息。
- 账户接管:通过窃取用户凭证,攻击者可以实现账户接管,进行恶意操作。
- 钓鱼攻击:攻击者可以在受害者的浏览器中注入伪造的页面,以诱使用户输入敏感信息。
- 传播恶意软件:攻击者可以利用 XSS 漏洞向用户推送恶意软件或病毒。
4. XSS 的类型
4.1 存储型 XSS
- 攻击者将恶意脚本存储在服务器上(如数据库),当用户访问特定页面时,脚本被执行。
4.2 反射型 XSS
- 攻击者通过构造恶意链接,诱导用户点击,恶意脚本在用户的请求中被反射并执行。
4.3 DOM 型 XSS
- 攻击者利用客户端 JavaScript 操作 DOM,直接在浏览器中注入和执行恶意脚本。
5. 针对 XSS 漏洞的测试技巧
5.1 输入测试
- 测试所有用户输入字段,尝试注入常见的 XSS 脚本(如
<script>alert('XSS');</script>)。
5.2 输出编码检查
- 检查应用程序在输出时是否对用户输入进行了适当的编码,确保特殊字符被转换为 HTML 实体。
5.3 CSP 配置测试
- 检查应用程序的内容安全策略是否正确配置,以阻止未授权的脚本执行。
-
实践案例
- 案例1:
- 首先让你进行机构的基本信息填写,存在文件上传。


2. 随便选择一个图片点击上传。抓包。发现文件名后缀为空,看返回包中显示的是上传的png格式,我们把 filename后面加上 html后缀,并且插入xss语句: alert(1) ;,放包。


成功造成储存xss.

案例2:
子域名爆破+dirsearch得到:https://xxx.xxx

直接放上payload

这里其实还有个保存歌单功能,但已经失效了,如果尝试绕过成功的话,此处反射型xss即可变成存储型xss。
案例3:
某网站首页广告处,审查元素可以看到一个ad-data url


把url复制下来进行解码,将adurl参数后面的内容删掉,则不会继续跳转到广告页面,经测试adid会在此接口回显出来,所以直接放payload即可。
https://wapwbclick.uve.weibo.com/adfront/click_deliver.php?posid=pos525904036078b&adid= alert(/xss/) &uid=xxxxx&size=600x80&platform=web&wm=&from=&cip=xxx.xxx.xxx.xxx&adurl=https://s.weibo.com/weibo/%2523%25E7%2594%25B5%25E5%25BD%25B1%25E7%25A9%25BF%25E8%25BF%2587%25E5%25AF%2592%25E5%2586%25AC%25E6%258B%25A5%25E6%258A%25B1%25E4%25BD%25A0%2523?topnav=1&wvr=6&b=1&wb_behavior=9&wb_stat=0
