Pikachu:Unsafe file download(不安全的文件下载)

概述:

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

  此时如果攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
  所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!

Unsafe file download(不安全的文件下载)

  我们进入页面,发现上面有96黄金一代的12位球员,Notice中提醒我们,点击球员名字即可下载图片:

  那我们就下载一下呗,我选择费舍尔,毕竟历史最快绝杀还是要给牌面的——其他人牌面都不少:

  观察后台可以看到,通过点击前端链接,去查找后台的对应的图片,再反馈给前端进行下载,相当于把一个文件名传到后端,后台去找这个文件,然后响应输出到前端发下他没有做任何的防护,直接将get到的字符串拼接完成下载,我们可以构造一个url下载文件,通过进入根目录来获取文件,我这里在Harkbar中构造,发现可以进行下载:

  http://192.168.11.1/pikachu-master/vul/unsafedownload/execdownload.php? filename=../../../inc/config.inc.php

  如此一来,就可以把可以把敏感文件下载在本地。我们来看一下源码(路径如下图所示):

   我们看到没有做过滤处理,那我们如何防范呢?用以下两种方法来防范:

   1.  对传入的文件名进行严格的过滤和限定

        2.  对文件下载的目录进行严格的限定

原文地址:https://www.cnblogs.com/FHBBS/p/12611297.html