当前位置: 首页 > news >正文

Cacti命令执行漏洞分析(CVE-2022-46169)

目录

漏洞描述

环境搭建

漏洞复现

总结


漏洞描述

漏洞名:Cacti 前台命令注入漏洞

漏洞编号:CVE-2022-46169

Cacti是一个服务器监控与管理平台。基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。在其1.2.17-1.2.22版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。

影响版本:1.2.17-1.2.22

漏洞原理 由于remote_agent.php文件存在验证缺陷,未经身份验证的攻击者通过设置HTTP_开头变量的值为 Cacti的服务器主机名来实现身份验证绕过,之后控制get_nfilter_request_var()函数中的检索参数$poller_id,当poller_item设置为POLLER_ACTION_SCRIPT_PHP时,导致proc_open()函数被触发,最终实现在目标系统上任意命令执行。

#漏洞payload
remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`touch+/tmp/success`
X-Forwarded-For:127.0.0.1

环境搭建

https://github.com/vulhub/vulhub/tree/master/cacti/CVE-2022-46169

使用docker-compose up -d搭建即可

访问8080端口,默认密码admin/admin对Cacti进行一系列的安装操作 这个漏洞的利用需要Cacti应用中至少存在一个类似是POLLER_ACTION_SCRIPT_PHP的采集器。所以,我们在Cacti后台首页创建一个新的Grap 安装完成后选择创建图形

然后点击创建即可。

漏洞复现

查看存在漏洞版本的源码

可以看见调用了remote_client_authorized函数进行了一个检测 其中又调用了get_client_addr函数

查看其逻辑

这里实际上就是使用$_SERVER来匹配这些http headers头,如果存在该headers头,就用explode去对数据进行分隔处理,不为空则进入if判断,又检测其是否为IP,进行了一个取反,所以进入了else,对client_addr进行了赋值,使用了break 2跳出了二层循环,返回了值

获取了client_addr后,还会进行一系列处理,判断是否为空,再次检测是不是ip,然后使用gethostbyaddr函数获取到localhost,

调用数据库查询,数据库中默认的hostname就是localhost,所以最终返回true,成功绕过了鉴权

绕过了鉴权,后续会提取参数进入一个switch,这里控制action为polldata,进入poll_for_data

获取local_data_ids,host_id,poller_id

接着就会在数据库中进行查询,将数据处理后switch判断action的值

当action的值为POLLER_ACTION_SCRIPT_PHP时,便可进入执行命令的逻辑

这条数据其实就是刚刚搭建环境时新增的Grap,在真实的渗透场景中,这两个值就需要去爆破

最终就会将数据拼接近proc_open中,这里我们可以用linux执行命令的特性,linux会率先执行中的命令

总结

至此,RCE漏洞CVE-2022-46169的复现就做完了,而且还在原来解题的基础上把回显也做出来了

http://www.lryc.cn/news/600199.html

相关文章:

  • 7.25总结
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思】
  • 开疆智能ModbusTCP转Profient网关连接西门子PLC与川崎机器人配置案例
  • 【PyTorch】图像多分类项目部署
  • 数组相关学习
  • Pandas 处理缺失数据
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(10):ような复习
  • Windows-WSL-Docker端口开放
  • 在 Ansys CFX Pre 中配置 RGP 表的分步指南
  • Haprxy七层代理
  • iOS —— 天气预报仿写总结
  • Zookeeper 3.6.3【详细技术讲解】整
  • GaussDB 数据库架构师修炼(九) 逻辑备份实操
  • 继承接口实现websocke,实现任意路径链接
  • 从0开始学习R语言--Day57--SCAD模型
  • Spring Boot2 静态资源、Rest映射、请求映射源码分析
  • Sklearn 机器学习 数值指标 均方误差MSE
  • 黑马点评常见面试题
  • 通过Deepseek找工作
  • RocketMQ学习系列之——客户端消息确认机制
  • 【AI论文】Franca:用于可扩展视觉表示学习的嵌套套娃聚类
  • 第七章 愿景11 琦琦复盘测试
  • Yolo底层原理学习(V1~V3)(第一篇)
  • Java研学-RabbitMQ(二)
  • C语言————原码 补码 反码 (超绝详细解释)
  • JAVA_FourTEEN_常见算法
  • 笔试——Day18
  • LlamaIndex 和 Elasticsearch Rerankers:无与伦比的简洁
  • Mysql实现高可用(主从、集群)
  • 【运维】ubuntu 安装图形化界面