pikachu靶场-Unsafe Filedownload

不安全的文件下载

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。

切记:所有与前端交互的数据都是不安全的,不能掉以轻心!

1.漏洞描述


一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。

2.漏洞原理


给用户提供了一个下载的功能,并能接收相关的参数变量

开发时候,使用了读去文件的相关函数

对前端用户读取文件请求,没有进行相应的控制或控制不严(限制、校验)

能输出请求文件的内容,提供给前端下载

3.漏洞危害


可以下载服务器的任意文件:

获得网站web源码,再对代码进行审计,以获得更多的漏洞

获得网站、服务器、系统、数据库等中间件配置文件

获得应用于系统配置文件

对内网的信息进行一个探测

下载各种.log文件,并寻找后台地址、文件上传点等地方

4.漏洞发现


通过web漏洞扫描工具对网站实施扫描可能发现任意文件读取/下载漏洞,发送一系列”…/”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。

也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造…/…/…/ WEB-INF/web.xml等,然后查看其是否可被读取或者下载出来。

有些WAF会过滤…/,可以构造 /.%252e/.%252e/.%252e/ , %25对应的是%,%2e对应的是.,所以 .%252e/ 对应的是 …/

5.如何防御


净化数据:对用户传过来的文件名参数进行统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
要下载的文件地址保存至数据库中。
文件路径保存至数据库,让用户提交文件对应ID下载文件。
用户下载文件之前需要进行权限判断,open_basedir 中可以设置访问权限
文件放在web无法直接访问的目录下。
将.过滤,不允许提供目录遍历服务。
公开文件可放置在web应用程序下载目录中通过链接进行下载。
 

1.Unsafe file download

点击一个图片下面的人名,即可进行下载

我们可以看到超链接这里有一个filename的参数

http://xxx/vul/unsafedownload/execdownload.php?filename=rayal.png

 对这个参数进行修改

我们成功把下载的界面给下载了

 继续尝试一下其他的东西

发现可以下载到/etc/passwd

漏洞利用成功

猜你喜欢

转载自blog.csdn.net/qq_29977871/article/details/130464188
今日推荐