React2Shell攻防笔记:原理挖掘与价值15万美元的WAF绕过思路
💡
原文中文,约9000字,阅读约需22分钟。
📝
内容提要
2025年12月,React Server Components和Next.js出现严重漏洞React2Shell(CVE-2025-55182)。该漏洞源于数据与业务逻辑混淆,攻击者可伪造Chunk对象并执行任意代码。作者分享了参与Vercel WAF绕过活动的经历,并获得5万美元奖金。最终,React官方修复了该漏洞。
🎯
关键要点
- 2025年12月,React Server Components和Next.js出现严重漏洞React2Shell(CVE-2025-55182)。
- 漏洞源于数据与业务逻辑混淆,攻击者可伪造Chunk对象并执行任意代码。
- 作者分享了参与Vercel WAF绕过活动的经历,并获得5万美元奖金。
- React2Shell漏洞的核心原因是React Flight在解析用户输入时混淆了数据和Chunk对象。
- 攻击者利用Thenable对象的特性,导致JavaScript自动解包,最终执行任意代码。
- React官方在多个PR中修复了该漏洞,使用Symbol作为key以防止恶意Chunk构造。
- 作者通过研究WAF绕过方法,成功利用utf-16编码绕过了Vercel的WAF。
- Vercel在后续更新中加强了对关键字的检测,提升了漏洞利用的难度。
- 作者提出的多重unicode编码方法被Vercel官方采纳,进一步修复了漏洞。
- 利用Multipart数据包的特性,攻击者可以绕过WAF进行漏洞利用。
❓
延伸问答
React2Shell漏洞的主要原因是什么?
React2Shell漏洞的核心原因是React Flight在解析用户输入时混淆了数据和Chunk对象,导致攻击者可以伪造Chunk对象并执行任意代码。
作者是如何获得5万美元奖金的?
作者通过参与Vercel的WAF绕过活动,成功利用utf-16编码绕过了Vercel的WAF,最终获得了5万美元的奖金。
React官方是如何修复React2Shell漏洞的?
React官方通过在多个PR中修复漏洞,使用Symbol作为key来防止恶意Chunk构造,从而解决了该漏洞。
攻击者是如何利用Thenable对象的特性进行攻击的?
攻击者利用Thenable对象的特性,导致JavaScript自动解包,从而执行任意代码。
Vercel在后续更新中做了哪些改进?
Vercel在后续更新中加强了对关键字的检测,提升了漏洞利用的难度,并对'constructor'和'_response'进行了拦截。
React2Shell漏洞的利用需要满足哪些条件?
利用React2Shell漏洞需要发送POST请求,包含不为空的Next-Action头,并且Content-Type为multipart/form-data。
🏷️
标签
➡️