不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
切换到对应模块,可以看到96黄金一代
比如点击kobe的图片,就会有下载的提示框
我们将这个链接用新窗口打开,可以看到文件名和传参就在url中,
这时非常危险的,也导致我们可以利用它
流程是:传参给后台,后台响应本次请求,并且在后台找到这个文件,
找到文件后浏览器响应输出到前端,浏览器就可以下载这个文件。
一般寻找不安全的文件下载漏洞时使用的是目录遍历方法,比如利用../../../../etc/passwd
我用的是windows 比如我的WWW目录下有cookie.txt文件,也可直接下载
payload:?filename=../../../../cookie.txt
这里依然是需要限制能下载的文件范围,设置一个白名单。