Jump to content
  • Hello visitors, welcome to the Hacker World Forum!

    Red Team 1949  (formerly CHT Attack and Defense Team) In this rapidly changing Internet era, we maintain our original intention and create the best community to jointly exchange network technologies. You can obtain hacker attack and defense skills and knowledge in the forum, or you can join our Telegram communication group to discuss and communicate in real time. All kinds of advertisements are prohibited in the forum. Please register as a registered user to check our usage and privacy policy. Thank you for your cooperation.

    TheHackerWorld Official

文件操作之文件下载读取

 Share


Recommended Posts

文件操作安全

不安全的文件下载概述

文件下载功能在很多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文件.

image-20220727110244907

http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=execdownload.php

尝试更换将../删除,进行测试.

image-20220727110817360

说明当前路径在unsafedownload的下一级目录中,没有找到文件.只有返回上一级目录也就是unsafe download(这里不是太清楚,欢迎批评指正.)

通过文件下载下载任意文件.比如config.inc.php文件.

image-20220727112938783

/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png

通过对比之前网址可以发现.需要跳过3级目录.

payload:

http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=../../../inc/config.inc.php

这里犯了一个错误,以为需要跳两级就好了,结果到了vul,实际需要三级才到pikachu目录下,这样正确下载.

image-20220727113843462

[RoarCTF 2019]Easy Java

JAVA的考察web.xml泄露的

image-20220727225959689

  1. 普通登录框,这里要么注入,暴力破解,都尝试了.无功而返,
  2. 这里我们看一下,help链接.

http://e38d1944-f4f7-450f-b659-b683f4d9bb3b.node4.buuoj.cn:81/Download?filename=help.docx

image-20220727230419764

image-20220727230232052

  1. 这里我们采用post方式下载数据.

image-20220727230855655

文档内容如下,猜测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 文件,得到网站源码。

image-20220727230912165

image-20220727231438939

!(文件操作之文件下载读取.assets/image-20220727234610951.png)

2816516-20220727235049873-1259702409.png

这里下文件中给出了flag的下载路径,但是要在前面加上classes来访问来访问class文件目录(详见上面的目录结构),且文件后缀为.class

image-20220727234755232

  1. 文件下载下来base64解码,即可.

image-20220727234327871

Link to post
Link to comment
Share on other sites

 Share

discussion group

discussion group

    You don't have permission to chat.
    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...