0x00 环境准备

BootCMS官网:http://www.kilofox.net

网站源码版本:BootCMS v1.1.3  发布日期:2016年10月17日

程序源码下载:http://www.kilofox.net/download-v1-1-3

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/application/classes/controller/manage.php 第2082-2134行:

  1. public function action_create_media()
  2. {
  3. if ($this->request->method() == 'POST')
  4. {
  5. $output = new stdClass();
  6. $output->status = 0;
  7. $output->title = '操作失败';
  8. $output->content = '您没有足够的权限进行此项操作。';
  9. $this->accessLevel = Admin::minimumLevel('create_media');
  10. 10.         if ($this->user->role_id == $this->accessLevel)
  11. 11.         {
  12. 12.             $groupId = (int) $this->request->post('gid');
  13. 13.             $group = Model::factory('media_group')->load($groupId);
  14. 14.             if (!$group->id)
  15. 15.             {
  16. 16.                 $output->status = 2;
  17. 17.                 $output->title = '操作失败';
  18. 18.                 $output->content = '请选择媒体分组。';
  19. 19.                 exit(json_encode($output));
  20. 20.             }
  21. 21.             if (isset($_FILES['qqfile']) && $_FILES['qqfile']['name'])
  22. 22.             {
  23. 23.                 $file = Validation::factory($_FILES);
  24. 24.                 $file->rule('qqfile', 'Upload::not_empty');
  25. 25.                 $file->rule('qqfile', 'Upload::valid');
  26. 26.                 $file->rule('qqfile', 'Upload::image');
  27. 27.                 $file->rule('qqfile', 'Upload::size', array(':value', '2M'));
  28. 28.                 if (!$file->check())
  29. 29.                 {
  30. 30.                     $output->status = 3;
  31. 31.                     $output->title = '无效的文件';
  32. 32.                     $output->content = '这个文件是无效的。';
  33. 33.                     exit(json_encode($output));
  34. 34.                 }
  35. 35.                 $extension = Functions::nameEnd($file['qqfile']['name'], '.');
  36. 36.                 $fileName = date('ymdHis') . mt_rand(10, 99) . $extension;
  37. 37.                 $directory = getcwd() . '/assets/uploads/' . $group->slug;
  38. 38.                 $filePath = $directory . DIRECTORY_SEPARATOR . $fileName;
  39. 39.                 if (!file_exists($filePath))
  40. 40.                 {
  41. 41.                     $filePath = Upload::save($file['qqfile'], $fileName, $directory);
  42. 42.                 }
  43. 43.                 else
  44. 44.                 {
  45. 45.                     $filePath = Upload::save($file['qqfile'], NULL, $directory);
  46. 46.                 }
  47. 47.                 if ($filePath === false)
  48. 48.                 {
  49. 49.                     $output->status = 4;
  50. 50.                     $output->title = '文件上传失败';
  51. 51.                     $output->content = '无法保存上传的文件!';
  52. 52.                     exit(json_encode($output));
  53. 53.                 }

这段代码中,首先进行权限验证,然后获取qqfile参数,将文件上传到服务器,最后进行调整生成缩略图,注意看红色代码部分,并没有对文件类型进行过滤,可以构造脚本文件上传到服务器,导致程序在实现上存在文件上传漏洞,攻击者可以通过上传脚本木马,控制服务器权限。

0x02 漏洞利用

1、登录网站后台,在媒体—媒体库—添加新媒体—上传图片木马—抓包修改为PHP后缀—成功上传:

2、程序生成缩略图过程报错,直接爆出上传后脚本木马文件的物理路径,通过URL访问:

3、通过菜刀连接,成功控制网站服务器

0x03 修复建议

1、通过白名单限制上传文件后缀

2、禁止上传目录脚本执行权限。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】BootCMS v1.1.3 文件上传漏洞分析的更多相关文章

  1. 【代码审计】UKCMS_v1.1.0 文件上传漏洞分析

      0x00 环境准备 ukcms官网:https://www.ukcms.com/ 程序源码下载:http://down.ukcms.com/down.php?v=1.1.0 测试网站首页: 0x0 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 关于finecms v5 会员头像 任意文件上传漏洞分析

    看到我私藏的一个洞被别人提交到补天拿奖金,所以我干脆在社区这里分享,给大家学习下 本文原创作者:常威,本文属i春秋原创奖励计划,未经许可禁止转载! 1.定位功能 下载源码在本地搭建起来后,正常登陆了用 ...

随机推荐

  1. SQLITE WITH ENTITY FRAMEWORK CODE FIRST AND MIGRATION

    Last month I’ve a chance to develop an app using Sqlite and Entity Framework Code First. Before I st ...

  2. JAVA内部线程1

    在做一个RuntimeException的异常验证的时候,发现即便是JVM的main线程遇到了此类异常,JVM也不一定进行退出,查阅了相关资料:                线   程        ...

  3. 机器学习 demo分西瓜

    周老师的书,对神经网络写了一个小的Demo 是最简单的神经网络,只有一层的隐藏层. 这次练习依旧是对西瓜的好坏进行预测. 主要分了以下几个步骤 1.数据预处理 对西瓜的不同特性进行数学编码表示(0~1 ...

  4. 安装GYP(Generate Your Projects)

    GYP(Generate Your Projects)是由 Chromium 团队开发的跨平台自动化项目构建工具,Chromium 便是通过 GYP 进行项目构建管理. 主页 :http://code ...

  5. 101 个 MySQL 的调节和优化的提示

    英文原文:101 Tips to MySQL Tuning and Optimization MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它 ...

  6. 3ds Max 中的导航控件ViewCube入门介绍

    介绍 ViewCube 3D导航控件提供当前方向的视觉反馈,让用户可以调整视图方向以及在标准视图与等距视图间进行切换. 软件环境:3d Max2015 第一步.启动3d Max软件,打开场景文件 Vi ...

  7. 第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用

    第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用 xpath表达式 //x 表示向下查找n层指定标签,如://div 表示查找所有div标签 /x 表示向下查找一层指定的标签 ...

  8. MyBatis分页

    搞清楚什么是分页(pagination) 例如,在数据库的某个表里有1000条数据,我们每次只显示100条数据,在第1页显示第0到第99条,在第2页显示第100到199条,依次类推,这就是分页. 分页 ...

  9. IE9出现异常SCRIPT5011:不能执行已释放Script的代码

    今天同事测试系统,突然出现一个异常SCRIPT5011:不能执行已释放Script的代码 应用场景:用模态方式打开个窗口,对于返回对象使用"=="与字符串比较时出现错误 我也用我的 ...

  10. R语言igraph 包-构建网络图

    igaph 是一个项目,目标是建立一条简单,易用的网络分析工具,有 R, python, C/C++ 等语言的具体实现: 项目主页: http://igraph.org/ 在R语言中,对应的就是 ig ...