
WordPress wp2shell 사전 인증 RCE 체인(CVE-2026-63030 + CVE-2026-60137)에 대한 비침입적 탐지 스캐너입니다. 탐지 전용이며, 악용은 하지 않습니다.
비침습적 탐지 스캐너 — 최신 WordPress 코어 취약점, wp2shell 사전 인증 RCE 체인을 포함합니다.
wp2shell_scanner.py는 WordPress 사이트의 코어 버전을 식별하고 공개적으로 알려진 REST API 표면을 읽은 후, 감지된 버전에 대해 각 추적된 코어 CVE를 독립적으로 분류합니다. 판정은 브랜치 인식 방식입니다. 예를 들어 6.8.x 사이트는 SQL 인젝션 CVE에 노출된 것으로 올바르게 보고되지만, 전체 RCE 체인에는 노출되지 않은 것으로 보고됩니다. 탐지만 수행합니다. 익스플로잇 페이로드는 절대 전송되지 않습니다. 단일 파일, 하나의 의존성(requests), CI 친화적인 종료 코드, 클라이언트에 바로 제공 가능한 HTML/JSON/이메일 보고서를 생성합니다.
⚠️ 승인된 용도로만 사용하세요. 귀하가 소유하거나 명시적으로 (서면으로) 테스트가 승인된 시스템만 스캔하세요. 스캐너는 블루 팀이 트래픽을 식별할 수 있도록
User-Agent를 식별 가능하게 설정하며, 숨기지 않습니다.
wp2shell RCE 체인 = CVE-2026-63030 + CVE-2026-60137 함께 → 기본 설치에서 사전 인증 원격 코드 실행. 스캐너는 두 CVE 모두 감지된 버전에 대해 취약하다고 분류될 때만 체인을 노출됨으로 보고합니다.
스캐너가 올바르게 처리하는 브랜치 미묘함:
6.8.x는 SQL 인젝션(CVE-2026-60137) 만 포함 — RCE 체인은 아님.6.9 브랜치에서 CVE-2026-3906 (Notes)는 6.9.2에서 수정되었지만, wp2shell 체인은 6.9.5까지 닫히지 않습니다. 따라서 6.9.2/6.9.4는 Notes 버그에 대해 패치됨으로 읽히지만 RCE 체인에는 취약한 상태로 남아 있습니다. 스캐너는 해당 브랜치에서 6.9.5 이상만 권장하며, 절대 6.9.4를 권장하지 않습니다.운영상 중요: wp2shell에 대한 기술적 분석과 작동하는 PoC가 이미 공개되었습니다. 버전 탐지는 이제 최소한의 조치입니다. 우선순위는 패치 적용입니다. 업데이트는 취약한 경로를 닫지만 패치 이전에 심어진 백도어는 제거하지 않습니다. 따라서 보고서에는 침해 평가 단계가 포함됩니다.
이는 코어 버전 스캐너입니다. 플러그인 및 테마 CVE — WPScan/Patchstack 카탈로그의 대다수 — 는 실시간으로 선별된 피드와 플러그인별 버전 열거가 필요하므로 의도적으로 범위 외입니다. 해당 영역(최근 WordPress 코어 CVE) 내에서 정밀하고 브랜치별로 정확한 것을 목표로 하며, 상용 취약점 데이터베이스를 복제하지 않습니다.
<meta name="generator">/readme.html<generator> 태그/wp-links-opml.php (OPML)/wp-json/을 읽어 WordPress가 REST 인덱스에 batch/v1 네임스페이스를 광고하는지 확인합니다. 이는 네임스페이스가 등록되었음을 확인하는 것이지, WAF를 통해 엔드포인트에 도달 가능한지 확인하는 것이 아닙니다. 배치 요청이나 페이로드는 전송되지 않습니다.어떤 것도 익스플로잇하지 않습니다. SQL 인젝션 페이로드, 배치 라우트 혼동 요청, 코드 실행 또는 데이터 읽기 시도가 없습니다. 탐지는 버전 기반이며 공개적으로 광고된 API 표면의 수동적 읽기입니다.
pip install requests
# 단일 대상
python3 wp2shell_scanner.py -t https://site.example --authorized
# 대상 목록 (한 줄에 하나, # 주석 허용)
python3 wp2shell_scanner.py -T scope.txt --authorized -o ./reports
# 합성 데이터로 출력 형식 미리보기 — 네트워크 불필요, 인증 불필요
python3 wp2shell_scanner.py --demo -o ./reports
--authorized 플래그는 명시적 인증 게이트입니다. 실제 스캔은 이 플래그 없이는 실행되지 않습니다.
| 코드 | 의미 |
|---|---|
2 | 하나 이상의 대상이 취약 |
1 | 하나 이상의 대상이 불명확 / 오류 |
0 | 깨끗함 (패치됨 / 영향 없음 / WordPress 아님) |
알림 이메일 수신자는 스크립트 상단 근처에 있는 CSSLTD_CONTACT 상수입니다 (기본값 [email protected]). 자체 수신 주소로 편집하세요.
examples/ 디렉터리에는 가상의 취약한 호스트(example.com, WordPress 6.9.1 — 세 추적 CVE 모두에 노출)에 대한 합성 (--demo) 출력이 포함되어 있습니다:
wp2shell_report_example.com.html — 클라이언트에 바로 제공 가능한 HTML 보고서wp2shell_example.com.json — JSON 레코드wp2shell_email_example.com.txt — 초안 알림 이메일이는 보고서 형식을 설명하기 위해 조작된 데이터로 생성된 것입니다. 실제 사이트를 스캔한 결과가 아닙니다.
6.9.5+만 완전히 해결됨 — 6.9.4에는 여전히 wp2shell 체인이 있습니다.)uploads/, wp-config.php, wp-cron, 관리자 계정에 대해 침해 평가를 수행하고, 알려진 정상 코어와 파일 무결성 검사를 실행하세요./wp-json/batch/v1 제한).이 도구는 승인된 보안 테스트 용도로만 사용됩니다. 대상 스캔 권한이 있는지 확인하는 것은 귀하의 책임입니다. 무단 스캔은 불법일 수 있습니다. 저자는 오용에 대한 책임을 지지 않습니다.
| CVE | 취약점 유형 | 접근 권한 | 영향받는 코어 | 수정 버전 |
|---|
| CVE-2026-63030 — wp2shell | CWE-436 — REST 배치 라우트 혼동 → RCE (Critical; CVSS 9.8 WPScan CNA / 7.5 CISA-ADP; GHSA-ff9f-jf42-662q) | 인증 없음 | 6.9.0–6.9.4, 7.0.0–7.0.1 | 6.9.5, 7.0.2 |
| CVE-2026-60137 | CWE-89 — WP_Query author__not_in의 SQL 인젝션 (단독 Moderate, CVSS 5.9; 체인 내 Critical; GHSA-fpp7-x2x2-2mjf) | 인증 없음 | 6.8.0–6.8.5, 6.9.0–6.9.4, 7.0.0–7.0.1 | 6.8.6, 6.9.5, 7.0.2 |
| CVE-2026-3906 | CWE-862 — Notes REST API 권한 누락 (Moderate, CVSS 4.3, GHSA-6x83-fcf5-r65g) | 구독자+ | 6.9.0–6.9.1 | 6.9.2 |
| 플래그 | 의미 |
|---|
-t, --target | 단일 대상 URL 또는 호스트 |
-T, --targets-file | 한 줄에 하나의 대상이 있는 파일 |
--demo | 합성 데이터로 샘플 보고서/이메일 생성 (네트워크 없음) |
-o, --output-dir | 출력 디렉터리 (기본값 ./wp2shell_reports) |
--formats | 쉼표 목록: json,html,email (기본값: 모두) |
--authorized | 인증 게이트 — 실제 스캔에 필요 |
--timeout | HTTP 타임아웃 (초, 기본값 12) |
--delay | 대상 간 지연 (초, 예의 지키기; 기본값 1.0) |
--insecure | TLS 인증서 검증 안 함 |
--quiet | 콘솔 요약 출력 안 함 |
| 판정 | 의미 |
|---|
VULNERABLE | 감지된 버전이 영향 범위 내에 있음 — 즉시 패치 필요 |
PATCHED | 수정된 릴리스에 있음; 추적된 CVE에 노출되지 않음 |
NOT_AFFECTED | 버전이 가장 이른 추적 취약점보다 이전 (< 6.8.0 — CVE-2026-60137) |
UNKNOWN | 버전을 확인할 수 없음, 벡터가 일치하지 않음, 또는 사전 출시 빌드가 발견됨 — 수동 확인 필요 |
NOT_WORDPRESS | WordPress 핑거프린트를 찾을 수 없음 |