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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-55182-React2Shell-Async-Scanner — CVE-2025-55182 / CVE-2025-66478용 비동기 RCE 스캐너 — prototype-pollution → React Server Actions를 통한 코드 실행. | Kitploit
도구/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
ReconnaissanceVulnerability ScannersDynamic Analysis (Sandboxing)Code AnalysisExploitationWeb Application ExploitationInformation GatheringCTFPenetration Testing

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Learning & Education
Payload Development
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

CVE-2025-55182 / CVE-2025-66478용 비동기 RCE 스캐너 — prototype-pollution → React Server Actions를 통한 코드 실행.

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

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - 비동기 RCE 스캐너

Python CVE CVE License Author Visitors

React Server Actions를 통한 프로토타입 오염 → 원격 코드 실행

비동기, 버전 우선, 출력 기반 카나리 탐지 - 맹목적 추측 없음


[!WARNING] 승인된 보안 연구 및 침투 테스트 전용입니다. 명시적인 서면 허가 없이 시스템을 스캔하는 것은 불법입니다. 저자는 이 도구의 오용에 대해 어떠한 책임도 지지 않습니다.


목차

  • 취약점 개요
  • 영향을 받는 버전
  • 탐지 작동 방식
  • 설치
  • 사용법
  • 옵션 참조
  • 출력 및 판정
  • 브라우저 모드
  • 버전 탐지 파이프라인

취약점 개요

React Server Actions는 작업(action) 데이터를 multipart form data로 서버 측 실행 컨텍스트에 직접 전달합니다. 영향을 받는 react-server-dom-webpack 버전에서 프로토타입 오염 검증(sanitisation)이 불충분하기 때문에 공격자는 다음을 수행할 수 있습니다:

  1. Object.prototype을 오염시키는 조작된 multipart 페이로드를 주입합니다
  2. 내부 응답 객체에서 _response._prefix를 덮어씁니다
  3. 다음 코드를 통해 서버가 임의의 셸 명령을 실행하도록 강제합니다:
    root@kitploit:~
    process.mainModule.require('child_process').execSync(cmd)
    

이로 인해 영향을 받는 React 버전에서 React Server Actions를 사용하는 모든 공개적으로 액세스 가능한 Next.js 애플리케이션에서 **인증 없는 원격 코드 실행(RCE)**이 가능해집니다.

CVE-2025-55182 - 광범위(Broad): React 19 패키지(react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack)에 영향
CVE-2025-66478 - 엄격(Strict): / Server Action 엔드포인트를 통한 Next.js 전용 공격 경로


영향을 받는 버전


탐지 작동 방식

이 스캐너는 출력 기반 카나리 검증을 사용합니다 - 오탐(false positive) 없이 실제 코드 실행을 확인하는 가장 신뢰할 수 있는 방법입니다:

root@kitploit:~
1.  POST /  with Next-Action header + multipart prototype-pollution payload
2.  Payload executes:  echo <random_canary>
3.  Vulnerable server throws NEXT_REDIRECT with base64(canary) in the URL
4.  Response header:   X-Action-Redirect: /login?a=<base64(canary)>
5.  Scanner decodes base64 → matches canary → RCE confirmed ✓

allow_redirects=False가 중요합니다 - 확인 결과는 리디렉션 대상이 아닌 헤더에 있습니다.


설치

root@kitploit:~
git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# Required only if using --browser mode for improved version detection:
playwright install chromium
playwright install-deps chromium

요구 사항: Python 3.10+


사용법

CVE-2025-55182 스캐너 - 광범위(React + Next.js)

root@kitploit:~
# Single target
python3 CVE-2025-55182_scanner.py -u https://target.com

# Scan a list of URLs
python3 CVE-2025-55182_scanner.py -f urls.txt

# Quiet mode - only print RCE / Vulnerable results
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# Browser mode - headless Chromium for accurate version detection
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# Full options - recommended for large-scale scanning
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

옵션 참조

CVE-2025-55182 스캐너


출력 및 판정

스캔된 각 대상에는 다음 판정 중 하나가 할당됩니다:

출력 파일(outputs/ 폴더에 저장되며 자동 생성됨):

  • outputs/vuln.txt — RCE 및 VULNERABLE 결과(실행할 때마다 추가됨)
  • outputs/unknown.txt — 버전이 Unknown인 대상; 정확한 버전 탐지를 위해 -b로 재시도하세요

브라우저 모드

왜 90% 이상의 사이트에서 버전이 unknown으로 표시될까요?

App Router 아키텍처를 사용하는 최신 Next.js 13+는 프레임워크 버전을 정적 HTML에 절대 포함하지 않습니다. 버전은 실제 브라우저 컨텍스트에서 JavaScript가 실행된 후에만 window.next.version에 존재합니다.

--browser 없이:

  • 버전 탐지는 HTTP 헤더, __NEXT_DATA__, 인라인 스크립트, 해시된 청크 파일에 의존합니다
  • App Router 사이트는 거의 항상 unknown을 반환합니다 - 버전 기반 필터링이 우회됩니다

--browser(-b) 사용 시:

  • Playwright가 헤드리스 Chromium을 실행합니다
  • 페이지 JavaScript가 완전히 실행됩니다
  • 스캐너가 라이브 DOM에서 window.next.version을 직접 읽습니다
  • 최신 Next.js 사이트에서 버전 정확도가 ~10% → 약 100%로 향상됩니다
root@kitploit:~
# Recommended with browser mode - reduce concurrency (browser pages are resource-heavy)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3

버전 탐지 파이프라인

스캐너는 최대 7단계를 실행하며 버전이 발견되는 즉시 중지됩니다:

root@kitploit:~
Stage 1 │ HTTP Response Headers
        │  X-Powered-By: Next.js X.Y.Z
        │  x-nextjs-*, x-next-version

Stage 2 │ Inline <script> Blocks (per-block scan)
        │  window.next = { version: "X.Y.Z", ... }
        │  version:"X.Y.Z", router: ...      ← minified bundle adjacent-key pattern
        │  "nextVersion":"X.Y.Z"
        │  Next.js vX.Y.Z                    ← plain text in meta / HTML comments
        │  __NEXT_VERSION__ = "X.Y.Z"

Stage 3 │ __NEXT_DATA__ JSON Blob
        │  Pages Router only - "version":"X.Y.Z" safe in this context

Stage 4 │ Hashed Chunk URLs (extracted from <script src>)
        │  /_next/static/chunks/*, /_next/static/app/*, /_next/static/runtime/*
        │  Fetches up to 12 real bundle files, scans for version strings

Stage 5 │ Fixed-name Fallback Chunks
        │  main.js, framework.js, webpack.js, _app.js, pages/_app.js

Stage 6 │ /package.json endpoint
        │  Dev mode / misconfigured servers expose this directly

Stage 7 │ Playwright Headless Browser  [--browser / -b only]
        │  Evaluates window.next.version after full JS execution
        │  Only triggered when stages 1–6 return "unknown"

면책 조항

이 도구는 교육 및 승인된 보안 연구 목적으로만 게시되었습니다.
저자 InferiorAK는 오용으로 인한 어떠한 손해에도 책임을 지지 않습니다.
소유하지 않은 시스템을 테스트하기 전에 항상 서면 허가를 받으십시오.


InferiorAK 제작


내 링크

Github Facebook Messenger Twitter YouTube

도구 다운로드
구성 요소취약 버전패치 버전
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.x14.3.0-canary.77+ canary 빌드만 해당모든 안정적인 14.x - 영향 없음
Next.js 13.x-영향 없음
플래그긴 형식기본값설명
-u--url-단일 대상 URL
-f--file-한 줄에 하나의 URL이 포함된 파일
-o--outputoutputs/vuln.txt취약한 대상에 대한 출력 파일
-U--unknown-outputoutputs/unknown.txt버전을 알 수 없는 대상에 대한 출력 파일
-c--concurrency5동시 HTTP 연결 수
-t--timeout15요청당 타임아웃(초)
-q--quietoffRCE / VULNERABLE 행만 출력
-b--browseroffPlaywright 헤드리스 Chromium 버전 탐지 폴백
판정색상의미
RCE🔴 빨강X-Action-Redirect에서 카나리 확인됨 - 입증된 원격 코드 실행
VULNERABLE🟠 주황버전이 취약 범위에 있음; RCE 페이로드가 반사되지 않음(WAF / 패치된 구성 / 잘못된 엔드포인트)
Unknown🟡 노랑Next.js는 확인되었지만 버전을 감지할 수 없음 - 그래도 RCE 시도됨; 브라우저 모드 재시도를 위해 outputs/unknown.txt에 저장됨
Not Vulnerable🟢 초록버전이 패치된 것으로 확인되었거나 RCE가 명시적으로 안전을 반환함
Skipped⚪ 흰색패치 확인된 버전 또는 Next.js가 아닌 사이트 - PoC 시도 안 함
Error⚪ 흰색호스트에 연결할 수 없거나 연결 실패