每天学习新的漏洞,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"

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

相关推荐
葡萄成熟时 !3 小时前
JAVA 常用API学习笔记
java·笔记·学习
别动我齐刘海5 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
0566467 小时前
agent学习——流式响应与文本切分
网络·python·学习
for_ever_love__7 小时前
python基础语法学习: 面向对象的三大特性
开发语言·python·学习
Canmag 兴隆磁性10 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
PC2005-cloud10 小时前
Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令
笔记·学习·golang
新手unity自用笔记11 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
zyf10441611 小时前
暑期实践日志 Day32:完成第六章字幕添加,推进工作
学习·计算机网络·剪辑·暑期实践·课题任务
小雪崩11 小时前
嵌入式学习 day27:标准IO
linux·c语言·学习
hsjiasb11 小时前
FreeRTOS学习(三十五)——系统架构综合项目
学习·学习笔记·freertos