山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十三)-任意文件下载漏洞(1)


前言:

前面的博客记录了关于文件上传漏洞的基础知识,以及基本的漏洞出现点、利用方式、以及如何防护等,并在此基础上思考如何构造一个文件上传漏洞靶场,以及文件上传漏洞靶场的实现过程。
接下来实现的漏洞靶场为任意文件下载漏洞,本篇博客仍然是首先学习任意文件下载漏洞相关知识,并思考如何构造任意文件下载漏洞环境。


一、任意文件下载

1、任意文件下载漏洞简介

1.1、简介

由于业务需求,很多网站往往需要提供文件(附件)下载的功能块,某些文件下载功能实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件内容,发送给客户端进行下载。但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,恶意用户就可以利用这种方式下载服务器的敏感文件,对服务器进行进一步的威胁和攻击。


1.2、危害

通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等。

通过上面的简单介绍,可以看出任意下载漏洞是很常见的,如果对用户查看或下载的文件不做限制,就又可能被利用,从而造成损害,接下来就来学习下任意下载漏洞是如何利用的


1.3、利用

  • 获得站点源码(黑盒 -> 白盒)
  • 获得站点与中间件配置文件
  • 获得应用于系统配置文件(ssh、mysql)

从链接上看,类似这些,有可能就存在任意下载漏洞(php 语言,其他的也是类似的)

download.php?path=
download.php?file=
down.php?file=
data.php?file=
readfile.php?file=
read.php?filename=

任意下载漏洞可以通过谷歌来进行搜索

inurl : readfile.php?file=
inurl : download.php?file=

从参数名上看,大致有:

&readpath=
&filepath=
&Path=
&inputfile=
&url=
&Lang=
&dis=
&data=
&readfile=
&menu=
META-INF=
WEB-INF

linux和Windows下载利用文件

windows:

C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件

linux:

root/.ssh/authorized_keys如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa//ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore//记录每个访问计算机用户的公钥
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow//账户密码文件
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数

1.4、防范

  • 下载路径不可控,而是程序自动生成后保存在数据库中,根据 ID 进行下载
  • 对参数做严格的过滤,不能进行目录遍历(穿越)

2、项目配置

新建一个 springboot 项目,相关设置与前面的漏洞示例都相同。

编写 application.properties:

spring.thymeleaf.prefix = classpath:/templates/

pom.xml 导入相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>FileDownload</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>FileDownload</name>
    <description>FileDownload</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- springboot 热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌兮_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值