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行中:

  1. private function saveFile($dir = '', $from = '', $module = '', $thumb = 0, $thumbsize = '', $thumbtype = '', $watermark = 1, $sizelimit = -1, $extlimit = '') {
  2. if (!function_exists("finfo_open")) {
  3. switch ($from) {
  4. case 'ueditor':
  5. return json(['state' => '检测到环境未开启php_fileinfo拓展']);
  6. default:
  7. return json([
  8. 'status' => 0,
  9. 'info' => '检测到环境未开启php_fileinfo拓展'
  10. 10.                 ]);
  11. 11.         }
  12. 12.     }
  13. 13.     // 附件大小限制
  14. 14.     // 附件类型限制
  15. 15.     // 获取附件数据
  16. 16.     // 判断附件是否已存在
  17. 17.     // 判断附件大小是否超过限制
  18. 18.     // 判断附件格式是否符合
  19. 19.     $file_name = $file->getInfo('name');
  20. 20.     $file_ext = strtolower(substr($file_name, strrpos($file_name, '.') + 1));
  21. 21.     $error_msg = '';
  22. 22.     if ($ext_limit == '') {
  23. 23.         $error_msg = '获取文件后缀限制信息失败!';
  24. 24.     }
  25. 25.     try {
  26. 26.         $fileMine = $file->getMime();
  27. 27.     } catch (\Exception $ex) {
  28. 28.         $error_msg = $ex->getMessage();
  29. 29.     }
  30. 30.     if ($fileMine == 'text/x-php' || $fileMine == 'text/html') {
  31. 31.         $error_msg = '禁止上传非法文件!';
  32. 32.     }
  33. 33.     if (!in_array($file_ext, $ext_limit)) {
  34. 34.         $error_msg = '附件类型不正确!';
  35. 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 文件上传漏洞分析的更多相关文章

  1. PHPcms v9.6.0 文件上传漏洞

    title: PHPcms v9.6.0 文件上传漏洞 date: 2021-4-5 tags: 渗透测试,CVE漏洞复现,文件上传 categories: 渗透测试 CVE漏洞复现 文件上传 PHP ...

  2. 1.5 webshell文件上传漏洞分析溯源(1~4)

    webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中 上传1.png  ---->   我们查看页面元素 -----> ...

  3. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析

      0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...

  4. 【代码审计】QYKCMS_v4.3.2 任意文件上传漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  5. 【代码审计】BootCMS v1.1.3 文件上传漏洞分析

      0x00 环境准备 BootCMS官网:http://www.kilofox.net 网站源码版本:BootCMS v1.1.3  发布日期:2016年10月17日 程序源码下载:http://w ...

  6. 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  7. 【代码审计】XYHCMS V3.5文件上传漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  8. UEditor编辑器两个版本任意文件上传漏洞分析

    0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...

  9. [转]UEditor编辑器两个版本任意文件上传漏洞分析

    0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...

随机推荐

  1. 安卓程序代写 网上程序代写[原]BluetoothClass详解

    一. BluetoothClass简介 1. 继承关系 public final class BluetoothClass extends Object implements Parcelable 该 ...

  2. -26628 loadrunner

    在Vuser脚本编译执行无误情况下,在controller中进行并发操作,并发数设为10,只通过5个,失败的报错信息是:   Action.c(15): Error -26628: HTTP Stat ...

  3. C++ StringBuilder类

    #ifndef __GTL_STRINGBUILDER_H_ #define __GTL_STRINGBUILDER_H_ #include <list> #include <str ...

  4. Should I expose asynchronous wrappers for synchronous methods?

    Lately I've received several questions along the lines of the following, which I typically summarize ...

  5. Android单行本+多渠道脚本工具

    多渠道包的build相信广大android开发者应该很熟悉了,既可以用ant,写一写正则替换然后build出n个apk, 有时后情况会更复杂些,你比如你有一个app,需要build出一些单行本,代码基 ...

  6. 使用 pv 命令监控 linux 命令的执行进度

    如果你是一个 linux 系统管理员,那么毫无疑问你必须花费大量的工作时间在命令行上:安装和卸载软件,监视系统状态,复制.移动.删除文件,查错,等等.很多时候都是你输入一个命令,然后等待很长时间直到执 ...

  7. [转]Android精品开源项目整理

    前言:       无论你是android的初学者,还有是android开发多年的高手,可能都会有很多想法和经验希望与人分享交流,渴望能够接触到更多的实战项目,正所谓所谓与高手论道才能互补所长,与英雄 ...

  8. (弃) Keystone CLI_可选命令详解

    本文详细介绍keystone客户端命令行界面(CLI)keystone的可选子命令.关于keystone客户端命令行工具keystone命令的子命令和选项列表,请参考前文<解读keystone命 ...

  9. interpro 数据库

    interpro 通过整合多个蛋白相关的数据库,提供了一个方便的对蛋白序列进行功能注释的平台,功能注释的内容包括蛋白质家族预测,domain 和 结合位点预测 interoro 在整合多个数据库的同时 ...

  10. IDEA VS 快捷键 大全

    [参考]IntelliJ IDEA 常用 黄金 快捷键  总结 不断更新     一.VS常用快捷键 (01).快速插入foreach.try等循环:Tab + Tab; (02).回到光标前一位置: ...