
wp2shell — CVE-2026-63030 및 CVE-2026-60137에 대한 WordPress 코어 인증 전 RCE 체인 PoC
제 작업이 도움이 되셨다면, **USDT(TRC20)**로 프로젝트를 후원해 주실 수 있습니다: TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN
wp2shell은 WordPress 코어의 사전 인증 취약점 체인을 시연하는 보안 연구용 개념 증명 도구로, 다음과 같은 취약점을 결합합니다:
WP_Query SQL 인젝션이 체인은 이러한 취약점들이 결합되어 인증되지 않은 REST API 요청에서 SQL 인젝션, 권한 상승, 관리자 계정 생성, 그리고 궁극적으로 인증된 원격 코드 실행으로 이어질 수 있는 방법을 보여줍니다.
[!WARNING]
승인된 보안 연구 전용
이 프로젝트는 다음 용도로 사용됩니다:
- 취약점 연구
- 방어적 검증
- 승인된 침투 테스트
- 보안 연구소
- CTF 및 교육 환경
소유하고 있거나 명시적인 서면 승인을 받은 시스템에만 테스트하세요.
승인 없이 제3자 인프라를 대상으로 이 프로젝트를 사용하지 마세요.
wp2shell은 두 취약점 간의 상호 작용을 조사하기 위한 통합 WordPress 코어 보안 연구 도구입니다:```text
CVE-2026-63030
|
v
REST API Batch Route Confusion
|
v
Validation / Dispatch Confusion
|
v
CVE-2026-60137
|
v
WP_Query SQL Injection
|
v
Blind SQL Access
|
v
Application / Object-State Manipulation
|
v
Privilege Escalation
|
v
Administrator Account Creation
|
v
Authenticated Code Execution
PoC는 Python 연구 도구로 구현되며, 타사 Python 패키지를 요구하지 않고 Python 표준 라이브러리를 사용합니다.
---
# 취약점 체인
이 프로젝트는 두 가지 WordPress Core 취약점을 결합합니다.```text
Unauthenticated Request
|
v
+----------------------+
| CVE-2026-63030 |
| REST Batch Route |
| Confusion |
+----------+-----------+
|
v
Validation Confusion
|
v
+----------------------+
| CVE-2026-60137 |
| WP_Query SQLi |
+----------+-----------+
|
v
Blind SQLi
|
v
Application-State Abuse
|
v
Privilege Escalation
|
v
Administrator Access
|
v
Authenticated RCE
```
중요한 보안 속성은 개별 취약점 자체가 아니라
두 취약점 간의 상호작용입니다.
---
# CVE-2026-63030
## REST API 배치 경로 혼동
첫 번째 취약점은 WordPress REST API Batch 엔드포인트를 통한
요청 처리에 영향을 미칩니다.
배치 구현은 요청 위치로 인덱싱된 병렬 구조에
요청 매칭 및 검증 정보를 유지합니다.
형식이 잘못된 하위 요청으로 인해 해당 구조들의
동기화가 어긋날 수 있습니다.
이로 인해 off-by-one 디스패치 조건이 생성되어, 이후의 요청은
다른 요청과 연결된 핸들러 또는 검증 컨텍스트를 사용하여
처리될 수 있습니다.
개념적으로:```text
Request A
|
+-- validation entry
+-- matching entry
|
v
Malformed request
|
+-- internal state becomes desynchronized
|
v
Request B
|
+-- unexpected handler / validation context
```
---
PoC는 경로 혼동이 실제로 도달 가능한지 확인하기 위해 동작 검사를
수행합니다.
---
# CVE-2026-60137
## WP_Query SQL 주입
두 번째 취약점은 `WP_Query` SQL 처리 경로에 영향을 미칩니다.
경로 혼동 프리미티브가 확립되면 공격자가 제어하는 입력이 취약한
쿼리 경로에 도달할 수 있습니다.
PoC는 블라인드 차등 테스트를 통해 결과적인 SQL 주입을 시연합니다.
연구 기능은 다음을 포함합니다:
* 부울-블라인드 확인
* 선택적 시간 기반 확증
* 데이터베이스 핑거프린팅
* 지원되는 스칼라 추출
* WordPress 사용자 데이터 연구
---
# 체인 작동 방식
## 1. REST 배치 경로 혼동
인증되지 않은 요청이 WordPress REST Batch 엔드포인트에 도달합니다.
잘못된 형식의 배치 하위 요청으로 인해 내부 요청 매칭 및 검증
상태가 동기화 해제됩니다.
결과적으로 이후 요청은 의도하지 않은 컨텍스트를 사용하여 처리될 수
있습니다.
---
## 2. SQL 주입
경로 혼동 프리미티브는 두 번째 취약점에 필요한 경로를 제공합니다.
공격자가 제어하는 값이 취약한 `WP_Query` 처리 경로에 도달할 수
있습니다.
이로 인해 블라인드 SQL 주입 프리미티브가 생성됩니다.
---
## 3. 블라인드 SQL 추출
SQL 주입은 부울-블라인드 추출 채널로 사용될 수 있습니다.
PoC에는 데이터베이스 정보 및 지원되는 WordPress 사용자 정보를
조사하는 기능이 포함되어 있습니다.
---
## 4. 애플리케이션 상태 조작
체인은 데이터베이스로 제어되는 결과를 사용하여 WordPress 애플리케이션
객체 및 후속 처리에 영향을 미칩니다.
이는 권한 상승 단계에 필요한 프리미티브를 제공합니다.
---
## 5. 변경셋 상승
체인은 WordPress 변경셋 처리를 사용하여 관리자 실행 컨텍스트를
설정합니다.
위조된 `customize_changeset` 객체가 권한 상승 시퀀스에 참여할 수
있습니다.
---
## 6. 훅 재진입
체인은 애플리케이션 요청 수명 주기를 통해 WordPress 요청 처리에
재진입합니다.
이를 통해 후속 API 처리가 상승된 컨텍스트에서 발생할 수 있습니다.
---
## 7. 관리자 계정 생성
연구 PoC는 사전 인증 관리자 생성 단계를 구현합니다.
이것이 Mode 3이 보안 검증에 유용한 핵심 이유입니다. 웹셸/RCE
단계로 진행하지 않고 권한 상승 영향을 입증하기 때문입니다.
---
## 8. 인증된 코드 실행
Mode 4는 연구 체인을 관리자 생성 너머 인증된 코드 실행 단계로
확장합니다.
이 단계는 격리된 실험실 또는 명시적으로 승인된 평가에서만 사용해야
합니다.
---
# 영향을 받는 버전
## 전체 사전 인증 체인
| WordPress 버전 | 상태 |
| ----------------- | -------------- |
| 6.9.0 – 6.9.4 | **취약** |
| 7.0.0 – 7.0.1 | **취약** |
| 6.9.5 | **수정됨** |
| 7.0.2+ | **수정됨** |
PoC는 문서화된 전체 체인 취약 버전으로 `6.9.0–6.9.4` 및
`7.0.0–7.0.1`을 식별합니다.
## SQL 주입
SQL 주입 구성 요소는 전체 체인과 다른 수정 버전 경계를 가집니다.
연구 구현은 `6.8.6`을 SQL 주입 수정 버전으로 식별합니다.
전체 인증되지 않은 체인은 추가로 취약한 REST Batch 동작에
의존합니다.
프로덕션 결정을 내리기 전에 항상 관련 공식 보안 권고와 비교하여
영향을 받는 버전 및 수정 버전을 확인하십시오.
---
# 전제 조건
PoC는 전체 체인에 대해 다음 조건을 문서화합니다:
* WordPress REST API에 도달 가능
* Redis/Memcached 객체 캐시 없음
* 게시된 게시물이 하나 이상
다른 배포 구성 요소는 재현성에 영향을 미칠 수 있습니다:
* 리버스 프록시
* 웹 애플리케이션 방화벽
* REST API 제한
* 보안 플러그인
* 객체 캐싱
* HTTP 필터링
* 호스팅 구성
버전 범위와 일치하는 WordPress 설치가 모든 환경에서 전체 체인이
작동한다는 것을 자동으로 의미하지는 않습니다.
---
# 기능
`wp2shell`은 다음 연구 기능을 포함하는 대화형 메뉴를
제공합니다:```text
[1] Fingerprint + confirm vulnerability (non-destructive)
[2] Blind SQL extraction (fingerprint / dump users)
[3] Pre-Auth Admin creation
[4] Full RCE chain → admin creation + webshell
[5] Facilitated sink SQLi (WordPress 6.8.x / custom)
[6] Threaded scan over URL list
[7] Transport settings (proxy, TLS, timeout, delay)
[8] Change target URL
[0] Quit
```
---
# 대화형 메뉴
기본 메뉴는 다음 두 가지를 모두 지원하도록 설계되어 있습니다:
* 단일 승인된 WordPress 설치 테스트
* 승인된 WordPress URL 목록 테스트
따라서 이 워크플로우는 개별 연구 대상과
더 큰 규모의 승인된 평가 데이터셋 모두에 사용할 수 있습니다.
---
# 권장 모드 — Mode 3
## 왜 Mode 3인가?
취약점 연구에서는 **웹쉘을 배포하지 않고 보안 영향을
입증하는 것이 목표일 때 Mode 3이 권장 모드
입니다**.
Mode 3은:```text
Pre-Auth Admin Creation
```
PoC는 이 단계를 다음과 같이 설명합니다:```text
Unauthenticated UNION SQLi → new WordPress administrator
```
그리고 전체 webshell/RCE 단계와 명시적으로 구분합니다:```text
No password cracking.
No webshell.
Non-destructive admin only.
```
이로 인해 Mode 3은 추가 코드 실행 단계를 피하면서
취약점 체인이 관리자 수준의 침해에 도달한다는 것을
입증하고자 할 때 특히 유용합니다.
---
# Mode 3 — 사전 인증 관리자 생성
Mode 3을 선택하면 다음이 열립니다:```text
────────────────────────────────────────────────────────────
CREATE ADMIN — Pre-Auth Admin RCE Chain
────────────────────────────────────────────────────────────
⚠ Unauthenticated UNION SQLi → new WordPress administrator.
⚠ No password cracking. No webshell. Non-destructive admin only.
```
그런 다음 PoC는 여러 환경 및 출력 옵션을 요청합니다.
## SQLite```text
→ Target uses SQLite? (WP-SQLite plugin) (y/N) [n]:
```
대상이 PoC에서 지원하는 WordPress SQLite 구성을 사용하는 경우 이를 `y`로 설정합니다.
일반적인 MySQL/MariaDB WordPress 설치의 경우 기본값은 다음과 같습니다:```text
n
```
---
## 자격 증명 검증