文件操作安全
不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
你可以通过“Unsafe file download”对应的测试栏目,来进一步的了解该漏洞。
文件包含,文件下载,文件读取.
unsafe filedownload
图片下载链接:
http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png
图片正常下载
http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=../execdownload.php
利用文件下载漏洞,下载exeddownload.php文件.
http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=execdownload.php
尝试更换将../删除,进行测试.
说明当前路径在unsafedownload的下一级目录中,没有找到文件.只有返回上一级目录也就是unsafe download(这里不是太清楚,欢迎批评指正.)
通过文件下载下载任意文件.比如config.inc.php文件.
/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png
通过对比之前网址可以发现.需要跳过3级目录.
payload:
http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=../../../inc/config.inc.php
这里犯了一个错误,以为需要跳两级就好了,结果到了vul,实际需要三级才到pikachu目录下,这样正确下载.
[RoarCTF 2019]Easy Java
JAVA的考察web.xml泄露的
- 普通登录框,这里要么注入,暴力破解,都尝试了.无功而返,
- 这里我们看一下,help链接.
http://e38d1944-f4f7-450f-b659-b683f4d9bb3b.node4.buuoj.cn:81/Download?filename=help.docx
- 这里我们采用post方式下载数据.
文档内容如下,猜测flag大致此处.然后题目提到java,卡住了,k查看writeup是通过下载WEB-INF/web.xml 泄露
6. WEB-INF/web.xml 泄露
WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录。
Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身一些缺陷影响)。从而导致通过Nginx访问到Tomcat的WEB-INF目录(请注意这里,是通过Nginx,而不是Tomcat访问到的,因为上面已经说到,Tomcat是禁止访问这个目录的。)。
WEB-INF 主要包含一下文件或目录:
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)
12345
直接在域名后面加上WEB-INF/web.xml
通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。
!(文件操作之文件下载读取.assets/image-20220727234610951.png)
这里下文件中给出了flag的下载路径,但是要在前面加上classes来访问来访问class文件目录(详见上面的目录结构),且文件后缀为.class
- 文件下载下来base64解码,即可.
原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/277416.html