【代码审计】UKCMS_v1.1.0 文件上传漏洞分析
0x00 环境准备
ukcms官网:https://www.ukcms.com/
程序源码下载:http://down.ukcms.com/down.php?v=1.1.0
测试网站首页:

0x01 代码分析
1、文件位置: /application/admin/controller/Filemanage.php 第93-208行中:
- private function saveFile($dir = '', $from = '', $module = '', $thumb = 0, $thumbsize = '', $thumbtype = '', $watermark = 1, $sizelimit = -1, $extlimit = '') {
- if (!function_exists("finfo_open")) {
- switch ($from) {
- case 'ueditor':
- return json(['state' => '检测到环境未开启php_fileinfo拓展']);
- default:
- return json([
- 'status' => 0,
- 'info' => '检测到环境未开启php_fileinfo拓展'
- 10. ]);
- 11. }
- 12. }
- 13. // 附件大小限制
- 14. // 附件类型限制
- 15. // 获取附件数据
- 16. // 判断附件是否已存在
- 17. // 判断附件大小是否超过限制
- 18. // 判断附件格式是否符合
- 19. $file_name = $file->getInfo('name');
- 20. $file_ext = strtolower(substr($file_name, strrpos($file_name, '.') + 1));
- 21. $error_msg = '';
- 22. if ($ext_limit == '') {
- 23. $error_msg = '获取文件后缀限制信息失败!';
- 24. }
- 25. try {
- 26. $fileMine = $file->getMime();
- 27. } catch (\Exception $ex) {
- 28. $error_msg = $ex->getMessage();
- 29. }
- 30. if ($fileMine == 'text/x-php' || $fileMine == 'text/html') {
- 31. $error_msg = '禁止上传非法文件!';
- 32. }
- 33. if (!in_array($file_ext, $ext_limit)) {
- 34. $error_msg = '附件类型不正确!';
- 35. }
这段代码中saveFile函数经过一些大小、类型限制,到最后进行判断附件格式是否符合存在问题。注意看红色代码部分,首先获取文件名和后缀名,判断后缀是否为空,然后对文件头MIME_TYPE字段校验,这里客户端可通过抓包伪造MIME_TYPE类型,导致绕过,最后的附件类型限制是客户端参数可控的。
综上,程序在实现上对文件上传类型过滤不严,导致可以被绕过,通过该漏洞上传脚本木马,获取服务器控制权限。
0x02 漏洞利用
A、 如何登陆后台
思路1:通过默认后台入口及默认账号密码进行登录。
程序在安装过程中,自动默认账号密码,管理员要在后台进行更改,很大的几率存在弱口令情况。
后台入口:admin.php
后台默认账户/密码:admin/123456
思路2:通过爆破备份文件路径,获取数据库备份文件。
数据库备份文件格式:\data\db\20180119-214910-1.sql.gz,以时间戳为命名方式,存在被爆破的风险,通过爆破备份文件路径,获取数据库敏感信息。
B、文件上传漏洞利用
1、登录后台—系统参数—参数设置—上传,首先在允许上传的图片后缀添加PHP:

2、此时如果直接上传php文件,还是会被提示“禁止上传非法文件”:

3、如何绕过MIME_TYPE的检测呢?上传一张包含有一句话木马的图片,抓包,修改文件为3.php,然后上传,最后点击确认修改,保存文件到服务器。

4、通过右键查看图片文件路径,访问php文件,执行脚本代码

5、通过菜刀连接,获取网站服务器控制权限。

0x03 修复建议
1、通过白名单限制上传文件后缀
2、禁止上传目录脚本执行权限。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】UKCMS_v1.1.0 文件上传漏洞分析的更多相关文章
- PHPcms v9.6.0 文件上传漏洞
title: PHPcms v9.6.0 文件上传漏洞 date: 2021-4-5 tags: 渗透测试,CVE漏洞复现,文件上传 categories: 渗透测试 CVE漏洞复现 文件上传 PHP ...
- 1.5 webshell文件上传漏洞分析溯源(1~4)
webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ----> ,好吧意料之中 上传1.png ----> 我们查看页面元素 -----> ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- 【代码审计】QYKCMS_v4.3.2 任意文件上传漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】BootCMS v1.1.3 文件上传漏洞分析
0x00 环境准备 BootCMS官网:http://www.kilofox.net 网站源码版本:BootCMS v1.1.3 发布日期:2016年10月17日 程序源码下载:http://w ...
- 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- 【代码审计】XYHCMS V3.5文件上传漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- UEditor编辑器两个版本任意文件上传漏洞分析
0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...
- [转]UEditor编辑器两个版本任意文件上传漏洞分析
0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...
随机推荐
- JQ 获取地址栏参数
var cat_id = getParamValue("cat_id"); if(cat_id == null){ cat_id = 1; } $("#brand_cat ...
- javascript显示年月日时间代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用OAuth Server PHP实现OAuth2服务
在现在的网络服务中,OAuth2.0服务已经很普遍了,无论是facebook或者微博的第三方登录,还是手机APP登录,都有很广泛的应用.它主要的目的如下:如果用户的照片在A网站,他想要在B网站使用A网 ...
- 关于Unity中的特殊文件目录和资源管理(专题四)
编辑器扩展目录: 1: Editor目录 Editor文件夹可以在根目录下,也可以在子目录里,夹就可以; Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用; ...
- C++ STL Maps
Maps定义 --> 个人理解为python的字典 C++ Maps are sorted associative containers the contian unique key/value ...
- matlab中常用的函数
find()函数: 功能:用于返回矩阵中想要的元素的索引值: 用法: index = find(X), 当X为一个矩阵时,返回的index是一个列向量,表示矩阵X中非零值的索引值,这个索引值吧,是按把 ...
- 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...
- CI框架 -- 核心文件 之 Loader.php(加载器)
顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: 加载类库文件:$this->load->library() 加载视图文件:$this->load->view() ...
- 解决 PathVariable annotation was empty on param 0.
今天在写网关关于远程调用Feign的时候报的一个错误,PathVariable注解为空.仔细看了一下代码发现问题出在用@PathVariable注解的时候 @PathVariable Integer ...
- matlabr2015b安装教程
R2015b MATLAB破解版安装教程 MATLAB和Mathematica.Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算.绘制函数和数 ...