任意文件下载

任意文件下载漏洞的成因:

一些网站的业务需求,提供的有文件下载的功能,这个时候考虑到代码的灵活性开发者会单独写一个实现文件下载功能的文件,只需要传入一个文件名如果服务器存在该文件就可以下载。但是如果没有对传入的这个文件名做限制,用户可以控制这个文件名,那么就有可能会下载站点上的源码文件,配置文件等等,这个时候就形成了任意文件下载漏洞。

两种文件下载的方式

11. 直接下载: 下载

比较安全

2. 文件名变量

$filename = $_GET[‘filename’];


header(‘Content-Length: ’.filesize($filename));

header(‘Content-Disposition: attachment; filename=’ .$filename);


//Content-Disposition: attachment是告诉浏览器文件是可以当做附件被下载,下载后的文件名是file_name该变量的值。


readfile($filename);

?>

在链接后缀修改可以下载不同的文件。使用../跳出当前的目录。

任意文件下载漏洞的危害

可以下载服务器任意的文件,如脚本代码,服务以及系统配置文件等等。可以下载网站资源代码进行白盒审计,发现其他web漏洞,如SQL注入,文件包含,xss等等。


任意文件下载漏洞防御

禁止使用文件名的方式访问网站目录的文件

php.ini中配置open_basedir访问的文件名必须限制在规定的目录内,禁止越权使用别的目录。

你可能感兴趣的:(任意文件下载)