의도적으로 취약하게 만든 Next.js 애플리케이션으로, React Server Components의 안전하지 않은 역직렬화를 통한 CVE-2025-55182 RCE를 시연합니다. 보안 연구 및 교육을 위한 익스플로잇 스크립트와 스캐너 통합을 포함합니다.
⚠️ 경고: 이 애플리케이션은 교육 및 보안 연구 목적으로만 의도적으로 취약하게 만들어졌습니다. 프로덕션에 배포하거나 인터넷에 노출하지 마십시오.
이는 React Server Components의 치명적인 원격 코드 실행 취약점인 CVE-2025-55182를 시연하는 취약한 Next.js 애플리케이션입니다. 이 애플리케이션은 보안 테스트 및 교육 목적으로 의도적으로 취약하게 설계되었으며, 전문적인 클라우드 호스팅 대시보드처럼 보이도록 디자인되었습니다.
CVE 세부 정보:
curl_id.sh 포함npm install --legacy-peer-deps
npm run dev
애플리케이션은 http://localhost:3000에서 사용할 수 있습니다.
리포지토리에는 CVE-2025-55182를 익스플로잇하기 위한 Nuclei 템플릿 기반의 명령줄 도구인 curl_id.sh가 포함되어 있습니다.
사용법:
# Execute id command (default)
./curl_id.sh -d localhost:3000 -c id
# Execute custom commands
./curl_id.sh -d localhost:3000 -c "whoami"
./curl_id.sh -d localhost:3000 -c "uname -a"
./curl_id.sh -d localhost:3000 -c "ls -la /tmp"
# Test remote domains (if vulnerable)
./curl_id.sh -d vulnapp.com -c id
옵션:
-d, --domain: 대상 도메인/URL (기본값: http://localhost:3000)-c, --command: 실행할 명령어 (기본값: id)git clone https://github.com/assetnote/react2shell-scanner.git
cd react2shell-scanner
pip install -r requirements.txt
python3 scanner.py -u http://localhost:3000
python3 scanner.py -u http://localhost:3000 --safe-check
취약점은 다음과 같은 조작된 multipart POST 요청을 서버로 전송하여 익스플로잇할 수 있습니다:
Next-Action: x 헤더X-Nextjs-Request-Id 헤더X-Nextjs-Html-Request-Id 헤더정확한 페이로드 구조는 react2shell-scanner 리포지토리를 참조하세요.
취약점은 React Server Components의 역직렬화 메커니즘에 존재합니다. Next.js가 서버 액션을 처리할 때 요청 페이로드를 역직렬화합니다. 취약한 버전의 React(19.0.0-19.2.0)는 역직렬화된 데이터를 제대로 검증하거나 정리하지 않아 공격자가 다음을 수행할 수 있습니다:
process.mainModule.require('child_process').execSync()를 통해X-Action-Redirect 응답 헤더에서 명령 출력 검색익스플로잇은 JSON 역직렬화 과정에서 프로토타입 오염 공격을 사용합니다. 페이로드 구조는 다음을 포함합니다:
then 속성_prefix 필드가 있는 _response 객체execSync()를 통해 실행되며 출력을 응답 헤더로 리다이렉트합니다.npm install react@latest react-dom@latest
npm install next@latest
npm audit fix
vuln-app-CVE-2025-55182/
├── app/
│ ├── actions.ts # 취약한 서버 액션
│ ├── layout.tsx # 루트 레이아웃
│ └── page.tsx # 메인 대시보드 페이지
├── node_modules/ # 의존성
├── curl_id.sh # 테스트용 익스플로잇 스크립트
├── package.json # 프로젝트 의존성 (취약한 버전)
├── tsconfig.json # TypeScript 구성
├── next.config.js # Next.js 구성
├── .gitignore # Git 무시 규칙
└── README.md # 이 파일
이 애플리케이션은 오로지 보안 연구 및 교육 목적으로 만들어졌습니다.
작성자와 기여자는 이 코드의 오용에 대해 책임을 지지 않습니다. 컴퓨터 시스템에 대한 무단 접근은 불법이며 형사 처벌을 받을 수 있습니다.
이것은 교육용 리포지토리입니다. 문서를 개선하거나, 더 나은 예제를 추가하거나, 교육적 가치를 높이는 기여를 환영합니다.
이 프로젝트는 교육 목적으로 제공됩니다. 사용에 따른 책임은 본인에게 있습니다.
기억하세요: 이는 취약한 애플리케이션입니다. 보안 연구 및 교육 목적으로 통제된 환경에서만 책임감 있게 사용하십시오.