Cacti SQL注入漏洞分析(CVE-2023-51448)
Yu9

文章首发于奇安信攻防社区

链接:https://forum.butian.net/share/2845

前言

Cacti提供了一个操作监控和故障管理框架。在1.2.25及更早版本中,可以通过’pollers.php’脚本执行任意SQL代码。授权用户可能能够执行任意SQL代码。易受攻击的组件是’pollers.php’。漏洞的影响-任意SQL代码执行。截至发布时,补丁似乎不存在。

环境搭建

在include下config.php中配置好数据库连接信息

image-20240326175937912

使用小皮面板创建数据库

image-20240326180033945

数据库连接软件连接,导入根目录下cati.sql文件

image-20240326180104855

访问到就ok

image-20240326180138595

漏洞复现

img

漏洞分析

根据漏洞简介,最终在pollers.php文件第427行发现可疑点,很明显的sql拼接

image-20240326162900790

寻找一下poller_host_duplicate方法的调用处,在该文件中只有一处位于form_save方法的321行调用到

image-20240326163127989

继续寻找发现在action参数为save时,form_save方法会被调用到

image-20240326163710695

现在的调用链就很清楚了

1
action="save"-->from_save()-->poller_host_duplicate()-->sql注入

可以看到$host变量的值由 form_save方法$save['dbhost']传递,通过form_input_validate(get_nfilter_request_var('dbhost'), 'dbhost', '', true, 3)来获取

image-20240326164148631

image-20240326165609235

get_nfilter_request_var方法用来获取请求中dbhost变量的值

image-20240326172313144

form_input_validate方法中也没有对sql注入的防范,以至于$save['dbhost']就是用户输入得值

image-20240326172203359

总结

关键的两个参数dbhostactiondbhost参数是注入点,action需等于save

由 Hexo 驱动 & 主题 Keep
总字数 50.7k 访客数 访问量