
CVE-2025-55182에 대한 개념 증명 익스플로잇으로, Next.js Server Actions의 치명적인 RCE 취약점입니다. React Flight 프로토콜의 안전하지 않은 역직렬화를 악용하여 프로토타입 오염 및 샌드박스 우회를 통해 임의 명령을 실행합니다.
Server Actions를 사용하는 Next.js 애플리케이션에 영향을 미치는 치명적인 원격 코드 실행(RCE) 취약점인 React2Shell(CVE-2025-55182)에 대한 개념 증명(PoC) 스크립트입니다.
[!WARNING] 고지 사항: 이 도구는 교육 및 승인된 테스트 목적으로만 사용됩니다. 오용에 대한 책임은 지지 않습니다.
이 스크립트는 React Server Components "Flight" 프로토콜의 안전하지 않은 역직렬화 취약점을 악용합니다. 이를 통해 인증되지 않은 공격자가 서버에서 임의의 JavaScript 코드를 실행하여 부분적인 원격 코드 실행(RCE)을 유발할 수 있습니다.
require(global.require 또는 모듈 생성자를 통해)를 찾는 호환성 검사를 사용하여 최신 Node.js 버전(v14+)에서도 작동하도록 보장합니다.pip install -r requirements.txt
python3 react2shell.py -u <TARGET_URL> [-c <COMMAND>]
| 인자 | 설명 | 기본값 |
|---|---|---|
-u, --url | 필수. 대상 URL (예: http://localhost:3000/). | N/A |
-c, --cmd | 선택 사항. 서버에서 실행할 명령. | id |
사용자 신원 확인:
python3 react2shell.py -u http://127.0.0.1:3000/
디렉터리 내용 나열:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "ls -la"
민감한 파일 읽기:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "cat /etc/passwd"
이 익스플로잇은 React Server Components(RSC)의 Next.js Server Actions 처리 과정에서 발생하는 프로토타입 오염(Prototype Pollution) 및 안전하지 않은 역직렬화(Insecure Deserialization) 체인을 활용합니다.
Next-Action 헤더는 서버에 Server Action을 처리하도록 신호를 보냅니다.then 속성("$1:__proto__:then")을 주입합니다. 이로 인해 서버의 비동기 요청 핸들러가 페이로드를 "Thenable"(Promise 유사 객체)로 취급하도록 속입니다._response 객체를 처리합니다. _prefix 필드는 일반적으로 내부 스트림 버퍼링에 사용되지만, 이를 조작하여 원시 JavaScript를 주입할 수 있습니다.require 함수가 전역 스코프에서 제거되는 경우가 많습니다. 이 스크립트는 process.mainModule 프로토타입 체인을 탐색하여 이를 우회합니다:
var require = global.require || global.process.mainModule.constructor._load;
child_process를 임포트하고 시스템 명령을 실행할 수 있습니다.execSync) 실행되며, 출력은 Error 객체로 던져집니다. 이 오류는 직렬화되어 HTTP 응답 본문을 통해 클라이언트에 반환되므로 명령 출력을 확인할 수 있습니다.이 도구는 Gemini 3 Pro의 도움을 받아 개발되었습니다.