Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
WP2Shell-CVE-2026-63030-POC — WP2Shell WordPress 취약점 체인용 PoC 탐지기 및 안전한 검증기: CVE-2026-63030 (REST batch-route 혼동) + CVE-2026-60137 (author__not_in SQL 인젝션). 승인된 보안 테스트에만 사용하세요. | Kitploit
도구/GitHubGitHub/bhanunamikaze/wp2shell-cve-2026-63030-poc
ReconnaissanceVulnerability ScannersExploitationWeb Application ExploitationInformation GatheringWeb SecurityPenetration TestingLearning & Education

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
bhanunamikaze/wp2shell-cve-2026-63030-poc

WP2Shell-CVE-2026-63030-POC

WP2Shell WordPress 취약점 체인용 PoC 탐지기 및 안전한 검증기: CVE-2026-63030 (REST batch-route 혼동) + CVE-2026-60137 (author__not_in SQL 인젝션). 승인된 보안 테스트에만 사용하세요.

저장소 보기웹사이트
112개월 전아직 검토되지 않음

WP2Shell 탐지 및 검증 PoC

License: MIT Python 3.9+ CVE-2026-63030 CVE-2026-60137 Security Research

CVE 적용 범위: CVE-2026-63030 및 CVE-2026-60137 사용 목적: 승인된 보안 테스트, 방어적 검증, 일회용 localhost 실습 환경 전용

WP2Shell은 사전 인증(pre-authentication) REST API 배치 라우트 혼동 버그(CVE-2026-63030)와 WP_Query의 author__not_in SQL 인젝션 프리미티브(CVE-2026-60137)를 결합한 WordPress Core 취약점 체인입니다. 이 저장소는 방어자가 영향을 받는 WordPress 설치를 식별하고, 격리된 실습 환경에서 취약 동작을 확인하며, 조치 결과를 검증할 수 있도록 Python 기반 PoC 스캐너와 안전한 검증기를 제공합니다. 데이터 추출이나 코드 실행은 필요하지 않습니다.

개요

이 프로젝트는 WordPress 설치를 식별하고 WP2Shell WordPress Core 취약점 체인과 관련된 두 가지 취약점 프리미티브를 검증합니다:

  • CVE-2026-63030 — REST API 배치 라우트 혼동
  • CVE-2026-60137 — WP_Query::author__not_in의 불완전한 입력 검증으로, 공격자가 제어하는 입력이 해당 파라미터에 도달할 경우 SQL 인젝션으로 이어질 수 있음

두 조건이 모두 존재하면 인증되지 않은 요청이 WordPress REST API 배치 엔드포인트를 통해 취약한 SQL 구문에 도달할 수 있습니다. 공개 권고에 따르면 이 조합의 영향은 원격 코드 실행으로 이어질 수 있습니다.

이 저장소는 본인이 소유했거나 명시적으로 테스트가 승인된 시스템에서만 사용해야 합니다. 127.0.0.1에 바인딩된 격리된 Docker 또는 가상 머신 실습 환경을 사용하는 것이 좋습니다.


안전 주의사항

현재 소스 파일에는 상태를 변경하는 기능이 포함되어 있습니다. 여기에는 데이터베이스 데이터 추출 시도, 파일 쓰기 시도, 인증 워크플로, 관리자 생성, 플러그인 업로드, 명령 실행이 포함됩니다.

  • WordPress 핑거프린팅
  • 버전 평가
  • 로컬 소스 트리 버전 확인
  • 안전한 라우트 혼동 검증
  • 격리된 실습 환경에서 비파괴적 타이밍 기반 SQL 인젝션 확인
  • 보고, 증거 수집, 조치 검증

취약점 요약

CVE-2026-63030 — REST API 배치 라우트 혼동

영향을 받는 WordPress 릴리스는 다음 내부 배열 간의 정합성을 잃을 수 있습니다:

  • 파싱된 배치 요청
  • 매칭된 REST 라우트 핸들러
  • 검증 결과

잘못된 형식의 배치 멤버가 한 내부 배열에는 수용되지만 다른 배열에는 수용되지 않으면 이후 요청이 잘못된 핸들러와 연결될 수 있습니다. 따라서 요청이 하나의 라우트로 검증되었지만 다른 라우트의 콜백으로 실행될 수 있습니다.

보안 영향:

  • REST 요청/핸들러 역동기화
  • 잘못된 라우트 스키마에 대한 검증
  • 예기치 않은 중첩 배치 실행
  • 사전 인증 상태에서 제한된 코드 경로에 도달 가능
  • CVE-2026-60137과 결합될 경우 SQL 인젝션 및 추가 침해 가능성

CVE-2026-60137 — author__not_in SQL 인젝션

영향을 받는 WP_Query 구현은 SQL NOT IN (...) 조건을 구성하기 전에 author__not_in을 일관되게 정규화하지 않습니다.

이 파라미터는 일반적으로 정수 작성자 ID 목록을 기대합니다. 의도된 REST 스키마 검증을 거치지 않고 스칼라 문자열이 취약한 쿼리 구문에 도달하면 안전하지 않은 SQL 구조가 데이터베이스 쿼리에 포함될 수 있습니다.

보안 영향:

  • 블라인드 SQL 인젝션
  • 불리언 또는 타이밍 기반 데이터베이스 오라클
  • WordPress 데이터베이스 내용 노출 가능성
  • CVE-2026-63030과 연쇄될 경우 영향 증가

영향을 받는 버전

WordPress 브랜치영향수정 버전
6.8.xCVE-2026-60137만 해당: 6.8.0–6.8.56.8.6
6.9.x두 이슈 모두: 6.9.0–6.9.46.9.5
7.0.x두 이슈 모두: 7.0.0–7.0.17.0.2
7.1 사전 릴리스Beta 1 영향Beta 2
6.8 이전이 두 CVE의 영향 없음N/A

WordPress는 2026년 7월 17일에 수정 사항을 공개했고, 심각도 때문에 영향을 받는 설치에 강제 자동 업데이트를 적용했습니다.


취약점 워크플로```text

Unauthenticated client | v WordPress REST batch endpoint | v Malformed batch member creates request/handler misalignment | v Later request is validated against one route but dispatched using another route's handler | v Scalar author_exclude reaches WP_Query as author__not_in | v Unsafe value reaches SQL NOT IN (...) construction | v Blind SQL timing or Boolean oracle | v Potential database compromise | v Potential application-level compromise and RCE

The detector should stop after confirming the route-confusion and SQL-injection primitives. It does not need to extract data or execute commands to establish that an affected installation is vulnerable.

---

## 탐지 워크플로우

### 1단계 — 대상 정규화

이 도구는 다음을 수행합니다:

1. 기본 `http` 또는 `https` 스킴이 없으면 추가합니다.
2. WordPress 설치 경로를 정규화합니다.
3. 지원되지 않는 URL 스킴과 포함된 자격 증명을 거부합니다.
4. 리디렉션, 프록시, TLS 및 타임아웃 정책을 적용합니다.

### 2단계 — WordPress 식별

스캐너는 다음을 확인합니다:

- `wp-content/` 참조.
- `wp-includes/` 참조.
- WordPress 생성기 메타데이터.
- REST API 검색 링크.
- WordPress REST 인덱스 구조.
- `wp/v2` 네임스페이스.
- 선택적 피드 및 `readme.html` 지문.

### 3단계 — 버전 판별

버전 증거는 다음에서 얻을 수 있습니다:

- HTML 생성기 메타데이터.
- 피드 생성기 메타데이터.
- WordPress 핵심 에셋 쿼리 문자열.
- HTTP 생성기 헤더.
- `readme.html`.
- 로컬 `wp-includes/version.php` 파일.

증거는 점수가 매겨지고 조정됩니다. 충돌하는 원격 버전 표시기는 신뢰도를 낮춥니다.

### 4단계 — 배치 라우트 노출 확인

스캐너는 다음을 통해 `/batch/v1`을(를) 발견하려고 시도합니다:```text
/?rest_route=/
/wp-json/

경로는 다음 중 하나를 사용하여 지정할 수 있습니다:```text /?rest_route=/batch/v1 /wp-json/batch/v1

### Phase 5 — 안전한 경로 혼동 프로브

안전한 프로브에는 다음이 포함됩니다:

1. 의도적으로 잘못된 형식의 내부 경로.
2. 유효하지 않은 post ID에 대한 요청과 무해한 중첩 공개 `GET`.
3. 이어지는 `/batch/v1` 요청.

취약한 서버는 유효하지 않은 post 요청이 중첩 배치 요청으로 처리되는 외부 `207 Multi-Status` 응답을 반환합니다.

탐지기는 다음을 보고합니다:```text
route-confusion-observed

다음과 같은 경우를 확인합니다:

  • 예상된 parse_path_failed 마커.
  • 상태 코드 207을 가진 두 번째 외부 응답.
  • 무해한 내부 요청이 실행되었음을 보여주는 중첩된 responses 배열.

6단계 — 시간 기반 SQLi 확인

비파괴적 SQLi 검증기는 상수 Boolean 조건에서만 다른 한 쌍의 요청을 보내야 합니다:```text False control -> no deliberate database delay True test -> deliberate database delay

검증기는 다음을 수행해야 합니다:

- 예상 외부 HTTP `207`을 수락합니다.
- 외부 및 중첩 배치 봉투를 모두 구문 분석합니다.
- 잘못된 요청 마커를 확인합니다.
- SQLi를 포함하는 중첩 요청이 유효한 응답을 반환했는지 확인합니다.
- 여러 true 및 false 샘플을 수집합니다.
- 샘플 순서를 무작위화하거나 인터리브합니다.
- 단일 요청이 아닌 중앙값을 비교합니다.
- 불충분한 측정값을 `inconclusive`로 보고합니다.

true 샘플과 false 샘플 사이의 반복 가능한 차이는 공격자가 제어하는 입력이 SQL 평가에 도달했음을 확인합니다. 데이터베이스 내용을 선택하거나 추출할 필요가 없습니다.

---

## 요구 사항

- Python 3.9 이상.
- 제공된 스크립트에는 타사 Python 패키지가 필요하지 않습니다.
- 승인된 WordPress 설치에 대한 네트워크 액세스.
- 로컬 테스트의 경우:
  - 일회용 WordPress 7.0.1 또는 6.9.4 랩.
  - 데이터베이스 컨테이너 또는 전용 테스트 데이터베이스.
  - `127.0.0.1`에 바인딩된 웹 서비스.
  - 프로덕션 자격 증명 또는 데이터 없음.

Python 확인:```bash
python3 --version

선택적 구문 검증:```bash python3 -m py_compile WP2Shell_CVE-2026-63030_POC.py

---

## 설치

제공된 스크립트의 이름을 예측 가능한 파일명으로 바꾸세요:```bash
mv 'poc(1).py' WP2Shell_CVE-2026-63030_POC.py
chmod +x WP2Shell_CVE-2026-63030_POC.py

전역 도움말 표시:```bash python3 WP2Shell_CVE-2026-63030_POC.py --help

버전 표시:```bash
python3 WP2Shell_CVE-2026-63030_POC.py --version

명령어

이 스크립트는 세 가지 명령어를 정의합니다:```text remote Fingerprint and scan HTTP(S) WordPress targets. local Read the installed WordPress version from a source tree. exploit State-changing proof-of-concept path.

### 현재 빌드 상태

| 명령 | 상태 |
|---|---|
| `local` | 구현됨 |
| `remote` | CLI는 정의되어 있지만, `run_remote()`는 현재 스텁(stub)이며 오류를 반환합니다 |
| `exploit` | 상태를 변경하는 기능이 포함되어 있습니다. 일회용 로컬 랩으로 제한하고 방어적 스캐닝과 분리하십시오 |

소스는 현재 `remote`에 대해 다음을 출력합니다:```text
Remote scanning not fully implemented in this snippet. Use 'local' or 'exploit'.

Restore a complete run_remote() 구현을 완성한 후에 대량 원격 스캔이 기능적으로 동작한다고 공지하세요.


로컬 버전 평가

local 명령은 다음을 읽습니다:```text /wp-includes/version.php

및 `$wp_version`을 추출합니다.

## 기본 사용법```bash
python3 WP2Shell_CVE-2026-63030_POC.py local \
  --wordpress-root /var/www/html

JSON 보고서```bash

python3 WP2Shell_CVE-2026-63030_POC.py local
--wordpress-root /var/www/html
--format json
--output local-result.json

## Docker 기반 WordPress 설치

WordPress 컨테이너 이름이 `wordpress`인 경우, 소스 트리를 호스트에 복사하거나 마운트하고, 컨테이너 내부에서 버전 확인을 실행하십시오:```bash
docker compose exec wordpress php -r \
  'require "/var/www/html/wp-includes/version.php"; echo $wp_version, PHP_EOL;'

compose.yaml을 사용한 취약한 랩 구성

제공된 compose.yaml을 사용하여 127.0.0.1:8080에 바인딩된 일회용 로컬 랩을 실행하세요:```bash docker compose up -d

브라우저의 `http://127.0.0.1:8080`에서 최초 WordPress 설정이 완료되면 다음을 실행할 수 있습니다:```bash
python3 WP2Shell_CVE-2026-63030_POC.py remote \
  --authorized \
  --target http://127.0.0.1:8080 \
  --active-probe \
  --format json

실험실을 중지하고 제거하려면:```bash docker compose down -v

## 로컬 명령 옵션

| 옵션 | 설명 |
|---|---|
| `--wordpress-root PATH` | `wp-includes/version.php`를 포함하는 필수 디렉터리 |
| `-f, --format` | `table`, `json`, `jsonl` 또는 `csv` |
| `-o, --output FILE` | 보고서를 파일에 작성합니다 |
| `--fail-on` | 종료 코드 정책: `never`, `vulnerable` 또는 `unknown` |
도구 다운로드