返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >iwebsec 文件包含篇 (已完结)
  • 347
分享到

iwebsec 文件包含篇 (已完结)

网络安全 2023-09-28 17:09:20 347人浏览 泡泡鱼
摘要

01- 本地文件包含 感觉没有什么说的,因为这个靶场没有很好的展示效果。有限制的本地文件包含漏洞是指代码中为包含文件指定了特定的前缀或者.PHP、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤,

01- 本地文件包含

感觉没有什么说的,因为这个靶场没有很好的展示效果。有限制的本地文件包含漏洞是指代码中为包含文件指定了特定的前缀或者.PHP、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤,才能利用文件包含漏洞读取操作系统中的文件,获取敏感信息。

可以看到这个关卡是没有进行任何过滤的

在这里插入图片描述

那么我们就可以直接读取重要的系统文件了。

在这里插入图片描述
注意,这里大家可能会对…/的数量产生疑问。这里我解释一下,只要你的…/的数量>你使用最少…/从当前目录回到根目录/的数量即可。也就是说你这里使用1000,10000个…/最终回到的就是根目录

在这里插入图片描述

可以看到…/的数量只要足够多就可以。

02- 本地文件包含绕过

在这里插入图片描述

可以看到这个使用指定后缀。那么使用%00截断即可

在这里插入图片描述

ok,这个也讲完了。

03- session本地文件包含

当可以获取Session文件的路径并且Session文件的内容可控时,就可以通过包含Session文件进行攻击。直接看源码

在这里插入图片描述

可以看到满足Session文件的内容可控。

所以我们就要差获取Session文件的路径。有两种方法

1)通过phpinfo的信息获取Session的存储位置,这里可以利用第一关获取

在这里插入图片描述

可以看到路径为/var/lib/php/session

2)通过猜测默认的Session存储位置尝试。

通常在linux中session默认存储在/var/lib/php/session目录下。

我们先访问Http://192.168.6.153/fi//03.php?iWEBsec=,然后利用第一关访问Session文件,因为这一关没有文件包含可以利用。

在这里插入图片描述

大家可以在访问的时候F12查看信息获取SeeionID的值。

然后访问http://192.168.6.153/fi/01.php?filename=/var/lib/php/session/sess_ilbuddbmsbmg5aod59s07cctv7

在这里插入图片描述

然后访问靶机中的session目录验证一下

在这里插入图片描述

注意,这里不是在根目录,大家可以使用sudo find / -name session查看

日志文件包含

服务器中的中间件ssh等服务都会有记录日志的功能。如果开启了记录日志的功能,用户访问的日志就会存储到不同服务的相关文件中。如果日志文件的位置是默认位置,就可以通过访问日志将恶意带代码写入日志文件中,然后通过文件包含漏洞日志中的恶意代码,获取权限。

这里使用第一关来做这个日志文件包含的实验。

首先我们修改User-Agent的内容,将恶意代码存储到日志文件中,这里我使用hackbar自带的修改功能,或者可以使用bp进行修改

在这里插入图片描述

接下来,看最终的结果

在这里插入图片描述

可以看到顺利执行,接下来读取/etc/passwd文件内容

在这里插入图片描述

可以看到顺利读取。

04- 远程文件包含

远程文件包含是指包含的文件并不是本地服务器的,而是通过URL的形式包含的其他服务器上面的文件,从而使目标主机执行恶意代码。

漏洞利用条件:allow_url_fopen = on 和 allow_url_include = on

在这里插入图片描述

可以看到没有任何过滤,直接远程包含即可

在这里插入图片描述

这里大家filename里面的ip地址直接在cmd下ipconfig查看把192的都试一下,如果你知道自己是哪一块网卡也行。对了,这个要开启apache,要不然没用。

在这里插入图片描述

在这里插入图片描述

大家注意看一下这两张图片中php的版本,为什么会版本不同呢?

这里给大家解释一下,第一张图片版本为5.4.45的原因是因为文件为shell.php在文件包含前这个php文件就会允许生成的phpinfo,然后靶机会将结果显示出来,大家可以看一下自己启动apach服务器php的版本

在这里插入图片描述

可以看到我的版本是5.4.45的。

然后第二张图片的php版本就是靶机的php版本了。因为上传的是txt文档,虽然自己的服务器不会运行,但是被目标靶机包含后就会执行了。

这里给大家看一下在自己主机上访问shell.txt和shell.php的结果

在这里插入图片描述

这也是文件包含具体步骤。好了,远程文件包含也解释清楚了

05- 远程文件包含绕过

这和04一样没什么说的,说一下绕过方法

1)'?'绕过

2)‘#’ 绕过 %23

3)空格绕过 %20

这里大家自己去搞吧。

06- php://filter伪协议

php://filter是元封装器,设计用于数据流打开时的筛选过滤应用,对本地磁盘文件进行读取。

以下两种用法相同

1) ?filename=php://filter/convert.base64-encode/resource=xxx.php2) ?filename=php://filter/read=convert.base64-encode/resource=xxx.php

利用php://filter读取本地磁盘文件 时,PHP配置文件不需要开启allow_url_fopen 和 allow_url_include.

php://filter参数

名称描述
resource=<要过滤的数据流>该参数是必需的。指定要过滤的数据流
read=<读链的筛选器列表>该参数可选。可以设定一个或多个筛选器名称,以管道符(|)分分隔
write=<写链的筛选器列表>该参数可选。可以设定一个或多个筛选器名称,以管道符(
<;两个链的筛选器列表>未read=或write=作前缀的筛选器列表会视情况应用于读或写链

在这里插入图片描述

可以看到利用?filename=php://filter/convert.base64-encode/resource=/etc/passwd,就可以读出passwd的内容

07- php://input伪协议

php://input可以访问请求的原始数据的只读流,即可以直接读取POST上没有经过解析的数据,但是使用 enctype = "multipart/fORM-data"的时候 php://input 是无效的。也就是POST里面的数据会被执行,从而导致非常严重的危害。

需要目标主机开启allow_url_include

在这里插入图片描述

大家可以看到这里面直接就是有 php://input,我们直接POST传数据就可以了。搞的我还以为我搞错了,原理后台就直接已经添加了这个。

在这里插入图片描述

可以看到php://input 可以获取POST传入的数据。这个没什么好玩的,下面用 第六关 演示php://input 虽然第六关是使用filter,但是都一样。

在这里插入图片描述

大家可以看到,传入的POST数据顺利执行了。

那么大家会好奇,为什么第七关显示的是数据,而第六关直接运行了呢?

不知道大家有没有注意到一个使用了file_get_contents一个使用的是include。

这里给大家看一个好玩的。

在这里插入图片描述

不知道大家发现了什么没有,POST 和 GET 的结果竟然是一样的。为什么呢?

其实这两者是没有什么区别的,源码中获取filename是使用GET 方式获取的,所以说,无论你使用GET还是POST请求最终filename获取的都是一样的内容 php://input 。

在这里插入图片描述

到这里我们就可以想到,如果使用POST方式获取filename这种方法是不是就不行了呢? 对的,如果后台使用POST方式获取filename的话,php://input就不可以使用了。 OK,这一关到这也就结束了。

08-php://input伪协议利用

07已经讲解了。这里就不重复讲了。

09- file://伪协议利用

file:// 伪协议可以访问本地文件系统,读取文件的内容。

利用file:// 时,PHP配置文件不需要开启allow_url_fopen 和 allow_url_include.

?filename=file:///etc/passwd 

这个也没有什么可以讲的。下一个

10-data://伪协议利用

从PHP 5.2.0 起,数据流封装器开始有效,主要用于数据流的读取,如果传入的数据是PHP代码,就会执行任意代码。

使用方法

data://text/plain;base64,xxxxx(Base64 编码后的数据)

利用data://时,PHP配置文件需要开启allow_url_include 和 allow_url_fopen。

?filename=data://text/plain;base64,PD9waHAGCGhwaW5mbygpOz8%2b

在这里插入图片描述

大家这里要注意以下。

   ==>  进行base64编码 PD9waHAgcGhwaW5mbygpOz8+此时出现特殊符号 + ,我们要将 + 进行一次url编码 变为 %2b ,否则不会正常执行。

Base64 空格,加号问题 - hongdada - 博客园 (cnblogs.com)

phar://伪协议

phar:// 是用来进行解压的伪协议,phar://参数中的文件不管是什么扩展名,都会被当作压缩包。

需要开启allow_url_include,利用版本应高于php5.3.0

用法:

?file=phar://压缩包/内部文件

这里先给大家简单演示一下。后面配合文件上传和phar来一起搞

在这里插入图片描述

大家可以看到我a.php文件内容为

error_reporting(0);$filename = $_GET['filename'];include($filename);highlight_file(__FILE__);?>

shell.zip文件中就只含有shell.php文件。注:这里使用phar一定要用zip压缩,rar等其他不可以。

这里可以将shell.zip改为shell.jpg

在这里插入图片描述

同样可以达到目的。

下面的实验大家可以看一下

接下来我就来做文件上传+文件包含配合phar的简单实验。首先一点是要有文件包含的点,否则没用。

给大家先看一下做实验的源码

<html><meta http-equiv="Content-Type" content="text/html;  charset=utf8" /><body>  <form action="" method="post" enctype="multipart/form-data" name="upload" onsubmit="">    <input type="hidden" name="MAX_FILE_SIZE" value="204800" />    请选择要上传的文件:<input type="file" name="upfile" />    <input type="submit" name="submit" value="上传" />  </form></body></html><?phperror_reporting(0);$uploaddir = 'uploads/';if (isset($_POST['submit'])) {  if (file_exists($uploaddir)) {    if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {      echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";    }  } else {    exit($uploaddir . '文件夹不存在,请手工创建!');  }  //print_r($_FILES);}$filename = $_GET['filename'];include($filename);// highlight_file(__FILE__);?>

我们先上传zip文件展示一下效果。

在这里插入图片描述

可以看到上传成功,并且路径也知道。

接下来使用phar就好了。

在这里插入图片描述

可以看到顺利执行了。

接下来我将shell.zip改为shell.jpg

在这里插入图片描述

大家可以把Content-Type修改一下,不修改也没有问题,因为源码没有任何过滤。

在这里插入图片描述

可以看到同样顺利执行了。好了,phar就讲到这里了。

zip://伪协议

zip://伪协议和 phar://伪协议在原理上类似,但用法不一样。

用法如下:

zip://[压缩文件绝对路径]#[压缩文件内的子文件名]

注意:#在浏览器中要转换为为%23

在这里插入图片描述

可以看到成功执行。好了文件包含到此结束。

来源地址:https://blog.csdn.net/qq_60829702/article/details/129868872

--结束END--

本文标题: iwebsec 文件包含篇 (已完结)

本文链接: https://lsjlt.com/news/420267.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iwebsec 文件包含篇 (已完结)
    01- 本地文件包含 感觉没有什么说的,因为这个靶场没有很好的展示效果。有限制的本地文件包含漏洞是指代码中为包含文件指定了特定的前缀或者.php、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤,...
    99+
    2023-09-28
    网络 安全
  • 文件包含总结
    概念 是指将已有的代码以文件形式包含到某个指定的代码中,从而使用其中的代码或者数据,一般是为了方便直接调用所需文件,文件包含的存在使得开发变得更加灵活和方便。 文件包含常见函数 include() ...
    99+
    2023-09-05
    php 安全 web安全
  • 文件包含漏洞总结
    文件包含漏洞总结 CTF中文件包含漏洞0x01 什么是文件包含漏洞0X02 文件包含漏洞的环境要求0X03 常见文件包含函数0X04 PHP伪协议1、PHP:...
    99+
    2023-09-29
    php 文件包含漏洞
  • ctf文件包含+伪协议总结
    基本原理 后端编程人员一般会把重复使用的函数写到单个文件中,需要使用时再直接调用此文件即可,该过程也就被称为文件包含。文件包含的存在使得开发变得更加灵活和方便,但同时也带了安全问题,导致客户端可以远程调用文件,造成文件包含漏洞。这个漏洞在p...
    99+
    2023-09-01
    php 开发语言
  • pte 文件包含
    pte 文件包含 文件包含实验1 文件包含实验2 文件包含实验3 文件包含实验1 http:/vulnerabilities/fu1.phpfile=php://filter...
    99+
    2023-09-20
    php 安全 web安全
  • CISP-PTE练习篇(基础题目三:文件包含)
    本文仅当作练习记录使用。 开始答题,答案在根目录下的key.php文件中。 php://filter       可以访问本地的文件(通过指定末尾的文件,可以读取经base64编码后的文件源码,之后再base64解码一下就行) ...
    99+
    2023-08-31
    php 开发语言
  • 攻防世界 文件包含总结思路
    0x00 文件包含形成原因: 文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。php 中引发文件包含漏洞的通常是以...
    99+
    2023-09-17
    php 安全 web安全
  • 【网络安全】文件包含漏洞总结
    目录: 介绍文件包含漏洞分类 LFIRFIPHP 的文件包含函数漏洞示例代码利用任意文件读取 使用 PHP 封装协议 php://filterphp://inputRFI getshellLFI+文件上传 getshellL...
    99+
    2023-09-02
    安全 web安全 经验分享 网络安全 漏洞复现
  • 文件包含漏洞利用之本地包含配合文件上传包含图片马&&文件包含漏洞利用之远程包含Webshell
    实验原理 文件上传漏洞在绕过内容检测的时候,会制作图片马上传,但是图片马在上传之后,又不能解析。如果网站同时存在文件包含漏洞,利用文件包含无视后缀名,只要被包含的文件内容符合PHP语法规范,任何扩展名都可以被PHP解析的特点来解析上传的图片...
    99+
    2023-10-26
    php 开发语言
  • 文件包含漏洞
    目录 🌻一、理论🍎1.什么是文件包含漏洞?🍎2.文件包含漏洞原因🍎3.文件包含函数🍎4.文件包含漏洞的分类&#x...
    99+
    2023-08-31
    web安全 php 文件包含漏洞
  • 文件包含函数
    将代码传入文件,从而直接执行文件中的代码 通常文件包含漏洞产生于文件包含函数 LFI:Local File Inclusion,本地文件包含漏洞,大部分情况下遇到的文件包含漏洞都是LFI RFI:Remote File Inclusion,...
    99+
    2023-09-01
    php web安全 开发语言
  • 浅谈文件包含之包含pearcmd.php漏洞
    文件包含之包含pearcmd.php漏洞 1.概念 pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的; 在7.4及以后,需要我们在编译PHP的时候指定--wit...
    99+
    2023-09-02
    php web安全 安全
  • ctf攻防渗透-文件包含-文件包含漏洞详解
    文件包含概念 程序开发人员会把重复使用的函数、变量、类等数据写到单个文件中,需要使用到里面的数据时直接调用此文件,而无需再次编写,这种文件调用的过程称为文件包含。 文件包含相关函数 require( ...
    99+
    2023-09-18
    安全 web安全
  • 泰山杯:文件包含
    很明显的一个文件包含点,而且还包含了check.php文件 尝试使用伪协议去读取check.php文件内容 filename=php://filter/read=convert.base64-enc...
    99+
    2023-09-10
    php 开发语言
  • 文件包含-DVWA练习
    文件包含-DVWA练习 一.前言 首先,我们需要大概知道文件包含是什么,可能会产生哪些漏洞,如何利用这些漏洞 看相关文章文件包含讲解 环境:win10+phpstudy 二.DVWA文件包含 准备工作...
    99+
    2023-10-21
    web安全 安全 php
  • pearcmd.php文件包含妙用
    文章目录 pearcmd.php文件包含妙用利用条件原理利用config-createinstalldownload pearcmd关键词被ban参考 pearcmd.p...
    99+
    2023-10-27
    php 开发语言 web安全 安全
  • html文件包含什么
    摘要:html(超文本标记语言)是一种代码,定义网页结构和内容。它包含文档类型声明、html 标签、元素、属性、文本内容、注释和脚本。 HTML 文件的内容 HTML(超文本标记语言)...
    99+
    2024-04-05
  • 【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell
    文件包含漏洞的利用 读取敏感文件 我们可以利用文件包含漏洞读取任意文件,读取文件的时候有利用条件 目标主机文件存在(目标文件的路径、绝对路径、相对路径) 具有文件可读权限 提交参数http://localhost/include/...
    99+
    2023-09-05
    php 安全 Powered by 金山文档
  • 【网络安全】文件包含漏洞--使用session进行文件包含
    博主昵称:跳楼梯企鹅博主主页面链接:博主主页传送门来源地址:https://blog.csdn.net/weixin_50481708/article/details/126691502...
    99+
    2023-10-06
    前端
  • 文件操作之文件包含漏洞
    目录 本文仅供参考、交流、学习,如有违法行为后果自负 文件包含类型 原理方面 文件包含漏洞原理案例: 必要条件 那么如何去检测漏洞是否存在该漏洞? 白盒 黑盒 类型 本地文件包含 无限制  有限制 远程文件包含 无限制 有限制  利用 协议...
    99+
    2023-10-24
    php 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作