挖洞经验 | 看我如何挖掘成人网站YouPorn的XSS并成功利用
字数 1322 2025-08-18 11:37:16
YouPorn XSS漏洞挖掘与利用教学文档
漏洞概述
本教学文档详细分析了一个在成人网站YouPorn上发现的XSS漏洞的挖掘和利用过程。该漏洞最初表现为一个开放重定向问题,随后被升级为反射型XSS漏洞,最终获得了250美元的漏洞赏金。
漏洞发现背景
- YouPorn在HackerOne上启动了bug奖励计划
- 研究人员在搜索栏中发现潜在XSS漏洞
- 该漏洞之前未被发现,可能是因为需要特定技巧才能利用
漏洞分析
初始发现
- 搜索表单中的用户输入被直接输出到
<meta>标签中 - 服务器对输入没有进行充分过滤(仅处理了大写字母)
- 尝试直接插入JavaScript payload失败
开放重定向漏洞
-
利用
<meta>标签的http-equiv属性http-equiv="refresh"可用于页面重定向- 这种开放重定向可用于钓鱼攻击
-
初始payload尝试:
"><meta http-equiv="refresh" content="0;url=http://evil.com"> -
遇到问题:
http-equiv中的破折号(-)未被正确插入到源代码中
-
绕过技巧:
- 双重编码:先HTML编码,再URL编码
- 破折号编码过程:
- 原始字符:
- - HTML编码:
- - URL编码:
%26%2345%3b
- 原始字符:
-
成功payload:
"><meta http%26%2345%3bequiv="refresh" content="0;url=http://evil.com">
从开放重定向到XSS
-
扩展思路:使用相同技巧插入
<和>- 将破折号替换为HTML标签的尖括号
-
XSS payload构造:
- 使用"HTML-encode-then-URL-encode"技巧
- 示例:
"><script>alert(1)</script> - 编码后形式:
"%3e%3cscript%3ealert(1)%3c/script%3e
-
服务器端解码特性:
- 无论进行多少次HTML编码递归,服务器都会完全解码
- 例如:
<→<&lt;→<&amp;lt;→<
漏洞利用场景
-
钓鱼攻击:
- 发送看似合法的YouPorn链接
- 用户被重定向到攻击者控制的伪造网站
- 窃取凭据、信用卡信息等
-
XSS攻击:
- 执行任意JavaScript代码
- 窃取用户会话、修改页面内容等
漏洞报告与处理
-
初始报告被标记为"重复"
- 之前有人报告过但未能提供有效利用证明
-
提供有效payload后:
- 漏洞被确认
- 获得250美元赏金
防御建议
-
输入过滤:
- 对所有用户输入进行严格过滤
- 使用白名单而非黑名单方法
-
输出编码:
- 根据输出上下文进行适当的编码
- HTML实体编码、JavaScript编码等
-
内容安全策略(CSP):
- 实施严格的CSP策略
- 限制内联脚本执行
-
元标签处理:
- 特别处理
<meta>标签中的用户可控内容 - 禁止用户控制
http-equiv属性
- 特别处理
技术要点总结
-
双重编码绕过技巧:
- HTML编码后URL编码
- 适用于服务器解码顺序特殊的情况
-
元标签的利用:
http-equiv="refresh"的开放重定向风险- 作为XSS的跳板
-
递归解码特性:
- 识别服务器如何处理多重编码输入
- 利用这一特性绕过过滤
学习要点
-
漏洞挖掘思路:
- 从简单功能(如搜索框)开始测试
- 观察输入在输出中的位置和上下文
-
编码技巧:
- 不同编码方式的组合使用
- 根据服务器行为调整编码策略
-
漏洞升级:
- 从低危漏洞(开放重定向)升级到高危漏洞(XSS)
- 充分利用现有漏洞特性
-
漏洞报告:
- 提供完整利用证明的重要性
- 即使被标记为重复也不应轻易放弃