CVE-2022-46169漏洞复现:Cacti前台未授权命令注入原理与实战

CVE-2022-46169漏洞复现:Cacti监控系统命令注入原理与实战 命令注入是Web应用安全中常见的高危漏洞类型,其原理在于应用程序将未经验证的用户输入直接拼接至系统命令中执行。攻击者通过构造恶意输入,可突破应用边界,在服务器上执行任意命令,从而获取系统权限、窃取数据或进行横向移动。这类漏洞的技术价值在于揭示了输入验证与执行上下文分离的重要性,常出现在网络监控、运维管理类系统中。以Cacti监控系统为例,其CVE-2022-46169漏洞正是由于对HTTP请求头X-Forwarded-For的信任缺失,导致攻击者可在无需身份验证的情况下,通过构造恶意头部实现远程命令执行。该 阅读详情

1. 项目概述

最近在整理内部安全资产时,又回顾了Cacti这个老牌监控系统的几个历史高危漏洞,其中CVE-2022-46169这个前台未授权命令注入漏洞,其利用链的巧妙和危害性都颇具代表性。它不像一些需要复杂交互的漏洞,攻击者只需要构造一个特殊的HTTP请求,就能在未登录的情况下,在服务器上执行任意命令,直接获取系统权限。对于仍在运行受影响版本(1.2.17至1.2.22)的Cacti实例来说,这无异于门户大开。今天,我就从一个安全研究兼运维的角度,带大家完整地走一遍这个漏洞的复现过程。我会详细拆解漏洞的成因、利用条件,并提供一个可操作的、从环境搭建到成功获取 /etc/passwd 文件内容的完整复现指南。无论你是想深入理解漏洞原理的安全研究员,还是负责排查线上风险的运维工程师,这篇文章都能给你提供清晰的路径和实用的排查思路。

2. 漏洞原理深度解析

2.1 Cacti与 remote_agent.php 的功能背景

Cacti是一套基于PHP/MySQL开发的网络流量监测图形分析工具,它通过SNMP协议从网络设备获取数据,并使用RRDtool绘制成直观的图形。在分布式监控场景中,Cacti允许部署“数据收集器”(Data Collector)。这些收集器运行在被监控设备或代理主机上,定期执行数据收集任务,然后将结果回传给中心的Cacti服务器。

remote_agent.php 正是为这种分布式架构设计的。它是一个位于Cacti Web根目录下的脚本,运行在数据收集器上。中心Cacti服务器会向这个脚本发起请求,以触发数据收集任务或获取状态。为了保证通信安全,这个脚本设计了一套客户端IP地址校验机制:它只接受来自预定义IP地址(在Cacti的“Settings” -> “Polling”中配置的“Remote Pollers”)的请求。

2.2 漏洞核心: X-Forwarded-For 头校验逻辑缺陷

漏洞的根源在于 remote_agent.php 中对客户端IP的校验逻辑存在缺陷。我们先来看一下存在漏洞的代码逻辑(基于Cacti 1.2.22版本):

脚本首先会尝试从几个常见的HTTP头中获取客户端的真实IP,优先级顺序通常是: X-Forwarded-For (XFF) > X-Real-IP > $_SERVER[‘REMOTE_ADDR’] 。这么做的本意是为了在反向代理(如Nginx)后的环境中能正确识别原始客户端。

问题出在后续的校验函数 remote_client_authorized() 中。这个函数会将获取到的“客户端IP”与Cacti配置文件中允许的IP列表进行比对。关键在于,当请求来自本地( 127.0.0.1 或 ::1 )时,校验会被 绕过 。这是为了方便本地进程调用。

攻击者利用的正是这一点。他们可以在HTTP请求中手动添加一个 X-Forwarded-For: 127.0.0.1 的请求头。有漏洞的代码会优先采用这个头中的值作为客户端IP。由于这个值是 127.0.0.1 (本地回环地址),IP校验逻辑被成功绕过,攻击者的请求被误认为是合法的本地请求,从而获得了执行后续操作的权限。

注意 :这里有一个常见的误解,认为攻击者需要将请求发送到 127.0.0.1 。实际上并非如此。攻击者仍然是向目标服务器的公网IP和端口发送请求,只是在HTTP头中伪造了IP信息。漏洞在于服务端程序 信任并使用了 这个未经验证的、用户可控的请求头。

2.3 命令注入点: poller_id 参数的处理

绕过IP校验只是第一步,真正的杀伤力在于后续的命令注入。 remote_agent.php 脚本在通过校验后,会根据请求参数执行相应的动作,其中一个是 polldata 。

在 polldata 处理流程中,脚本会使用 proc_open() 函数调用一个外部命令,这个命令的构成中包含了从请求参数中获取的 poller_id 值。关键问题在于,此处的 poller_id 参数在拼接进命令行之前, 没有经过任何有效的过滤或转义 。

攻击者可以构造一个特殊的 poller_id 值,例如 ; id 。当这个值被拼接到系统命令中时,就变成了类似 /usr/bin/php -q /path/to/poller.php --poller-id=; id 这样的形式。在Linux的Shell中,分号 ; 是命令分隔符,这意味着 poller.php 命令执行后,紧接着会执行

Cacti远程命令执行漏洞CVE-2022-46169原理与复现分析 远程命令执行(RCE)漏洞是Web应用安全中的高危风险,它允许攻击者在目标服务器上执行任意系统命令,从而完全控制系统。这类漏洞的原理通常源于应用程序对用户输入的处理不当,例如未经过滤或转义就将输入拼接至系统命令中。在监控系统这类需要执行外部脚本采集数据的场景中,此类风险尤为突出。Cacti作为一款广泛使用的网络流量绘图工具,其`remote_agent.php`文件因身份验证逻辑缺陷,允许攻击者通过伪造`X-Forwarded-For`请求头绕过IP检查,进而利用`polldata`动作的参数注入实现未授权 阅读详情

相关推荐

Cacti CVE-2022-46169漏洞深度剖析:认证绕过与命令注入实战复现

在Web应用安全领域,认证绕过和命令注入是两类常见且危害严重的安全漏洞。认证绕过通常源于对客户端输入(如HTTP头部)的过度信任,攻击者通过伪造X-Forwarded-For等字段,可绕过基于IP的访问控制。命令注入则发生在应用将未经验证的用户输入直接拼接至系统命令中,攻击者通过注入Shell元字符(如分号、反引号)即可执行任意系统命令。这两类漏洞的结合,使得攻击者能在无需凭证的情况下,直接获取服务器控制权,对网络监控、运维管理等系统构成极大威胁。本文以经典案例Cacti CVE-2022-46169为样本

weixin_32736961的博客 265

Cacti CVE-2022-46169漏洞剖析:从反序列化到RCE的攻防实战

在Web应用安全领域,反序列化漏洞因其危害性高、利用链复杂而备受关注。其原理在于应用程序将用户可控的序列化数据还原为对象时,若未严格校验,可能触发对象中的魔术方法(如__destruct、__wakeup),进而执行恶意代码。这类漏洞的技术价值在于它往往能绕过常规输入过滤,直接实现远程代码执行(RCE),对系统造成致命威胁,常见于PHP、Java等大量使用序列化功能的框架中。聚焦于运维监控场景,Cacti作为广泛使用的网络流量图形分析工具,其CVE-2022-46169漏洞便是经典案例。该漏洞源于remot

weixin_34166847的博客 422

Cacti 前台命令注入漏洞(CVE-2022-46169) vulhub漏洞复现

在其1.2.17-1.2.22版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。的采集器,接下来创建一个新的图形,选择Device - Uptime”,点击创建。1.打开攻击机kali:192.168.126.130。靶机ubuntu:192.168.126.128。漏洞的利用需要Cacti应用中至少存在一个类似是。攻击机kali:192.168.126.130。账号密码为admin/admin。进入后一直点下一步进行初始化。

qq_53003652的博客 1314

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

Cacti项目是一个开源平台,可为用户提供强大且可扩展的操作监控和故障管理框架。在1.2.22版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。漏洞编号:CVE-2022-46169,漏洞等级:严重。

0xSec 4870

适用于新手的Android天气预报Demo(大学作业)

本天气预报Demo是在学习Android基本课程的基础上,完成老师布置的Android开发项目作业为目的写的一个自我感觉还不错,值得学习的小项目,上传上来,方便学习和后期的知识回顾;

Android几个初学者的小程序

Android几个初学者的小程序 简单的几个小程序 有详细的步骤

一些简单的Android程序,适合初学者参考

完全由自己做的Android简易小程序,内附PDF版全套Android基础教程,很适合初学者学习参考!欢迎高手赐教!

EEG | CHB-MIT癫痫数据集CNN分类实战(一)

CHB-MIT癫痫数据集CNN分类实战

Always learn from the best. 1万+

Android定位权限全解析:从基础配置到后台持续定位的完整解决方案

本文全面解析Android定位权限体系,从基础配置到后台持续定位的完整解决方案。涵盖LocationManager和FusedLocationProviderClient等主流API的对比选型,详细讲解动态权限申请、精确定位与模糊定位的智能切换,以及Android 10+的后台定位适配策略。帮助开发者构建兼顾精准度与电量友好的定位方案,适用于导航、运动轨迹记录等多种场景。

weixin_29310605的博客 610

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1071

【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)

【虚幻引擎UE】可编辑动态样条线轨迹及AI跟随路径移动

灵境引路人 6227

Nature、science、cell旗下刊物

Nature\science\cell子刊说明

计算机视觉 5606

基于Harness Engineering构建AI Agent的全自动化CI_CD流水线

AI Agent的CI/CD是指对Agent的全生命周期资产(代码、Prompt、RAG知识库、模型权重、工具配置)进行持续集成、持续测试、持续发布和持续观测的自动化流程,核心目标是在保障发布质量的前提下,最大化提升Agent的迭代效率。

AI云原生与云计算技术学院 625

GraphRAG深度解析:架构设计与实战案例

生成模块结合检索到的图数据和用户输入的查询,生成高质量的文本输出。通过结合图数据库中的知识,模型可以更准确地回答用户的问题,提供更优质的客户服务。通过分析用户的行为和偏好,结合图数据库中的知识,模型可以为用户提供个性化的推荐。:通过图数据库存储和检索结构化的知识,为语言模型提供丰富的背景信息,提升生成内容的质量和准确性。:选择合适的图数据库,如Neo4j、OrientDB等,以支持高效的图数据存储和检索。:利用图数据库的高效检索能力,快速找到与用户查询最相关的图元素,提高系统的响应速度。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1593

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 907

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: Tomcat高危漏洞CVE-2025-24813深度剖析与修复实战
下一篇: 机器学习人话指南:用生活经验理解数据、模型与预测
lvwenwenjava
博客等级 码龄15年 53粉丝 726原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值