
wp2shell — WordPress Core의 사전 인증 RCE (CVE-2026-60137 + CVE-2026-63030). author__not_in의 SQL 주입과 배치 라우트 혼동을 연결하여 WP 6.9.0–6.9.4 / 7.0.0–7.0.1에서 인증되지 않은 원격 코드 실행을 달성합니다.
사전 인증을 통한 WordPress 코어 원격 코드 실행.
CVE-2026-60137 (WP_Query의 author__not_in / author_exclude 매개변수의 SQLi)과 CVE-2026-63030 (REST API 배치 경로 혼동)을 연쇄적으로 사용하여 인증 없이 RCE를 수행합니다.
| 범위 | 상태 |
|---|---|
| <= 6.8.5 | 영향을 받지 않음 (배치 혼동 없음) |
| 6.8.0 - 6.8.5 | SQLi만 가능, RCE 불가 |
| 6.9.0 - 6.9.4 | 취약함 |
| 7.0.0 - 7.0.1 | 취약함 |
| 7.0.2+ / 6.9.5+ | 패치됨 |
python3 poc.py -u TARGET_URL
python3 poc.py -u TARGET_URL --sql "SELECT user_pass FROM wp_users LIMIT 1"
python3 poc.py -u TARGET_URL -c "id"
| 인자 | 동작 |
|---|---|
-u TARGET_URL | 취약 여부 확인 (타이밍 프로브) |
-u TARGET_URL --sql "SQL" | 블라인드 SQLi를 통해 스칼라 값 추출 |
-u TARGET_URL -c "CMD" | 전체 RCE 체인 실행 |
/batch/v1)를 악용하여 요청 처리를 비동기화하고 인증을 우회SLEEP() 타이밍 오라클을 통해 author_exclude 매개변수에 주입취약점 확인 → oEmbed 게시물 시드 → 테이블 이름 추출 (블라인드 SQLi)
→ 관리자 ID 추출 (블라인드 SQLi) → 캐시 게시물 ID 추출 (블라인드 SQLi)
→ 배치를 통해 감염된 변경셋 주입 → 관리자 사용자 생성
→ 로그인 → 명령 플러그인 업로드 → 명령 실행 → 정리
## 크레딧
- **CVE-2026-60137** — `author__not_in`의 SQLi: TF1T, dtro, haongo 발견
- **CVE-2026-63030** — 배치 경로 혼동: Adam Kues (Assetnote / Searchlight Cyber) 발견
- PoC 구현: [sergiointel/wp2shell-poc](https://github.com/sergiointel/wp2shell-poc)