0x00 环境准备

大米CMS官网:http://www.damicms.com

网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15)

程序源码下载:http://www.damicms.com/downes/dami.rar

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/Admin/Lib/Action/TplAction.class.php  第20-43行中:

  1. public function index()
  2. {
  3. $dirpath = $this->dirpath();//当前目录
  4. $dirlast = $this->dirlast();//上一层目录
  5. import("ORG.Util.Dir");
  6. $dir = new Dir($dirpath);
  7. $list_dir = $dir->toArray();
  8. if (empty($list_dir))
  9. {
  10. 10.         $this->error('该文件夹下面没有文件!');
  11. 11.     }
  12. 12.     foreach($list_dir as $key=>$value)
  13. 13.     {
  14. 14.         $list_dir[$key]['pathfile'] = dami_url_repalce($value['path'],'desc').'|'.$value['filename'];
  15. 15.     }
  16. 16.     $_SESSION['tpl_jumpurl'] = '?s=Tpl/index/id/'.dami_url_repalce($dirpath,'desc');
  17. 17.     if($dirlast && $dirlast != '.')
  18. 18.     {
  19. 19.         $this->assign('dirlast',dami_url_repalce($dirlast,'desc'));
  20. 20.     }
  21. 21.     $this->assign('dirpath',$dirpath);
  22. 22.     $this->assign('list_dir',list_sort_by($list_dir,'mtime','desc'));
  23. 23.     $this->display('index');

24. }

这段函数获取当前目录及上一层目录参数,然后进行列目录等操作,我们继续看一下程序是如何获取当前目录的参数的呢?

2、漏洞文件位置:/Admin/Lib/Action/TplAction.class.php  第45-61行中:

  1. public function dirpath()
  2. {
  3. $id = dami_url_repalce(trim($_GET['id']));
  4. if ($id)
  5. {
  6. $dirpath = $id;
  7. }
  8. else
  9. {
  10. 10.         $dirpath ='./Web/Tpl';
  11. 11.     }
  12. 12.     if (!strpos($dirpath,'Tpl'))
  13. 13.     {
  14. 14.         $this->error("不在模板文件夹范围内!");
  15. 15.     }
  16. 16.     return $dirpath;

17. }

从GET方式获取参数id,判断参数是否为空,默认目录是./web/tpl,然后检测参数中是否包含tpl字符串,最后返回当前目录。我们可以构造参数id,绕过代码检测,从而导致程序在实现上存在目录遍历漏洞,攻击者可利用该漏洞获取敏感信息。

0x02 漏洞利用

1、登录后台,代码检测参数中是否包含tpl字符串,因此我们可以在参数包含.\\Web\\Tpl\\,然后通过..\\,跳转到上一层目录,获取网站目录结构。

获取网站根目录Payload:

http://127.0.0.1/admin.php?s=/Tpl/index/id/.\\Web\\Tpl\\..\\..\\

2、可以继续通过..\\遍历磁盘目录,获取更多敏感信息。

0x03 修复建议

1、过滤..等可能的恶意字符,防止目录跳转,最为推荐的方法;

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

最后

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

【代码审计】大米CMS_V5.5.3 目录遍历漏洞分析的更多相关文章

  1. 【代码审计】711cms_V1.0.5 目录遍历漏洞分析

      0x00 环境准备 711CMS官网: https://www.711cms.com/ 网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20) 程序源码下载:https: ...

  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. 【代码审计】大米CMS_V5.5.3 代码执行漏洞分析

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

  5. 【代码审计】大米CMS_V5.5.3 SQL注入漏洞分析

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

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

随机推荐

  1. 奇怪吸引子---GenesioTesi

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  2. 终极解决方案:org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response

    一.项目 我的项目采用Spring MVC +JSP+EasyUI 做的老项目. 在做图片验证码方法时,向网页输出验证码图片的方法如下: @Override public void showCodeI ...

  3. Redis 常用监控信息命令总结

    查看启动到当前处理命令总数: # redis-cli info stats | grep total_commands total_commands_processed:23693286991 查看每 ...

  4. C# System.IO.File

    using System; using System.IO; class Test { public static void Main() { string path = @"c:\temp ...

  5. [Done]SnowFlake生成Long类型主键返回前台过长导致精度缺失的问题

    问题描述: 在开发过程中,项目的主键生成器是SnowFlake,其生成的long主键是28位, 但是js中Long的最大值:https://blog.csdn.net/sunmerZeal/artic ...

  6. 基于Ubuntu搭建Seafile专属网盘

    系统要求: Ubuntu 16.04.1 LTS 64 位操作系统 安装 Seafile 服务器 安装依赖环境 在 Debian/Ubuntu 系统下,可以使用以下命令安装 MySQL: sudo a ...

  7. MUI class="mui-switch"开关 JQuery 控制开关

    <div class="mui-switch mui-active"> <div class="mui-switch-handle">& ...

  8. MySQL -- Innodb中的change buffer

    change buffer是一种特殊的数据结构,当要修改的辅助索引页不在buffer pool中时,用来cache对辅助索引页的修改.对辅助索引页的操作可能是insert.update和delete操 ...

  9. Shell脚本编程(一):初识shell script

    Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...

  10. 转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现

    基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现   概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有 ...