【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

admin 2023年12月15日18:44:49评论59 views字数 1601阅读5分20秒阅读模式

源码分析

核心源码如下,文件路径:pikachu-mastervulunsafedownloadexecdownload.php

$file_path="download/{$_GET['filename']}";

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));

设置下载的文件路径,并从 Get 请求中获得需要下载的文件名称

$file_path="download/{$_GET['filename']}";

判断文件路径是否存在(源码里只是判断了我们要下载的文件是否在 download 目录下,如果不在该目录下就提示文件不存在,并没有考虑到目录穿越的情况)

if(!file_exists($file_path)){
    skip("你要下载的文件不存在,请重新下载"'unsafe_down.php');
    return ;
}

以二进制打开文件,并读取文件大小

$fp=fopen($file_path,"rb");
$file_size=filesize($file_path);

最后四行组成了一个完整的下载过程

Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".basename($file_path));
  • Header("Content-type: application/octet-stream");:设置了 HTTP 响应的内容类型为 “application/octet-stream”,意味着浏览器会将接收到的数据视为一个要下载的文件,而不是在浏览器打开
  • Header("Accept-Ranges: bytes");:这行代码告诉浏览器,服务器可以接受字节范围的请求,主要是负责断点续传
  • Header("Accept-Length:".$file_size);:设置了 HTTP 响应的内容长度为文件的大小,负责正确显示下载进度
  • Header("Content-Disposition: attachment; filename=".basename($file_path));:设置了 HTTP 响应的内容处置为附件,并指定了下载的文件名

Pikachu 靶场实践

目录穿越

打开 Burp Suite 进行抓包,观察到以 Get 方式对目标文件进行请求【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

将文件名改为想要下载的文件,这里我们演示下载源码【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

最终成功获取到源码【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

目录穿越进阶

当我们不确定文件结果时,可以使用 Burp Suite 的 Intruder 功能,通过增加../层数对目标文件进行爆破这里先用 “1” 来代替../的位置【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

Payload 直接叠加../的层数即可【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

模式选择狙击手,最终结果如下【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

原文始发于微信公众号(天禧信安):【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月15日18:44:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Pikachu 靶场精讲】Unsafe filedownload—不安全的文件下载http://cn-sec.com/archives/2303493.html

发表评论

匿名网友 填写信息