
WordPress 코어 비인증 RCE (CVE-2026-63030, CVE-2026-60137)
__ ______ ____ ____ _ _ _____ _ _ \ \ / / _ \___ \/ ___|| | | | ____| | | | \ \ /\ / /| |_) |__) \___ \| |_| | _| | | | | \ V V / | __// __/ ___) | _ | |___| |___| |___ \_/\_/ |_| |_____|____/|_| |_|_____|_____|_____|wp2shell-checker | WordPress Batch API Desync Detector
WordPress Core REST Batch API 사전 인증 RCE용 탐지(detector) 체커
0xjessie21 제작 — Cybersecurity ILCS
| 시그니처 | wp2shell / WP Core REST Batch API Desync |
| 심각도 | 9.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 영향받는 버전 | WordPress 6.9.0-6.9.4 및 7.0.0-7.0.1 |
| 수정 버전 | 6.9.5, 7.0.2 |
| 전제 조건 | 없음 — 인증 불필요, 플러그인 불필요, 기본 구성 |
| 모드 | 비파괴 / 읽기 전용 프로브 |
공인된 내부 VAPT 범위에서 취약한 WordPress 인스턴스를 탐지하는 도구의 스크린샷.

이 도구는 공인된 보안 테스트 및 방어적 검증 목적으로만 사용해야 합니다.
| WordPress 인스턴스는 소유한 경우, 또는 테스트에 대한 명시적인 서면 승인을 받은 경우에만 사용하세요 (예: 승인된 내부 VAPT 범위). | |
이 프로브는 비파괴적으로 설계되었습니다 — 존재하지 않는 카테고리 ID(0)를 대상으로 하며 권한 확인 계층에서 중단되므로 데이터가 생성, 수정 또는 삭제되지 않습니다. | |
| 실제 공격을 시도하기 위해 페이로드를 변경하지 마세요 (예: 카테고리 ID를 실제 값으로 바꾸거나 다른 REST 경로를 지정). 그렇게 하면 이 도구는 탐지기가 아닌 무기화된 익스플로잇이 되며, 이 도구는 이를 위해 만들어진 것이 아니며 지원하지도 않습니다. | |
| 승인된 범위를 벗어난 시스템에 대해 게시, 재배포 또는 실행하지 마세요. 제3자 시스템에 대한 무단 사용은 인도네시아의 ITE법(UU ITE) 및 다른 국가의 유사한 컴퓨터 오용 법률을 위반할 수 있습니다. | |
| 보증 없이 제공됩니다. 작성자 및 관련 조직은 이 도구 사용으로 인한 오용, 손해 또는 법적 결과에 대해 책임을 지지 않습니다. |
이 도구를 사용함으로써 귀하는 귀하의 사용이 관련 법률 및 귀하 조직의 승인 정책을 준수하는지 확인할 책임이 전적으로 귀하에게 있음을 동의하는 것입니다.
WordPress Core의 REST Batch API(/wp-json/batch/v1)는 일괄 하위 요청을 처리하는 동안 세 개의 병렬 배열을 동기화 상태로 유지합니다. 의도적으로 잘못 구성된 하위 요청은 이를 비동기화(desynchronize) 하여 이후의 모든 하위 요청이 잘못된 핸들러와 권한 콜백으로 전달되게 합니다.
이 도구는 조작된 배치 요청 하나를 전송하고 응답 코드만 검사하며, 상태 변경 작업으로 넘어가지 않습니다.
| # | 하위 요청 | 목적 |
|---|---|---|
| 0 | POST http://: | 의도적으로 잘못된 형식 — 인덱스 비동기화 유발 |
| 1 | DELETE /wp/v2/categories/0 | 안전한 센서 — 카테고리 ID 0은 존재하지 않음 |
| 2 | POST /wp/v2/block-renderer/core/paragraph | 누수 탐지에 사용되는 참조 핸들러 |
판정 로직
| 결과 | 판정 |
|---|---|
block_cannot_read | VULNERABLE — block-renderer 핸들러에서 권한 검사가 누출됨 |
rest_term_invalid | PATCHED — categories 핸들러가 정상적으로 응답함 |
| 마커 없음 | INCONCLUSIVE — WAF, API 비활성화 또는 WordPress가 아님 |
또한 이 도구는 응답 헤더에서 수동적 WAF/CDN 핑거프린팅을 수행합니다:
Cloudflare · Sucuri · Akamai · AWS CloudFront · Imperva · Fastly · F5 BIG-IP · Wordfence
# 기본 스캔
./wp2shell_checker.py https://your-site.com
# 한 번에 여러 대상 스캔
./wp2shell_checker.py https://site1.com https://site2.com https://site3.com
# 사용자 지정 타임아웃
./wp2shell_checker.py https://your-site.com --timeout 20
# 전체 원시 요청/응답 표시 (페이로드, 헤더, 본문)
./wp2shell_checker.py https://your-site.com --raw
# 색상/애니메이션 비활성화 (파일 로깅용)
./wp2shell_checker.py https://your-site.com --no-color > scan_report.txt
전체 플래그
| 플래그 | 설명 |
|---|---|
targets | 스캔할 기준 URL 하나 이상 (필수) |
--timeout N | 요청 타임아웃(초) (기본값: 10) |
--no-color | ANSI 색상 및 스캔 애니메이션 비활성화 |
--raw | 전체 원시 요청/응답 페이로드 및 헤더 출력 |
대상이 VULNERABLE로 확인된 경우:
7.0.2(또는 6.9 브랜치의 경우 6.9.5)로 적용하세요. 업데이트가 실제로 적용되었는지 확인하세요./wp-json/batch/v1 및 ?rest_route=/batch/v1을 모두 차단하세요 — 두 형식 모두 차단해야 합니다.| wp2shell.com | 원본 체커 및 권고, Searchlight Cyber |
| Hadrian Security — 기술 분석 | 근본 원인 분석 |
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 — 자세한 내용은 LICENSE 파일을 참조하세요.
Cybersecurity ILCS · 내부 방어용으로 제작됨