
wp2shell의 완전한 레드팀(공격 보안) 무기화 변종으로, 승인된 침투 테스트 및 교육 목적으로 제작되었습니다.
WordPress REST 배치 엔드포인트(/wp-json/batch/v1)를 통해 접근 가능한 인증되지 않은 블라인드 SQL 인젝션을 위한 자체 포함 개념 증명(PoC)입니다. 공개된 취약점 메커니즘을 기반으로 독립적으로 구현되었습니다.
공식 권고: WordPress 보안 릴리스 | CVE-2026-63030
저자: J4ck3LSyN
제작진: CFSD, NFK & C4b1NKr3W
참고: 명백한 법적 문제로 인해 관련 무기화된
r00t.py지속성 임플란트와 함께 이 코드를 배포하지 않았습니다. 그것을 얻으려면 x로 DM을 보내주세요.
[!WARNING]
이 코드는 교육 및 연구 목적으로만 "있는 그대로(AS IS)" 제공됩니다. 이 PoC를 운영 시스템, 공유 환경 또는 승인되지 않은 대상에 사용하지 마십시오.
- 이 코드를 실행하거나 호스팅하면 오용 시 안티바이러스 탐지, 보안 모니터링 경고 또는 법적 결과가 발생할 수 있습니다.
- 작성자와 저장소 관리자는 이 코드로 인해 발생하는 손해, 오용 또는 불법 활동에 대해 책임을 지지 않습니다.
- 적절한 승인을 받은 격리된 실습 환경에서만 사용하십시오. 방어적 연구, 취약점 분석 및 블루팀 테스트 전용입니다.
poc.py - 주요 개념 증명 CLI (check, read, shell 모드)val.py - 경량 수동 취약점 검증기 (val.py <target>)MITIGATIONS.md - 종합적인 완화 및 보안 강화 가이드LETHALITY.html - 시각적 기능 치명도 매트릭스 (히트맵 + 킬 체인)LICENSE - MIT 라이선스r00t.py:redacted - 주요 임플란트 오케스트레이터 (모든 것을 연결)modules/ - 포스트 익스플로잇 임플란트 모듈exploit.py - 핵심 익스플로잇 로직 (SQLi + RCE 프리미티브)privesc.py:redacted - 로컬 권한 상승 점검 (DirtyCOW, sudo, capabilities 등)lpe_byond.py:redacted - BYOVD + eBPF 기법을 사용한 고급 LPE (운영자 게이트 적용)recon.py:redacted - 호스트 프로파일링 및 열거persistence.py:redacted - 지속성 메커니즘 (systemd, cron, SSH 키)c2.py:redacted - 암호화된 C2 비콘 (HTTPS + DoH)exfil.py:redacted - 자격 증명 수집 및 데이터 유출stealth.py:redacted - 안티 분석, 샌드박스 탐지 및 난독화| 브랜치 | 영향을 받는 버전 | 수정 버전 |
|---|---|---|
| 6.9.x | 6.9.0 - 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 - 7.0.1 | 7.0.2 |
자세한 내용은 공식 WordPress 보안 릴리스를 참조하세요.
배치 엔드포인트는 하나의 호출에서 여러 하위 요청을 처리하며 각각을 독립적으로 검증하고 권한을 확인합니다. 하위 요청 경로가 wp_parse_url()을 실패하면 검증 배열에는 추가되지만 일치하는 핸들러 배열에는 추가되지 않습니다. 두 배열의 순서가 어긋나게 되고, 이후의 하위 요청이 다른 하위 요청의 핸들러로 디스패치됩니다. 이것이 라우트 혼동입니다.
이 PoC는 해당 프리미티브를 두 번 중첩합니다:
requests 본문을 포함하는 POST /wp/v2/posts 요청이 배치 핸들러 자체로 디스패치됩니다. posts 요청으로 검증되었기 때문에 내부 requests 목록은 배치 스키마에 대해 다시 검사되지 않으므로 내부 하위 요청이 GET을 사용할 수 있습니다 (메서드 허용 목록 우회).author_exclude=...를 포함하는 GET /wp/v2/users 요청이 posts get_items()로 디스패치됩니다. users 컬렉션 스키마에는 author_exclude 매개변수가 없으므로 값은 검증을 통과한 채 그대로 남습니다. posts get_items()는 author_exclude를 WP_Query 쿼리 변수 author__not_in에 매핑하며, 취약한 빌드는 이를 SQL에 원시 문자열로 삽입합니다.최종 결과는 사전 인증 부울(boolean) / 시간 기반 블라인드 SQL 인젝션입니다:
... post_author NOT IN (<value>) ...
0) <sql>-- - 값은 IN() 목록을 닫고 임의의 SQL을 추가합니다.
이 PoC는 fail-closed 방식입니다. 세 가지 런타임 게이트가 우발적이거나 범위를 벗어난 실행을 방지합니다. 모두 modules/exploit.py에서 적용되며, poc.py의 CLI는 이를 단순히 전달만 합니다.
AuthorizationError는 BatchClient._ensure_authorized(), AdminSession._ensure_authorized(), AdminSession._ensure_r00t()에서 발생합니다.BatchClient._count()는 소켓이 열리기 전에 --max-requests를 적용합니다.--r00t는 기능 구분자입니다. 이 플래그 없이 배포된 빌드는 웹셸을 배포하거나 실행할 수 없습니다.shell에 대한 자격 증명 처리: 관리자 사용자 이름/비밀번호는 --user / --password, 또는 환경 변수 / 보안 파일에서 확인됩니다.
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-63030-wp2r00t.git
cd CVE-2026-63030-wp2r00t
python3 -m py_compile modules/exploit.py poc.py # 기본 sanity check
요구 사항: Python 3.11+, 표준 라이브러리만 사용 (pip 의존성 없음).
python3 poc.py <command> <url> [flags]
공통 플래그 (모든 하위 명령):
--authorized Assert you own / are authorized to test <url>. Required to send.
--noop Build/validate payloads without sending (no network contact).
--max-requests N Hard cap on requests to the target.
--rest-route Use /?rest_route=/batch/v1 instead of /wp-json/batch/v1.
--timeout FLOAT Request timeout (default 30).
--proxy URL HTTP(S) proxy.
--insecure Disable TLS certificate verification.
check - 취약점 확인 (비파괴적)read - 블라인드 SQL 추출shell - 인증 후 웹셸 헬퍼 (--r00t 필요)validate - 수동 식별자빠른 참조
전체 명령 문서는 원문의 상세 섹션에서 확인할 수 있습니다 (또는 python3 poc.py --help 실행).
jitter) 및 샘플별 다양한 SLEEP 값은 고정 주기/고정 델타 WAF/NDR 행동 분석을 무력화합니다.포스트 익스플로잇 모듈(
recon,privesc,exfil,persistence,stealth,c2,lpe_byond)과r00t.py는 별도의 임플란트 체인을 구성하며, 네트워크 노출형 PoC의 일부가 아니며 의도적으로 공유 빌드에서 제외됩니다. 이들은 이 문서의 범위를 벗어납니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하세요.
고지 사항: 소유한 시스템이나 명시적으로 테스트 권한이 부여된 시스템에서만 사용하세요. 작성자는 오용에 대해 어떠한 책임도 지지 않습니다.
| 플래그 | 범위 | 부재 시 효과 |
|---|
--authorized | 모든 네트워크 I/O | 전송 전에 AuthorizationError |
--noop | 모든 하위 명령 | 페이로드 생성/출력, 네트워크 접촉 없음 |
--max-requests | BatchClient | 하드 요청 예산 |
--r00t | shell 하위 명령 | 인증 후 RCE 기능 차단됨 |
| 목표 | 명령 |
|---|
| 프로브 페이로드 미리보기 | python3 poc.py check <url> --noop |
| 취약점 확인 | python3 poc.py check <url> --authorized |
| 능동 타이밍 증명 | ... check <url> --authorized --confirm-sqli |
| SQLi 페이로드 미리보기 | python3 poc.py read <url> --noop --query "SELECT @@version" |
| 데이터 추출 | python3 poc.py read <url> --authorized --query "SELECT @@version" |
| 웹셸 아티팩트 미리보기 | python3 poc.py shell <url> --noop --r00t --cmd "id" |
| 배포 + 실행 (인증됨) | python3 poc.py shell <url> --authorized --r00t --user admin --cmd "id" |
| 수동 스캔 | python3 poc.py validate <url> --authorized |