从HTML注入到CSRF:一次漏洞组合拳实战

admin 2026-01-07 02:57:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章记录在某社区评论功能中利用存储型HTML注入+GET型登出接口打出CSRF登出组合拳的完整过程:逆向前端AES+MD5盐签名加密,写脚本在报文中插入含换行符的绕过WAF与前端过滤,最终点击链接即强制用户登出,提升危害评级至中危并给出敏感操作禁用GET的建议 综合评分: 82 文章分类: WEB安全,漏洞分析,渗透测试,实战经验,漏洞POC


cover_image

从HTML注入到CSRF:一次漏洞组合拳实战

原创

Chunibyo

蚁景网络安全

2026年1月5日 17:31 湖南

前言

免责声明:本文仅供安全学习研究,所有测试均在授权环境或自建靶场中进行。严禁用于非法用途,否则后果自负。

HTML注入 + CSRF登出漏洞实战复现

漏洞概述

在某社区平台的评论功能中发现存储型HTML注入漏洞。虽然前端做了输入过滤,且存在WAF防护,但通过逆向前端加密逻辑并构造特殊payload,成功绕过所有防护,注入恶意<a>标签。结合平台存在的GET方式登出接口,实现了点击即登出的CSRF攻击。

先在前端进行注入,发现有waf。

WAF规则存在以下缺陷:

  1. 1. 标签名和<之间有空格可绕过
  2. 2. 属性名大小写敏感
  3. 3. 只检测小写href

构造绕过payload:

<!-- 原始payload -->
<a&nbsp;href="http://***.com">点击</a>
<!-- 绕过payload -->
< a HREF="http://***.com">点击</a >

但经过浏览器解析,< a 不会被识别为标签。此时已经不想手动继续尝试了,准备写脚本看看到底哪些操作能绕过waf。

通过逐步测试,发现WAF检测规则:

| 测试内容 | 结果 | | — | — | | <a> | 拦截 | | <A> | 拦截 | | < a> | 通过 | | <a > | 通过 | | href= | 拦截 | | HREF= | 通过 | | javascript: | 拦截 | | http:// | 通过 |

写脚本过程:

对发表评论进行抓包,当我想模拟请求的时候发现请求体被加密了,这个时候就需要拿出我的逆向功底了

全局搜索sign,打断点发包。

关键加密点:

&nbsp;const encrypted = encryptData(content);
&nbsp;const sign = generateSign(encrypted, timestamp);

content就是我们的评论内容,encrypted就是对我们的评论进行了加密,而sign签名则是将加密后的评论内容加上时间戳进行了二次加密。

进入encryptData函数,清晰明了的看到是AES加密,直接套库复现就行。

而签名函数则是md5加盐。

拿加密之后的值去模拟发包,发现error报错了

原来是没登录

携带登录的参数去测试发现换行符可以绕过WAF且浏览器正常解析! 最终绕过payload

# 使用换行符绕过(注意:前端输入框无法输入换行符,必须通过脚本发包)
payload =&nbsp;'<a\nHREF="/api/logout">点击领取优惠</a>'

脚本发送成功且没有被waf拦截,评论发布后刷新页面,恶意标签被浏览器解析渲染,显示为可点击的超链接,HTML注入成功!

点击之后直接重定向到了登出链接

往回跳一页,一刷新,这个时候就已经登出了,假如用户A正在写文章,同时浏览其他帖子时误点了恶意链接,触发登出。等他切回写作页面点击发布时,才发现session已失效,未保存的内容全部丢失。

用户点击后直接登出,实现CSRF攻击。虽然危害不算特别大,但足以证明漏洞的存在。

关键点

前端输入框里按回车是提交表单,没法输入真正的换行符 \n。所以必须:

  1. 1. 先逆向前端加密逻辑
  2. 2. 用Python脚本构造包含换行符的payload
  3. 3. 自己加密、签名后直接发包

这就是为什么前端过滤 + WAF 都挡不住——攻击者根本不走前端,直接构造请求绕过所有客户端校验。最重要的就是敏感操作(登出、删除、修改)不应使用GET方式,否则容易被CSRF利用。

当时首次提交的时候,是重定向挂马攻击被打回了,第二次结合了敏感操作也是收录了中危一枚。

总结

单个漏洞可能危害有限,但组合起来可能产生更大影响:

  • • HTML注入(低危)+ GET登出(低危)= CSRF攻击(中危)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:蚁景网络安全 Chunibyo《从HTML注入到CSRF:一次漏洞组合拳实战》

评论:0   参与:  0