聊天中HTML处理不当引发的钓鱼攻击风险

本文详细分析了在线聊天界面中存在的HTML存储型注入漏洞,攻击者可通过嵌入恶意链接实施钓鱼攻击。文章包含漏洞发现过程、攻击载荷演示、影响分析和修复建议,为Web安全防护提供实用指导。

🚨 聊天中HTML处理不当引发的钓鱼攻击

🔎 漏洞发现

在测试在线聊天组件时,我发现该聊天界面接受原始HTML并在客服视图中渲染。这个漏洞在一个面向客户的网站(出于披露考虑已隐去:redacted.com)上可复现。提交的HTML会被存储在聊天记录中,并在客服打开消息时显示为真实的交互式内容。

💡 攻击载荷

我使用了一个最小化的载荷来演示这个问题:

1
<a href="https://evil.com">CLICK</a>

当这个载荷在聊天中发送时,聊天界面会将其渲染为正常的可点击链接。如果客服人员点击该链接,他们的浏览器将导航到攻击者控制的域名——这为钓鱼攻击、凭据窃取或进一步的社会工程攻击创造了条件。

🧪 概念验证(PoC)

  1. 访问网站(示例):https://redacted.com/ 并登录
  2. 等待客服聊天组件出现(右下角)并打开
  3. 在聊天窗口中发送攻击载荷
  4. 观察消息在聊天中渲染为可点击链接
  5. 当客服用户点击链接时,浏览器重定向到外部域名(https://evil.com),证明钓鱼/重定向攻击向量存在

⚠️ 影响范围

  • 钓鱼风险:客服人员可能被诱导访问攻击者控制的网站
  • 凭据窃取/恶意软件:重定向可能导致凭据收集器或恶意载荷
  • 信任与升级:在报告/聊天中渲染HTML会破坏信任,如果接受脚本/事件处理程序,可能升级为存储型XSS

🔐 修复建议

  • 清理和转义输入——对HTML进行编码,使标签显示为文本而非渲染
  • 仅以纯文本渲染消息——禁止在聊天/报告字段中使用原始HTML
  • 加强查看安全——添加CSP、链接来源警告,并要求客服在沙盒中预览外部链接

参考资料

  • OWASP XSS预防备忘单
  • CWE-79:网页生成过程中输入中和不当
  • https://hackerone.com/reports/3079966
  • 报告提交时间:2025年8月27日
  • 收到回复(重复):2025年8月28日

🎯 结论

客服聊天中的单个<a>标签可能被武器化为钓鱼陷阱。应将所有用户提供的消息视为不可信:进行清理、强制纯文本渲染,并在打开外部链接前向客服发出警告。

在此案例中,我在三个不同目标中观察到了相同的行为,但所有报告最终都被标记为重复。一些报告甚至带有"评论中HTML标签处理不当导致UI操纵"的标题。

感谢阅读!如果你发现了类似的漏洞,或者只是想打个招呼👋,请在评论区告诉我!

你最近发现了什么漏洞?在下方分享你的经验!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计