【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析
0x00 环境准备
大米CMS官网:http://www.damicms.com
网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15)
程序源码下载:http://www.damicms.com/downes/dami.rar
测试网站首页:

0x01 代码分析
1、漏洞文件位置1:/Admin/Lib/Action/TplAction.class.php 第118-135行中:
- public function del()
- $id = dami_url_repalce(str_replace('*','.',trim($_GET['id'])));
- if (!substr(sprintf("%o",fileperms($id)),-3))
- {
- $this->error('无删除权限!');
- }
- @unlink($id);
- if (!empty($_SESSION['tpl_jumpurl']))
10. {
- 11. $this->assign("jumpUrl",$_SESSION['tpl_jumpurl']);
12. }
13. else
14. {
- 15. $this->assign("jumpUrl",'?s=Tpl/index');
16. }
17. $this->success('删除文件成功!');
- 18. }
这段删除模板的函数中,首先对获取的参数进行替换,然后判断文件是否有删除权限,接着带入unlink函数中进行删除操作,可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件,如删除install.lck进行CMS重装,劫持网站数据库。
2、漏洞文件位置2:/install/index.php 第102-112行:
- $fp = fopen($source_file,"r");
- $configStr = fread($fp,filesize($source_file));
- fclose($fp);
- $configStr = str_replace('localhost',$dbhost,$configStr);
- $configStr = str_replace('damidb',$dbname,$configStr);
- $configStr = str_replace("'DB_USER'=>'admin'","'DB_USER'=>'{$dbuser}'",$configStr);
- $configStr = str_replace("'DB_PWD'=>'admin'","'DB_PWD'=>'{$dbpwd}'",$configStr);
- if($dbport!='3306'){$configStr = str_replace("'DB_PORT'=>'3306'","'DB_PORT'=>'{$dbport}'",$configStr);}
- $fp = fopen($target_file,"w") or die("<script>alert('写入配置失败,请检查$target_file是否可写入!');history.go(-1);</script>");
10. fwrite($fp,$configStr);
11. fclose($fp);
这段函数中,首先读取配置文件,然后通过正则匹配字符串,最后写入配置中。
参数未经任何过滤,直接写入配置文件。攻击者可以构造脚本代码写入配置文件,从而导致程序在实现上存在代码执行漏洞。
0x02 漏洞利用
1、在网站根目录新建test.txt作为任意文件删除漏洞测试文件:

2、登录后台,构造UTL链接:http://127.0.0.1/admin.php?s=Tpl/Del/id/.|test.txt
可成功删除根目录下的text.txt文件:

3、如何进一步利用呢?
删除根目录下install.lck进行CMS重装,劫持网站数据库
http://127.0.0.1/admin.php?s=Tpl/Del/id/.|install.lck

4、结合/install/index.php下过滤不当,可以将脚本代码写入配置文件,从而进一步触发代码执行漏洞。

5、进一步触发代码执行漏洞,获取网站服务器控制权限。

0x03 修复建议
1、对于要删除的文件,通过正则判断用户输入的参数的格式,看输入的格式是否合法。
2、写入配置文件前,对特殊字符(如<、>等)进行htmlencode处理;全局配置可考虑写入数据库进行调
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析的更多相关文章
- CVE-2012-0003 Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞 分析
[CNNVD]Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞(CNNVD-201201-110) Microsoft Wi ...
- 【代码审计】QYKCMS_v4.3.2 后台down.php页面代码执行漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】LaySNS_v2.2.0 System.php页面存在代码执行漏洞分析.
0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...
- phpMyAdmin Transformation 任意文件包含/远程代码执行漏洞
漏洞参考 https://yq.aliyun.com/articles/679633 国外提供了一个在线测试的靶场 默认密码 root toor https://www.vsplate.c ...
- 【代码审计】XYHCMS V3.5任意文件删除漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- 【代码审计】QYKCMS_v4.3.2 任意文件删除漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】iZhanCMS_v2.1 后台任意文件删除漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- 【代码审计】大米CMS_V5.5.3 代码执行漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
随机推荐
- Sallen-Key Active Butterworth Low Pass Filter Calculator
RC 2nd Order Passive Low Pass Filter The cut-off frequency of second order low pass filter is given ...
- linux命令行下修改系统时间、时区
date查看时间以及时区 图a是est时区,和HONGkong时间查了一个小时. # 保存设置$ sudo mv /etc/localtime /etc/localtime.old # 设置时区 $ ...
- zeromq学习笔记2——简单的客户端和服务端测试程序
1.前言 zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言. 2.测试程序 使用zeromq给的hwserve ...
- 【Javascript Demo】图片瀑布流实现
瀑布流就是像瀑布一样的网站——丰富的网站内容,特别是绚美的图片会让你流连忘返.你在浏览网站的时候只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前.瀑布流网站是新兴的一种网站模式——她的 ...
- C# 6 的新特性~
原文地址 Mads Torgersen,微软 C# 程序管理者,它发布了一个视频,描述即将到来的下一个 C# 版本--C# 6.在 C# 6 的新特性之间,Mads 主要提到了 getter-only ...
- 用oc写爬虫之HTMLParser
最近刚好有一些小需求,就尝试用OC来写一些简单的爬虫抓取网页上的数据: 发现了一个非常好用的HTMLParser工具 ; 语法是OC的,通过分析网页结构:可以很轻松的抓取需要的数据: 但是提前需要了解 ...
- mysql函数和操作符
mysql,); //取模函数 +-----------+ ,) | +-----------+ | +-----------+ row in set (0.00 sec) mysql,); +--- ...
- Adobe Photoshop for Mac(图像处理软件)破解版安装
1.软件简介 Adobe Photoshop(简称 "PS")是 macOS 系统上一款由 Adobe Systems 开发和发行的图像处理软件.Photoshop 主要处理 ...
- 【Linux】使用w命令和uptime命令查看系统负载
在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top.atop或者ps,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令, ...
- 如何测试hello world
最近在跟敏捷专家聊到了单元测试的相关内容. 我的问题主要集中在如何推广单元测试. 我们发现在很多团队,开发人员并不是十分愿意去写单元测试,我认为主要的原因是学习写单元测试是有成本的,很多开发同学并不愿 ...