
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
React Server Components를 사용하는 Next.js 애플리케이션에서 CVE-2025-55182 및 CVE-2025-66478을 탐지하는 명령줄 도구입니다.
취약점 및 탐지 방법론에 대한 기술적 세부 사항은 블로그 게시물을 참조하세요: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
기본적으로 스캐너는 결정적 수학 연산(41*271 = 11111)을 실행하는 RCE 개념 증명(PoC) 페이로드가 포함된 조작된 multipart POST 요청을 전송합니다. 취약한 호스트는 X-Action-Redirect 응답 헤더에 /login?a=11111 형태로 결과를 반환합니다.
스캐너는 기본적으로 루트 경로(/)를 테스트합니다. 사용자 지정 경로를 테스트하려면 --path 또는 --path-file을 사용하세요. 취약하지 않은 경우 동일 호스트 리디렉션(예: /에서 /en/으로)을 따라가 리디렉션 대상을 테스트합니다. 교차 출처 리디렉션은 추적하지 않습니다.
--safe-check 플래그는 대상에서 코드를 실행하지 않고 사이드 채널 지표(특정 오류 다이제스트가 포함된 500 상태 코드)에 의존하는 대체 탐지 방법을 사용합니다. RCE 실행이 바람직하지 않은 경우 이 모드를 사용하세요.
--waf-bypass 플래그는 multipart 요청 본문 앞에 임의의 정크 데이터를 추가합니다. 이는 요청 본문의 첫 부분만 분석하는 WAF 콘텐츠 검사를 우회하는 데 도움이 될 수 있습니다. 기본 크기는 128KB이며 --waf-bypass-size로 구성할 수 있습니다. WAF 우회가 활성화되면 타임아웃은 자동으로 20초로 증가합니다(명시적으로 설정하지 않은 경우).
--vercel-waf-bypass 플래그는 Vercel WAF 보호를 우회하도록 특별히 설계된 대체 페이로드 변형을 사용합니다. 추가 양식 필드가 포함된 다른 multipart 구조를 사용합니다.
--windows 플래그는 Windows에서 실행되는 대상의 경우 페이로드를 Unix 셸(echo $((41*271)))에서 PowerShell(powershell -c "41*271")로 전환합니다.
pip install -r requirements.txt
단일 호스트 스캔:
python3 scanner.py -u https://example.com
호스트 목록 스캔:
python3 scanner.py -l hosts.txt
멀티스레드로 스캔하고 결과 저장:
python3 scanner.py -l hosts.txt -t 20 -o results.json
사용자 지정 헤더로 스캔:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
안전한 사이드 채널 탐지 사용:
python3 scanner.py -u https://example.com --safe-check
Windows 대상 스캔:
python3 scanner.py -u https://example.com --windows
WAF 우회로 스캔:
python3 scanner.py -u https://example.com --waf-bypass
사용자 지정 경로 스캔:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
RCE PoC는 원래 @maple3142 님이 공개했습니다. 작동하는 PoC를 게시해 주신 작업에 정말 감사드립니다.
이 도구는 원래 RCE를 안전하게 탐지하는 방법으로 만들어졌습니다. 이 기능은 "안전 탐지" 모드인 --safe-check를 통해 여전히 사용할 수 있습니다.
결과는 터미널에 출력됩니다. -o를 사용하면 취약한 호스트가 검증을 위한 전체 HTTP 요청 및 응답이 포함된 JSON 파일로 저장됩니다.