
Этот эксплойт был создан для эксплуатации XXE (XML External Entity). С его помощью я прочитал бэкенд-код веб-сервиса и нашел конечную точку, где мог использовать gopher для выполнения внутренних запросов к Zabbix, уязвимому к RCE.
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
Этот эксплоит был создан для использования уязвимости XXE (внешняя XML-сущность). С его помощью я прочитал серверный код веб-сервиса и нашёл конечную точку, где можно использовать gopher для выполнения внутренних запросов на Zabbix версии 6.0.27, уязвимой к удалённому выполнению кода.
На этапе разведки я выполнил атаку перебором на внешний веб-сервер, чтобы получить файл docker-compose.yml, который содержал имя контейнера внутренних серверов Zabbix. Используя эту информацию, я отправил POST-запрос к корню веб-приложения через gopher, и веб-сервер вернул host-id и идентификатор сессии пользователя с низкими привилегиями в JSON, закодированном в base64 в cookie.
С помощью этих деталей я адаптировал оригинальный эксплоит для использования уязвимости SQL-инъекции в zabbix-server:10051, чтобы получить идентификатор сессии администратора, а затем создать и выполнить скрипт для достижения удалённого выполнения кода.
Если вам нужно использовать эту уязвимость Zabbix через gopher, вы можете изменить функцию InternalRequest, чтобы выполнить запрос нужным вам способом.
10.0.46.27:5555 в скрипте).Убедитесь, что ваша машина прослушивает указанный порт (5555 в скрипте), чтобы поймать обратную оболочку. Вы можете использовать netcat для этого:
nc -lvnp 5555
Замените IP 10.0.46.27 и порт 5555 в функции CreateScript на ваш собственный IP и желаемый порт для получения обратной оболочки.