
CVE-2025-55182(React2Shell)용 동작하는 개념 증명(PoC) - React Server Components를 통한 Next.js 15.0.0의 인증되지 않은 원격 코드 실행
⚠️ 교육 목적으로만 사용
이 저장소는 교육 및 연구 목적으로만 제작되었습니다. React Server Components(Next.js)의 심각한 취약점을 시연하여 개발자들이 의존성 업데이트의 위험성과 중요성을 이해하도록 돕습니다.
프로덕션 환경이나 소유하지 않은 시스템에 이 코드를 사용하지 마세요.
이 프로젝트는 Next.js 애플리케이션의 React Server Components에 영향을 미치는 원격 코드 실행(RCE) 취약점인 CVE-2025-55182("React2Shell"이라고도 함)를 재현합니다.
multipart/form-data 요청을 보내 React Server Components의 역직렬화 로직을 악용하여 서버에서 임의의 JavaScript 코드를 실행합니다.
app/page.js: 대화형 익스플로잇 대시보드(Interactive Exploit Dashboard) 를 포함합니다. 이 클라이언트 컴포넌트를 사용하면 브라우저에서 직접 RCE 명령을 실행할 수 있습니다.app/actions.js: 표준 Server Action을 포함합니다. 취약점은 이 액션이 실행되기 전 프레임워크의 파싱 로직에 있습니다.exploit.js: 익스플로잇을 프로그래밍 방식으로 시연하는 독립형 Node.js 스크립트입니다.저장소를 클론합니다:
git clone https://github.com/pkrasulia/CVE-2025-55182-NextJS-RCE-PoC.git
cd react-cve-test
(선택 사항) 올바른 Node.js 버전을 사용합니다:
nvm use
의존성을 설치합니다 (취약한 버전이 설치됩니다):
npm ci --legacy-peer-deps
# OR
npm install --force
개발 서버를 시작합니다:
npm run dev
서버는 http://localhost:3000에서 시작됩니다.
http://localhost:3000을 엽니다.whoami, ls -la, cat package.json).터미널에서 익스플로잇 스크립트를 직접 실행할 수 있습니다:
# Basic usage
node exploit.js http://localhost:3000 "whoami"
# Open Calculator (Linux) - use '&' to run in background
node exploit.js http://localhost:3000 "gnome-calculator &"
자신의 프로젝트에서 이 취약점을 수정하려면:
npm install next@latest react@latest react-dom@latest
저자는 이 정보의 오용에 대해 책임지지 않습니다. 이 프로젝트는 보안 연구원과 개발자가 애플리케이션의 보안을 개선하는 데 도움을 주기 위한 것입니다.