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。

➡️

继续阅读