【代码审计】大米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行中:

  1. public function del()  
  2.   
  3. $id = dami_url_repalce(str_replace('*','.',trim($_GET['id'])));  
  4. if (!substr(sprintf("%o",fileperms($id)),-3))  
  5. {  
  6.     $this->error('无删除权限!');  
  7. }  
  8. @unlink($id);  
  9. if (!empty($_SESSION['tpl_jumpurl']))  

10. {  

  1. 11.     $this->assign("jumpUrl",$_SESSION['tpl_jumpurl']);  

12. }  

13. else  

14. {  

  1. 15.     $this->assign("jumpUrl",'?s=Tpl/index');  

16. }  

17. $this->success('删除文件成功!');  

  1. 18.   }  

这段删除模板的函数中,首先对获取的参数进行替换,然后判断文件是否有删除权限,接着带入unlink函数中进行删除操作,可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件,如删除install.lck进行CMS重装,劫持网站数据库。

2、漏洞文件位置2:/install/index.php 第102-112行:

  1. $fp = fopen($source_file,"r");  
  2. $configStr = fread($fp,filesize($source_file));  
  3. fclose($fp);  
  4. $configStr = str_replace('localhost',$dbhost,$configStr);  
  5. $configStr = str_replace('damidb',$dbname,$configStr);  
  6. $configStr = str_replace("'DB_USER'=>'admin'","'DB_USER'=>'{$dbuser}'",$configStr);  
  7. $configStr = str_replace("'DB_PWD'=>'admin'","'DB_PWD'=>'{$dbpwd}'",$configStr);  
  8.             if($dbport!='3306'){$configStr = str_replace("'DB_PORT'=>'3306'","'DB_PORT'=>'{$dbport}'",$configStr);}                     
  9. $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--,每周原创一篇技术干货。 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
大米CMS是一个免费开源的,快速、简单的面向智能手机等移动终端的网站CMS系统,自动生成手机安装包APK.并提供终端消息推送,手机版后台管理等功能。 大米CMS 4.6 完全开源版 更新内容:2014-12-09 1.修正留言本ajax分页,页数多了全显示页会很糟糕,改成上5页,下5页模式,手机版上、下一页有错误也做了修正 2.后台增加会员邮件群发功能,方面营销 3.后台内容管理增加批量复制功能,实现一批内容同步发表到多栏目下 4.xinwen模板详细页内容的热们与推荐 不再是全站的热门与推荐 改成该分类下的热门与推荐 5.后台增加了前台菜单当前菜单的标志变量cur_menu 6.修复搜索出的一处错误 7.修正后台文章内容管理权限,文章列表出全部内容的bug 特点: 1.扩展字段自定义,根据自己系统需要无限扩展字段,对于SELECT等下拉选项支持PHP代码生成OPTION,支持多图多文件上传字段! 2.后台栏目分类无限极,并可以控制字段的显示或隐藏,生成不同的管理表单,方便管理 3.列表模板(list目录下)和详细模板(page目录下)自定义 4.基于thinkphp MVC框架开发,内置大量函数方便前台模板调用,内置大米万能标签与分类标签等方便调用数据 5.作站灵活,可以将该系统做成任何类型网站,内置新闻类型站、企业站、手机3g站模型,通过http.//***安装目录****/?t=xinwen这种查看,方便二次开发出不同模板 7.支持伪静态与全站生成静态HTML 8.国内率先将微电商的概念引入CMS,让企业站不仅仅再是展示企业,可快速开展电子商务。集成支付宝标准双接口,支持购物车,可在线支付,货到付款,站内支付三种购买方式! 9.跨平台支持移动终端访问,自适应,不变形!可做手机APP等应用开发 10.国内CMS首创MSYQL表万能管理模型,输入MYSQL表名即可生成一个有增删改功能的管理模型,可快速在此基础上开发出自己想要的管理功能!
大米CMS是一个免费开源、快速、简单的PC建站和手机建站集成一体化系统,致力于为用户提供简单、快捷的PC建站和智能手机建站解决方案。 大米CMS特点: 1:扩展字段自定义,根据自己系统需要无限扩展字段,对于SELECT等下拉选项支持PHP代码生成OPTION,支持自定义多图多文件上传字段! 2:后台栏目分类无限极,并可以控制字段的显示或隐藏,生成不同的管理表单,内置RBAC权限体系,分栏目权限,内容权限,方便管理 3:列表模板(list目录下)和详细模板(page目录下)自定义, 4:基于thinkphp MVC框架开发, 内置大量函数方便前台模板调用,大米拥有自己的万能标签与分类标签等方便调用数据 5:作站灵活,可以将该系统做成任何类型网站,内置新闻类型站、企业站、手机3g站模型,通过http://***安装目录****/?t=xinwen这种查看,方便二次开发出不同模板 7:支持伪静态与全站生成静态HTML,支持数据采集 8:国内率先将微电商的概念引入CMS,让企业站不仅仅再是展示企业,可快速开展电子商务。集成支付宝标准双接口,支持购物车,可在线支付,货到付款,站内支付三种购买方式!会员集成QQ快捷登陆,支持购物订单通过电子邮件提醒! 9:跨**台支持移动终端访问,自适应,不变形!可做手机APP等应用开发,内置JSON数据API接口 10:国内CMS首创MSYQL表万能管理模型,输入MYSQL表名即可生成一个有增删改功能的管理模型,可快速在此基础上开发出自己想要的管理功能! 11:配备手机数据交互接口JSON格式APIa 大米CMS5.5.3更新 (1) 全新升级thinkphp3.1内核,发现若干不兼容的函数并修正,性能与速度大大提升 (2) 修正后台会员资料修改无法修改分组 (3) 添加邮件找回密码 (4) 修正升级thinkphp3.1内核后session类、 cookie类等不自动加载导致的一些错误如:留言本不能留言 (5)大米CMS安装时增加管理员密码设置 (6)后台栏目管理增加栏目图标

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bypass--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值