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

一次php环境下SQL注入漏洞分析

前言

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

现在的调用链就很清楚了

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

  • 发表于 2024-04-03 09:00:01
  • 阅读 ( 15012 )
  • 分类:漏洞分析

3 条评论

RCE
CVE 编号是不是不对? https://avd.aliyun.com/detail?id=AVD-2023-51448
RCE 回复 RCE
刚开始那会儿看不一致 可能后来阿里云修正了
Yu9 回复 RCE
师傅,和你发的这个一样哈!
请先 登录 后评论
请先 登录 后评论
Yu9
Yu9

9 篇文章

站长统计