【代码审计】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版本,其它的 ...
随机推荐
- Windows安装Tomcat失败:Failed installing tomcat7 service
今天在Win7下面安装tomcat(解压版),但是安装的时候老是弹出:Failed installing tomcat6 service.猜想是Win7安全权限管理的原因.网上搜了一下果然是这样. 解 ...
- JSP之静态include指令、动态Include指令
(一)使用静态include指令 <%@ page language="java" contentType="text/html; charset=gb2312&q ...
- python的callback函数原理
__getattribute__作用 """ class C(object): a = 'abc' def __getattribute__(self, *args, * ...
- Numpy的array数组和标量之间的运算
矢量化 数组很重要,因为它使你不用编写循环即可对数据执行批量运算.这通常就叫做矢量化(vectorzation) 数组与数组的运算 数组与标量的算术运算
- 查询sql server 表结构
select column_name,data_type from information_schema.columns where table_name = '表名'
- SQL Server CLR 使用 C# 自定义函数
一.简介 Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成.CLR 集成使得现在可以使用 .NET ...
- linux drwxr-xr-x 是什么意思
linux drwxr-xr-x 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行. 第5-7位表示和这个文件属 ...
- HTML5/CSS3实现五彩进度条应用
今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...
- 让小区运营再智能一点,EasyRadius正式向WayOs用户提供到期弹出式提示充值页面
其实一直没向用户提供到期弹出式页面,主要是给VIP群的用户一点优越感,随着这次EasyRadius的更新,海哥就免费向普通easyRadius用户提供这两个模板下载. 有些人会问,什么样的模板.有什么 ...
- MySQL时间戳时间
MySQL中: now():获取当前时间:例:SELECT now(); unix_timestamp():将时间转换为时间戳:例: SELECT unix_timestamp(now());