admin 发表于 2019-4-26 14:12:18

pukachu文件下载漏洞

漏洞介绍

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后
                        会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。
                        如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。

                        此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。
                        从而导致后台敏感信息(密码文件、源代码等)被下载。
代码分析

$file_path="download/{$_GET['filename']}";//用以解决中文不能显示出来的问题
$file_path=iconv("utf-8","gb2312",$file_path);//首先要判断给定的文件存在与否
if(!file_exists($file_path)){skip("你要下载的文件不存在,请重新下载",
'unsafe_down.php');return ;}$fp=fopen($file_path,"rb");$file_size=filesize($file_path);//下载文件需要用到的头
ob_clean();//输出前一定要clean一下,否则图片打不开
Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length:".$file_size);Header("Content-Disposition: attachment; filename=".basename($file_path));$buffer=1024;$file_count=0;//向浏览器返回数据

利用
点击图片下载,并用BURP抓包

将里面的ns.png改成我们要下载的文件路径即可。比如要下载down_nba.php文件。我们改包

方便即可看到我们下载的不是图片,而是PHP文件


下载mysql的配置文件
../../../../mysql/my.ini

页: [1]
查看完整版本: pukachu文件下载漏洞