Pikachu对不安全的文件下载解释:
不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
我的拙见:网站提供了下载功能,下载目标地址在前端源码中,如果我们F12修改了下载目标,修改成../../../其他文件,然后还下载成功了,那就是存在不安全的文件下载。但是要知道敏感文件在哪里
Unsafe Filedownload:
先观察
下载目标泄露在前端,而且可以改。
上一关文件包含:D:\phpStudy\PHPTutorial\WWW\pikachu\vul\fileinclude\include下有一个file6.php,我试试用不安全的下载文件漏洞把它下载下来
file6.php位置:
kb.png位置:
由此,相对于kb.png来说,file6.php的相对路径为:../../fileinclude/include/file6.php
下载敏感文件成功
成功的前提是你要知道敏感文件所在地,也就是你想下载其他文件的相对位置在哪里,其次后台没有过滤你传入的内容。
修复建议:
任何前端传过来的内容都不要相信,要过滤,然后前后端交互的操作尽量不要放在前端。