0x00 前言:
本篇介绍的是任意文件下载和删除也是审计必备的技能之一,主要分为危险函数、文件下载和文件删除三方面展开。
0x01 危险函数:
文件下载危险函数:file_get_contents()
、fopen()
等
文件删除危险函数:unlink()
0x02 文件下载:
文件下载漏洞通常出现在像download.php
、file.php
类似这种名字的程序里。精准的搜索方法还是搜file_get_contents()
、fopen()
等函数,之前某oa
系统就存在使用file_get_contents()
这个函数导致的文件下载漏洞,
其缺陷代码如下:
<?php
$fileurl=$_REQUEST['url'];
//判断文件是否存在逻辑
$content=file_get_contents($fileurl);
echo $content;
?>
测试发现成功读取了文件内容:
使用fopen()
函数不当也容易出现这种漏洞,之前出现过的漏洞代码如下:
<?php
$filename=$_GET['name'];
$filename_AND_path= 'D:\\phpStudy\\PHPTutorial\\WWW\\'.$filename;
$file=fopen($filename_AND_path,"r");
if (!$file) {
exit("file not found");
}
header("Content-Type: application/octet-stream");
header("Access-Ranges:bytes");
header("Access-Length:".filesize($filename_AND_path));
header("Content-Disposition:attachment;filename=$filename");
echo fread($file,filesize($filename_AND_path));
fclose($file);
?>
尝试发现可以继续下载任意文件了
当然文件下载相关的函数不止这两个,还请自行搜寻和积累~
0x03 文件删除:
程序员在码代码使用了unlink()
等函数之前未对传入的文件名或路径做有效的校验,从而被黑客利用删除任意文件造成损失。之前某知名的Mail
系统就存在这一漏洞,缺陷代码如下:
<?php
$fileUrl=isset($_GET['fileUrl'])?$_GET['fileUrl']:'../uploads/text1.txt';
if(file_exists($fileUrl)){
echo "1";
}else {
echo $fileUrl;
}
if ($fileUrl and is_file($fileUrl)) {
@unlink($fileUrl);
}
?>
本地测试发现返回为1
,证明删除了db.sql
文件
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章