每天学习新的漏洞,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 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick3 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee3 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e3 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨3 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq3 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan3 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend3 天前
理论学习:什么是 Coding Agent?
学习
自传.3 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding