🚨 聊天中HTML处理不当引发的钓鱼攻击
🔎 漏洞发现
在测试在线聊天组件时,我发现该聊天界面接受原始HTML并在客服视图中渲染。这个漏洞在一个面向客户的网站(出于披露考虑已隐去:redacted.com)上可复现。提交的HTML会被存储在聊天记录中,并在客服打开消息时显示为真实的交互式内容。
💡 攻击载荷
我使用了一个最小化的载荷来演示这个问题:
|
|
当这个载荷在聊天中发送时,聊天界面会将其渲染为正常的可点击链接。如果客服人员点击该链接,他们的浏览器将导航到攻击者控制的域名——这为钓鱼攻击、凭据窃取或进一步的社会工程攻击创造了条件。
🧪 概念验证(PoC)
- 访问网站(示例):https://redacted.com/ 并登录
- 等待客服聊天组件出现(右下角)并打开
- 在聊天窗口中发送攻击载荷
- 观察消息在聊天中渲染为可点击链接
- 当客服用户点击链接时,浏览器重定向到外部域名(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操纵"的标题。
感谢阅读!如果你发现了类似的漏洞,或者只是想打个招呼👋,请在评论区告诉我!
你最近发现了什么漏洞?在下方分享你的经验!