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. Android studio 3+版本apk安装失败问题

    studio2.3升级到3.1之后将apk发给别人下载到手机上安装,华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装. 在网上找了一下,发现是studio3.0之后的 ...

  2. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  3. tensorflow的升级与版本管理

    1 查看cuda与cudnn的版本 cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息 cat  /usr/local ...

  4. TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area,

    TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area, https://www.zhihu.com/question/30643044 T/ ...

  5. IT 运营架构杂谈【前言】

    [ 什么是IT 服务 ?]   OGC官方的ITIL 服务定义: 中文定义:实施和管理 IT 服务,满足业务的需要.IT 服务管理由IT 服务提供方通过人员.流程和信息技术的适当组合而进行.   [ ...

  6. Git -- 从远程库克隆

    上次我们讲了先有本地库,后有远程库的时候,如何关联远程库. 现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆GitHub,创建一个新的仓库,名字叫gitskill ...

  7. iOS 模拟器的“调试-位置”总是变成无的问题

    选择项目的“Edit Scheme...” 并且选择“Options”选项卡,更改你喜欢的默认地理位置 你也可以编辑一个gpx文件永久保存坐标,或者在线生成(传送门). 转自:iOS Simulato ...

  8. 多个table 相同col 的 设置相同width

    不同table 中的col 虽然设置了width 相同,但在IE8.9中长度仍不统一.经检查是不同table使用了不同的colspan ,删除colspan全部使用<td></td& ...

  9. 【WP8】ScrollViewer滑动到底触发器(ListBox失效)

    很多时候会有到底加载更多的需求,而ScrollViewer不支持继承,无法继承它进行扩展,只能通过触发器来控制到底的事件(当然,可以通过UserControl去扩展) 思路:定义一个Trigger,自 ...

  10. 性能监控-TP理解

    首先给出Google到的答案: The tp90 is a minimum time under which 90% of requests have been served. tp90 = top ...