Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
wp2shell-PoC — CVE-2026-63030 & CVE-2026-60137 RCE 체인 개념 증명 | Kitploit
도구/GitHubGitHub/arvindear/wp2shell-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPost-ExploitationWeb SecurityPenetration TestingLearning & EducationRemote Access ToolPayload Development
GitHubarvindear/wp2shell-poc

wp2shell-PoC

CVE-2026-63030 & CVE-2026-60137 RCE 체인 개념 증명

772919시간 57분 전아직 검토되지 않음
저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

wp2shell-PoC

⚠ 이 도구는 교육 또는 버그 바운티 목적으로만 제작되었습니다. 통제된 환경 외부에서의 무단 사용은 엄격히 금지됩니다.

개요

WordPress Core에 영향을 미치는 wp2shell 취약점 체인에 대한 개념 증명으로, CVE-2026-63030과 CVE-2026-60137을 결합한 것입니다. 이 프로젝트는 REST API Batch 라우트 혼동 취약점과 WP_Query SQL 인젝션 간의 상호작용을 보여주며, 이를 통해 인증 없이 WordPress 전체 장악 및 원격 코드 실행(RCE)에 이르는 경로를 제시합니다.

전체 권고문은 여기에서 확인하세요

작동 방식

wp2shell은 WordPress 코어의 사전 인증 RCE 체인으로, CVE-2026-63030(batch REST 엔드포인트의 라우트 혼동)과 CVE-2026-60137(WP_Query의 SQL 인젝션)을 결합한 것입니다.

라우트 혼동: /wp-json/batch/v1은 위치로 인덱싱된 병렬 $matches 및 $validation 배열을 통해 여러 하위 요청을 처리합니다. 잘못된 경로(예: http://:)를 가진 하위 요청은 continue 문으로 인해 $validation에는 추가되지만 $matches에는 추가되지 않아 배열이 비동기화됩니다. 이후 요청들은 요청을 위한 핸들러 아래에서 디스패치되어 스키마 검증과 권한 검사를 우회합니다.

다음

SQL 인젝션: 두 개의 중첩된 batch 호출이 이를 악용합니다. 외부 batch는 메서드 허용 목록(일반적으로 GET을 차단)을 우회합니다. 내부 batch는 스칼라 author_exclude 문자열을 GET /wp/v2/posts에 전달합니다. 비동기화로 인해 이 문자열이 검증을 통과하고, WP_Query가 정제되지 않은 문자열을 SQL에 직접 보간하여 UNION 기반 블라인드 인젝션을 가능하게 합니다.

캐시 포이즈닝: SQLi는 위조된 WP_Post 객체를 반환하며, WordPress는 이를 메모리에 캐시합니다. 이 가짜 게시물에는 [embed] 숏코드가 포함되어 있어 WordPress가 가짜 참조로부터 실제 oembed_cache 데이터베이스 행을 생성하게 합니다.

Changeset 에스컬레이션: SQLi를 사용하여 공격자는 JSON에 "user_id": 1을 포함한 customize_changeset 게시물을 메모리에 위조합니다. 순환 감지 가젯이 post_content를 덮어쓰지 않고 wp_update_post()를 트리거하여 공격자의 페이로드를 보존합니다. changeset을 적용하면 일시적으로 관리자의 신원을 가정합니다.

훅 재진입: 상태가 parse이고 유형이 request인 조작된 게시물이 parse_request 훅을 발동하여 가정된 관리자 역할로 전체 batch 요청을 재생합니다. 이번에는 POST /wp/v2/users 하위 요청이 성공하여 새로운 관리자 계정을 생성합니다.

코드 실행: 공격자는 생성된 관리자로 로그인하여 악성 플러그인을 업로드해 임의 명령을 실행합니다.

영향을 받는 버전

버전상태
WordPress 6.9.0 – 6.9.4취약
WordPress 7.0.0 – 7.0.1취약
WordPress 6.9.5수정됨
WordPress 7.0.2+수정됨

사용법

이 PoC를 사용하기 위한 유일한 요구 사항은 Python 3.8+입니다.

저장소 디렉터리에서 실행하여 취약점 검사를 수행합니다:

root@kitploit:~
wp2shell.py http://victim.com

검사 모드 (기본값)

단일 취약점 검사를 수행합니다. SQLi 페이로드를 실행하지 않고 라우트 혼동 버그를 감지하는 무해한 batch 마커 프로브를 전송합니다. 취약한 대상은 HTTP 207과 함께 parse_path_failed, block_cannot_read, rest_batch_not_allowed 오류 패턴을 반환합니다.

--confirm-sqli를 사용하면 활성 SQLi 확인 페이로드도 전송합니다. 확인은 먼저 UNION 반사를 시도하고, 실패하면 타이밍 기반 프로브로 대체합니다.

단일 대상 검사 (기본 모드)

root@kitploit:~
wp2shell.py http://target.com

명시적 모드로 검사

root@kitploit:~
Check with explicit mode
wp2shell.py http://target.com --check

SQLi 확인과 함께 검사

root@kitploit:~
wp2shell.py http://target.com --check --confirm-sqli

읽기 모드 - SQL 인젝션을 통한 데이터 추출

사전 인증 SQL 인젝션을 사용하여 데이터베이스에서 데이터를 추출합니다. 기본적으로 --technique auto를 사용하며, 사용 가능한 방법을 다음 순서로 시도합니다:

  • union - UNION을 통해 가짜 WP_Post 행을 위조하고 REST 응답에서 제목을 ||HEX(value)||로 읽어옵니다. 값당 한 번의 요청. 가장 빠름.
  • error - EXTRACTVALUE/UPDATEXML을 사용하여 요청당 약 15바이트를 유출합니다. 대상이 MySQL 오류를 반사할 때(예: WP_DEBUG_DISPLAY 활성화) 작동합니다.
  • blind - 불리언 이진 검색, 문자당 약 8회 요청. X-WP-Total 헤더를 참/거짓 신호로 읽습니다. 데이터가 반사되지 않아도 작동합니다.

--technique union|error|blind로 특정 기법을 강제할 수 있습니다. 이 읽기 경로는 읽기 전용이며 데이터베이스에 쓰지 않습니다.

서버 핑거프린트 (기본 쿼리)

root@kitploit:~
wp2shell.py http://target.com --read

로그인 및 비밀번호 해시 덤프

root@kitploit:~
wp2shell.py http://target.com --read --preset users

사용자 정의 SQL 쿼리

root@kitploit:~
wp2shell.py http://target.com --read --query "SELECT @@version"

블라인드 기법 강제

root@kitploit:~
wp2shell.py http://target.com --read --technique blind --query "SELECT user_login FROM wp_users LIMIT 1"

에러 기반 기법으로 추출

root@kitploit:~
wp2shell.py http://target.com --read --technique error --query "SELECT user_pass FROM wp_users LIMIT 1"

셸 모드

대상 서버에서 명령을 실행합니다. 두 가지 모드로 작동합니다:

자격 증명 사용 (기존 관리자로 로그인하여 플러그인 셸 업로드):

특정 명령 실행

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --cmd id

대화형 셸

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --interactive
자격 증명 없이 (사전 인증 RCE - 전체 SQLi→admin 브리지를 실행하고, 생성된 관리자로 로그인한 후 플러그인 셸 업로드):

단일 명령 실행

root@kitploit:~
wp2shell.py http://target.com --shell --cmd id

대화형 셸

root@kitploit:~
wp2shell.py http://target.com --shell --interactive

플러그인 웹셸은 무작위 경로와 실행당 토큰으로 업로드됩니다. 업로드된 웹셸은 자동으로 제거됩니다. 사전 인증 브리지가 관리자를 생성한 경우, 해당 생성된 계정은 셸 세션이 종료된 후 자동으로 제거됩니다.

모든 플래그 목록:

플래그설명
--check취약점 검사 실행 (다른 모드가 지정되지 않은 경우 기본 모드)
--readSQL 인젝션을 통한 데이터 추출
--shell서버에서 명령 실행
--query읽기 모드를 위한 사용자 정의 SQL 쿼리
--preset미리 정의된 쿼리 프리셋 (users, config, versions)
--techniqueSQLi 추출 기법: union, error, blind 또는 auto (기본값)
--confirm-sqli검사 후 SQLi 확인 페이로드 전송
--cmd셸 모드에서 실행할 명령 (기본값: id)
--interactive, -i대화형 셸 모드
--user인증된 셸을 위한 관리자 사용자 이름
--password인증된 셸을 위한 관리자 비밀번호
--proxyHTTP/HTTPS 프록시 (예: http://127.0.0.1:8080)
--timeout요청 타임아웃(초) (기본값: 30)
--verbose, -v상세 출력

참고 자료:

  1. https://slcyber.io/research-center/exploit-brokers-pay-500000-for-a-wordpress-rce-i-found-one-with-gpt5-6/
  2. https://www.picussecurity.com/resource/blog/cve-2026-63030-and-cve-2026-60137-wp2shell-wordpress-rce-explained

면책 조항

이 도구는 교육 또는 버그 바운티 목적으로만 제작되었습니다. 통제된 환경 외부에서의 무단 사용은 엄격히 금지됩니다.

도구 다운로드