文件下载漏洞+目录遍历漏洞
不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
pikachu靶场示范:
在图片文字部分右键检查,即可查看到相应的下载地址
可以拼接到url上,测试敏感的路径看是否可以下载成功!
真实的具体目录如下:
也就成功进行了下载!
目录遍历漏洞(可以配合文件下载进行操作)
目录遍历漏洞概述
(在网页上可以看到服务器端的文件目录。index of) (fofa中可以搜索 body="INDEX OF" 就可以看到有这个漏洞的很多网站)
在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。
看到这里,你可能会觉得目录遍历漏洞和不安全的文件下载,甚至文件包含漏洞有差不多的意思,是的,目录遍历漏洞形成的最主要的原因跟这两者一样,都是在功能设计中将要操作的文件使用变量的 方式传递给了后台,而又没有进行严格的安全考虑而造成的,只是出现的位置所展现的现象不一样,因此,这里还是单独拿出来定义一下。
需要区分一下的是,如果你通过不带参数的url(比如:http://xxxx/doc)列出了doc文件夹里面所有的文件,这种情况,我们成为敏感信息泄露。 而并不归为目录遍历漏洞。(关于敏感信息泄露你你可以在"i can see you ABC"中了解更多)
在试探出目录的前提下,可以进行各种访问。
接下来我们复现目录遍历漏洞:
正常对网页访问的过程中如果该网页不存在或者为空会报404 但是如果开启的目录遍历,那么不存在的文件访问时不会报错 而是会出现Index of这种遍历的情况
由于phpstudy2018和2020pro配置不同
对于phpstudy2018 需要修改配置文件httpd.conf和vhosts.conf:
有加号表示允许目录遍历 把加号变成减号就表示不允许目录遍历
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride none
Order allow,deny
Allow from all
Require all granted
</Directory>
之后就正常复现漏洞即可
对于phpstudy2020pro 需要在其他界面配置:
之后点击修改
成功开启以后
如果不想这样 关闭即可