每天学习新的漏洞,react2shell漏洞

前言:

CVE-2025-55182(React2Shell

一年没有挖洞了,居然不知道去年有出现这个未授权就可以rce的漏洞

我一直以为是node.js漏洞,听同学说才知道是react漏洞,

半年多了,按道理来说这个漏洞应该已经修完了

但是我不相信,我想继续挖

正题:

知己知彼方能百战百胜,先了解下漏洞原理

这个和log4j的漏洞有点像,听说的CVE-2025-55182(React2Shell

面试官问

最近很火的react2shell漏洞原理,,如何回答

第一层:一句话概括(考察是否抓到本质)

这是一个位于 React Server Components (RSC) Flight 协议反序列化过程中的原型链污染漏洞,攻击者通过构造恶意引用,最终劫持 JavaScript 的 Function 构造函数实现任意代码执行。


第二层:技术细节(考察对 JavaScript 原型链和 React 内部机制的理解)

2.1 漏洞发生在哪里?

漏洞核心位于 React 服务端用于解析 Flight 协议数据的 reviveModel 函数。这个函数负责把客户端传来的序列化数据(chunks)还原成 JavaScript 对象。

2.2 根本原因是什么?

关键代码如下(简化):

javascript

复制代码
function reviveModel(value) {
    for (const key in value) {
        if (hasOwnProperty.call(value, key)) {  // ⚠️ 问题行
            value[key] = reviveModel(value[key]);
        }
    }
}

问题在于hasOwnProperty.call(value, key) 这个检查是在攻击者可控的对象 value 上执行的。

在 JavaScript 中,所有对象继承自 Object.prototype,包含 hasOwnPropertyconstructor__proto__ 等内置方法。如果攻击者能够覆盖或篡改 value.hasOwnProperty,就能让这个检查形同虚设,从而允许访问原型链上的敏感属性。

2.3 如何从原型链污染走向 RCE?

攻击者通过精心构造多个相互引用的 chunks,实现以下利用链:

步骤 操作 效果
1 制造一个带有 then 属性的对象(Thenable) 让 React 误以为它是一个 Promise
2 通过 $1:__proto__:then 语法沿原型链爬升 获取到 Chunk.prototype.then
3 通过 $1:constructor:constructor 拿到全局 Function 构造函数
4 将恶意代码字符串传入 Function() 在服务器上执行任意 JavaScript

简单说 :Flight 协议的设计允许引用跳转,而 reviveModel 在解析时没有限制原型链访问,导致攻击者可以从一个普通对象一路爬到 Function 构造函数。

明天挖洞这个漏洞,今天先睡觉了

语法

org="China Education and Research Network Center"&&app="next.js" && country="CN"

今天挖到厦门大学的信息泄露,嘻嘻,有实力了

相关推荐
悠哉悠哉愿意2 小时前
【物联网学习笔记】TIM
笔记·单片机·嵌入式硬件·物联网·学习
炽烈小老头3 小时前
【每天学习一点算法 2026/04/17】多数元素
数据结构·学习·算法
2501_916007474 小时前
从零开始学习iOS开发:Xcode环境配置与项目创建完整指南
ide·vscode·学习·ios·个人开发·xcode·敏捷流程
星幻元宇VR4 小时前
VR动感电动车|以沉浸体验推动交通安全科普新方式
人工智能·科技·学习·安全·生活·vr
jiayong234 小时前
第 25 课:给学习笔记页加上搜索、标签筛选和 URL 同步
开发语言·前端·javascript·vue.js·学习
YuanDaima20485 小时前
矩阵基础原理与题目说明
人工智能·笔记·python·学习·线性代数·矩阵
zhangjikuan895 小时前
RunLoop学习记录
学习·macos·cocoa
夜瞬5 小时前
NLP学习笔记08:循环神经网络(RNN)——从基础 RNN 到 LSTM 与 GRU
rnn·学习·自然语言处理
教育知暖意5 小时前
广州编程机构选择指南:入门到进阶实用参考
学习