【代码审计】711cms_V1.0.5 目录遍历漏洞分析
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行:
- public function file() {
- $token = $this->input->get('token', true);
- $time = $this->input->get('time', true);
- $folder = $this->input->get('folder',true);
- $folder = $folder ? $folder : '/';
- $type = $this->input->get('type', true);
- $folder = urldecode($folder);
- $arr_token = array(
- 10. 'folder' => $folder,
- 11. 'type' => $type,
- 12. 'time' => $time
- 13. );
- 14. $private = md5($this->input->server('HTTP_HOST') . $this->_site['auth_code']);
- 15. $token2 = appToken($arr_token, $private);
- 16. if ($token2 != $token) {
- 17. $folder = '/';
- 18. }
- 19. if (strpos($folder, '..') !== false || strpos($folder, ':') !== false) {
- 20. $folder = '/';
- 21. }
- 22.
- 23. $type = $type ? $type : 'apk|jpg|gif|png';
- 24. $this->_data['type'] = $type;
- 25.
- 26. $arr_type = explode('|', $type);
- 27. $arr_type_num = count($arr_type);
- 28. if ($folder) {
- 29. $dir = root_path($folder);
- 30. $arr_data = array();
- 31. $arr_data['folders'] = array();
- 32. $arr_data['apks'] = array();
- 33. $arr_data['images'] = array();
- 34. $scan_result = scandir($dir);
- 35. foreach ($scan_result as $key => $value) {
- 36. if ($value == '.' || $value == '..') {
- 37. continue;
- 38. }
- 39. if (is_dir($dir . $value)) {
- 40. $arr_data['folders'][] = array(
- 41. 'folder' => $value,
- 42. 'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
- 43. 'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
- 44. );
- 45. } else {
- 46. $type = explode('.', $value);
- 47. $type = array_reverse($type);
- 48. if (in_array($type[0], $arr_type) && $arr_type_num == 1) {
- 49. $arr_data['apks'][] = array(
- 50. 'apk' => $value,
- 51. 'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
- 52. 'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
- 53. );
- 54. }
- 55. if (in_array($type[0], $arr_type) && $arr_type_num > 1) {
- 56. $arr_data['images'][] = array(
- 57. 'image' => $value,
- 58. 'size' => filesize($dir . $value) ? filesize($dir . $value) : 0,
- 59. 'date' => filemtime($dir . $value) ? filemtime($dir . $value) : time() - 3600 * 12
- 60. );
- 61. }
- 62. }
- 63. }
- 64. $this->_data['file'] = $arr_data;
- 65. $this->_data['folder'] = $folder;
- 66. $this->_data['time'] = time();
- 67. $this->_data['private'] = $private;
- 68.
- 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 目录遍历漏洞分析的更多相关文章
- 【代码审计】大米CMS_V5.5.3 目录遍历漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- [cyber security][php]pfSense目录遍历漏洞分析
0×00 导言 pfSense是一个基于FreeBSD,专为防火墙和路由器功能定制的开源版本. 在本文中,我们将向大家介绍在pfSense的2.1.3以及更低版本中的CVE-2014-4690漏洞:对 ...
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- Kali学习笔记31:目录遍历漏洞、文件包含漏洞
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...
- HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)
参考文献: http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地 ...
- 目录遍历漏洞简介 转载于h3c
参考文章: 攻防:目录遍历漏洞简介
- nginx目录遍历漏洞复现
nginx目录遍历漏洞复现 一.漏洞描述 Nginx的目录遍历与apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄露. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添 ...
随机推荐
- JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)
现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个通杀所有浏 ...
- FatJar in 创新实训 自然语言交流系统
Fat Jar Eclipse Plug-In是一个可以将Eclipse JavaProject的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是e ...
- C艹重复输入小方法,for循环+while
#include <iostream> #include <cctype> #include <string> ; int main(int argc, char ...
- Python——eventlet.websocket
使用该模块可以方便地创建 websocket 服务器,要创建一个websocket服务器,只需要将一个句柄函数用装饰器 WebSocketWSGI 装饰即可,然后这个函数就可以当做一个WSGI应用: ...
- [SQL Server] 复制数据库任务
假设你要生产环境下的数据做相应的测试,比如修改及测试存储过程.更改和优化索引等.但是你用户在连接数据库的情况下,你又不能断开数据库的连接.如何取得数据库的副本呢? 一. 利用数据库任务中的复制数据库 ...
- VS2013 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法
此模板尝试加载组件程序集 NuGet.VisualStudio.Interop 分析错误 既然错误信息提示模板尝试加载组件程序集,那说明NuGet.VisualStudio.Interop程序集不 ...
- 监听输入框值变化的最佳方案 oninput 和 onpropertychange (实时监控文本框改变的最佳方案)
公司有个文本框,当输入文字/粘贴/复制 或者是键盘猛按的时候,都希望这个文本框能统计出 输入了多少字 这种用 onchange onkeyup onkepress 都不怎么好使 最后在 ...
- iText操作PDF读取JPEG图片ArrayIndexOutOfBoundsException异常
iText版本:itextpdf-5.5.1.jar 问题描述 读取本地JPEG图片文件的代码: com.itextpdf.text.Image image = com.itextpdf.text.I ...
- VIM选择文本块/复制/粘贴
在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择.其它相关命令:v:按字符选择.经常使用的模式,所以亲自尝试一下它. V:按行选择.这在你想拷贝或者移动很 ...
- Java实践 — SSH远程执行Shell脚本
1. SSH简介 SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接 ...