Web漏洞-文件包含漏洞超详细全解(附实例)

这篇具有很好参考价值的文章主要介绍了Web漏洞-文件包含漏洞超详细全解(附实例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、导图

二、文件包含漏洞

1.脚本代码

2.原理演示

3.漏洞成因

4.检测方法

5.类型分类

三、本地文件包含漏洞的利用

<无限制本地文件包含>

<有限制本地文件包含>

四、远程文件包含漏洞的利用

<无限制远程文件包含>

<有限制远程文件包含>

五、协议的玩法

<读取文件内容>

<执行代码>

<写入一句话后门木马>

​六、南邮杯CTF实例

​七、i春秋百度杯实例

八、某CMS文件包含漏洞实例


一、导图

Web漏洞-文件包含漏洞超详细全解(附实例)

二、文件包含漏洞

1.脚本代码

        文件包含各个脚本代码。

ASP,ASPX,JSP,PHP等

<!-—#include file="1.asp " -->

<!--#include file="top.aspx"-->

<c:import url="http://lthief.one/1.jsp">

<jsp:include page="head .jsp" / >

<%@ include file="head.jsp" %>

<?php Include ( 'test.php ' ) ?>

2.原理演示

        (1)创建一个名为include.php的php文件,文件内的代码如下图所示。

Web漏洞-文件包含漏洞超详细全解(附实例)

        (2)创建一个名为1.txt的文件,文件内的内容如下图所示。

Web漏洞-文件包含漏洞超详细全解(附实例)        (3)直接访问include.php文件,添加filename的参数值为1.txt。可以看到网站成功执行了文件1.txt内的php代码。

Web漏洞-文件包含漏洞超详细全解(附实例)

        (4)但是如果我们直接访问1.txt文件,网站就只会将其当作一串文本进行输入。而当我们利用了文件包含漏洞进行访问时,网站就会将其当作代码进行执行。

Web漏洞-文件包含漏洞超详细全解(附实例)

        总结:将指定文件内的内容以网站脚本代码类型进行执行。如:如果网站是php的,就当作php代码进行执行;如果网站是jsp的,就当作jsp代码进行执行;

3.漏洞成因

        (1)可空变量:$filename。

        (2)漏洞函数:include()。

4.检测方法

Web漏洞-文件包含漏洞超详细全解(附实例)

        (1)白盒检测:代码审计。

        (2)黑盒检测:采用漏洞扫描工具,或者搜素公开漏洞,或者查看网址后面的参数,是否接收的是文件。

5.类型分类

Web漏洞-文件包含漏洞超详细全解(附实例)

        (1)本地包含:只包含本地的文件。

        (2)远程包含:包含互联网可以访问到的文件,危害更大。

        (3)无限制和有限制:两种包含类型都存在无限制和有限制的两种情况,无限制就是没有限制直接拿来用就可以,有限制是可能会存在一些干扰,需要用到一些特殊的方法进行绕过。

三、本地文件包含漏洞的利用

<无限制本地文件包含>

Web漏洞-文件包含漏洞超详细全解(附实例)

1.当我们要进行跨目录的文件包含时,就需要用到“../”符号来向上一级进行跳转了。

2.比如我们要对下图路径下的www.txt进行文件包含。

Web漏洞-文件包含漏洞超详细全解(附实例)

3.我们需要将参数的值设为如下图所示的样式。

Web漏洞-文件包含漏洞超详细全解(附实例)

<有限制本地文件包含>

Web漏洞-文件包含漏洞超详细全解(附实例)

1.这里的代码比上面无限制的代码多了“.html”。

2.当我们此时再对1.txt文件进行文件包含的时候,就相当于包含了1.txt.html。

Web漏洞-文件包含漏洞超详细全解(附实例)

3.那么面对这种情况我们该怎么办呢?下面介绍几种绕过的方法。

4. 第一种:%00截断:此方法要求php版本<5.3.4。

        只需在文件末尾添加“%00”来将后面的“.html”进行截断。

        可以看到下图进行%00截断后成功将文件中的代码进行了执行。 

Web漏洞-文件包含漏洞超详细全解(附实例)

5. 第二种:长度截断:windows,点号需要长于250;linux,点号需要长于4096。

        这种方法类似与waf绕过过程中的垃圾数据填充的方法。

        利用垃圾数据进行填充,达到对应服务器系统文件命名的最大长度,从而将“.html”挤出,让其无法添加。

        只需在文件末尾添加类似“/./././././././.·····”、“..........·····”等的垃圾数据来将后面的“.html”挤出。

        可以看到下图进行长度截断后成功将文件中的代码进行了执行。 

Web漏洞-文件包含漏洞超详细全解(附实例)

Web漏洞-文件包含漏洞超详细全解(附实例)

四、远程文件包含漏洞的利用

        如果代码里面有限制只能包含本地文件的话,就不会造成远程文件包含漏洞。

        如果代码里面没有限制,并且搭建平台上的设置里也没有设置不允许包含远程远程文件的话,就可能造成远程包含文件漏洞。

        在php里就有这样一个开关——allow_url_include。可以通过phpinfo()来查看到。

Web漏洞-文件包含漏洞超详细全解(附实例)

         如果这个开关是开启状态,就允许地址的远程请求。

<无限制远程文件包含>

Web漏洞-文件包含漏洞超详细全解(附实例)

1.首先演示无限制的远程文件包含。

2.访问如下图所示的url可以看到这个文件内包含这样一串内容。

Web漏洞-文件包含漏洞超详细全解(附实例)

3.访问这个远程的文件,可以看到网站对远程文件内的内容进行了执行。

Web漏洞-文件包含漏洞超详细全解(附实例)

4.我们将远程文件内的代码修改为一个后门代码。

Web漏洞-文件包含漏洞超详细全解(附实例)

5.再次进行访问,可以看到前面的“ni shi gej ib!”成功被执行了,而后面的后门代码却看不到,这是正常现象,此时的后门代码其实已经被执行了,执行效果就是空白的而已。 

Web漏洞-文件包含漏洞超详细全解(附实例)

6.使用工具“菜刀”连接后门代码。

7.打开工具后将地址以及密码进行输入并修改脚本类型为php,然后点击添加。

Web漏洞-文件包含漏洞超详细全解(附实例)

8.可以看到成功连接上了后门文件。

Web漏洞-文件包含漏洞超详细全解(附实例)

<有限制远程文件包含>

Web漏洞-文件包含漏洞超详细全解(附实例)

1.这里的代码比上面无限制的代码多了“.html”。

2.当我们此时再对远程文件进行文件包含的时候,就失败了。

Web漏洞-文件包含漏洞超详细全解(附实例)

 3.那么面对这种情况我们该怎么办呢?下面介绍几种绕过的方法。

4. 第一种:末尾加%20

Web漏洞-文件包含漏洞超详细全解(附实例)

 5. 第二种:末尾加%23

Web漏洞-文件包含漏洞超详细全解(附实例)

 6. 第三种:末尾加?

Web漏洞-文件包含漏洞超详细全解(附实例)

五、协议的玩法

        优秀文章:https://www.cnblogs.com/endust/p/11804767.html

<读取文件内容>

1.在参数后输入下面的内容来对1.txt文件进行读取。

Web漏洞-文件包含漏洞超详细全解(附实例)

2.读取到的内容是经过base64加密过的(防止乱码),经过解密后即可得到文件内容本来的样子。 

Web漏洞-文件包含漏洞超详细全解(附实例)

<执行代码>

1.在参数后输入下面的内容,同时在post部分写入要执行的代码。

Web漏洞-文件包含漏洞超详细全解(附实例)

Web漏洞-文件包含漏洞超详细全解(附实例)

<写入一句话后门木马>

1.在参数后输入下面的内容,同时在post部分写入要执行的代码。

Web漏洞-文件包含漏洞超详细全解(附实例)

2.查看网站目录,可以看到“shell.php”后门代码被成功写入了。

Web漏洞-文件包含漏洞超详细全解(附实例)

六、南邮杯CTF实例

        地址:asdf

1.打开网站。

Web漏洞-文件包含漏洞超详细全解(附实例)

2.点击表述文字。

Web漏洞-文件包含漏洞超详细全解(附实例)

3.首先判断其可能存在文件包含漏洞,因为最后参数部分是“file=show.php”,很明显大概率是文件参数。 

Web漏洞-文件包含漏洞超详细全解(附实例)

4.因为这里展示的是show.php文件,因此我们想到直接去访问show.php文件,可以看到当我们直接访问show.php时,网站返回的也是同样的内容。

Web漏洞-文件包含漏洞超详细全解(附实例)

 5.因此我们可以判断出show.php的内容就是text123,放在参数的后面无非就是将其进行包含之后再执行输出,到这里我们就不难判断出这里考的明显就是文件包含漏洞了。

6.我们首先来判断它的操作系统,将php改为phP然后访问,可以看到网页返回错误,因此判断其是linux操作系统

Web漏洞-文件包含漏洞超详细全解(附实例)

 7.因此我们在这里执行linux下的ls命令,可以看到网页返回了下面的内容。

Web漏洞-文件包含漏洞超详细全解(附实例)

8.我们换一条命令执行,网页依然返回同样的内容,说明网站对此存在拦截。

Web漏洞-文件包含漏洞超详细全解(附实例) 9.这个方法不可行,因此我们想到协议的玩法,想到下面的方法,首先尝试读取index.php,发现读取成功了。

Web漏洞-文件包含漏洞超详细全解(附实例)

10.将读取到的内容进行解码。

Web漏洞-文件包含漏洞超详细全解(附实例)

11.将解码到的文件放入一个文本文档里进行查看,因为在上面的软件里查看格式不是很清楚。

12.成功获取到了flag值。

七、i春秋百度杯实例

1.打开靶场可以看到下面的内容。

Web漏洞-文件包含漏洞超详细全解(附实例)

2.阅读页面内给出的代码可以知道它的意思为:如果接收到了path变量,就用include将接收到的值进行包含,否则就执行下面的phpinfo.php。

3.进行验证一下,发现我们分析的没有问题。

Web漏洞-文件包含漏洞超详细全解(附实例)

4.我们首先来包含index.php文件,可以看到成功进行了读取。

Web漏洞-文件包含漏洞超详细全解(附实例) 5.判断其操作系统——>linux系统。

Web漏洞-文件包含漏洞超详细全解(附实例)

6.采用linux的命令来读取目录。

Web漏洞-文件包含漏洞超详细全解(附实例)

 7.因为后面的两个文件我们已经读取过了,所以我们来读取第一个文件来查看它的内容。

 8.发现什么也没读取到。

Web漏洞-文件包含漏洞超详细全解(附实例)

9.查看网页的源代码,可以看到flag在这里。 

Web漏洞-文件包含漏洞超详细全解(附实例)

八、某CMS文件包含漏洞实例

1.打开网站可以看到下面的页面。

 2.那么我们是如何发现这个网站的漏洞的呢?

3.首先我们知道它是ekucms了,因此我们可以先直接到网上搜索这个cms的漏洞,有我们就直接拿来利用,没有我们就将原码下载下来自己进行分析。 

4.可以看到确实是存在漏洞的。

Web漏洞-文件包含漏洞超详细全解(附实例)

5.找到一篇文章,可以得知它的思路是: 因为这个cms不存在文件上传,所以只能访问网站内的固有文件。但是因为这个cms存在本地文件包含漏洞,所以我们可以将一句话木马写到网站的日志里,然后利用本地文件包含漏洞包含这个日志文件,然后再利用菜刀等工具进行连接即可。

Web漏洞-文件包含漏洞超详细全解(附实例)

6.将文章内的url进行复制,然后放到我们的浏览器内修改后进行访问 。

Web漏洞-文件包含漏洞超详细全解(附实例)

7.可以看到网页返回了错误信息,但是此时url内容已经被写入到了网站的日志里。 

        解释:为什么这个后门代码代码的两侧不用加"<?php?>",因为在进行文件包含的时候,回根据网站的脚本类型来执行文件内的内容,而这里网站的脚本类型本身就是php,所以不加"<?php?>"同样也会按照php代码进行执行。

Web漏洞-文件包含漏洞超详细全解(附实例)

Web漏洞-文件包含漏洞超详细全解(附实例)8.该日志是以时间日期命名的,首先访问下面的url来触发后门代码。

Web漏洞-文件包含漏洞超详细全解(附实例)

 8.添加参数来进行测试,可以看到成功将参数代码进行了执行。

Web漏洞-文件包含漏洞超详细全解(附实例)

 9.到这里我们基本就可以执行任意的代码了,也就成功拿下了网站的权限。文章来源地址https://www.toymoban.com/news/detail-424498.html

到了这里,关于Web漏洞-文件包含漏洞超详细全解(附实例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

    我们可以利用文件包含漏洞读取任意文件,读取文件的时候有利用条件 目标主机文件存在(目标文件的路径、绝对路径、相对路径) 具有文件可读权限 提交参数 http://localhost/include/include.php?path=C:windowssystem32driversetchosts ,读取本地host文件 提交参数 http://localhost/include/includ

    2024年02月11日
    浏览(17)
  • web安全-文件上传漏洞-图片马制作-相关php函数讲解-upload靶场通关详细教学(3)

    制作图片马有两种方法,一种是文本方式打开,末尾粘贴一句话木马,令一种是使用命令进行合成。 方法1 首先准备好一个图片(这里是1.png)。 将一个图片以文本格式打开(这里用的Notepad++,以记事本方式打开修改也能连接成功,不过修改后图片无法正常显示了)。 后面粘

    2024年02月06日
    浏览(21)
  • 文件包含漏洞及漏洞复现

    程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设

    2024年02月10日
    浏览(17)
  • 文件包含实例

    php伪协议中的过滤器 转换过滤器 [0x00] convert.iconv.UCS-2LE.UCS-2BE 这里引入usc-2的概念,作用是对目标字符串 每两位进行一反转 ,值得注意的是,因为是两位所以字符串位数需要保持在 偶数位 上。 ①Python脚本交换奇偶位 ②php代码,再次进行相同转换 查看源代码 php伪协议 把整

    2024年02月15日
    浏览(9)
  • 文件包含漏洞学习小结

    目录 一、介绍 二、常见文件包含函数 三、文件包含漏洞代码举例分析 四、文件包含漏洞利用方式 4.1 本地文件包含 1、读取敏感文件 2、文件包含可运行的php代码 ①包含图片码 ②包含日志文件 ③包含环境变量getshell ④临时文件包含 ⑤伪协议 4.2 远程文件包含 4.3 文件包含常

    2024年02月09日
    浏览(11)
  • 文件包含漏洞全面详解

    1.文件包含漏洞概述 和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。 什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需

    2024年02月02日
    浏览(10)
  • 文件包含漏洞利用思路

    通过 PHP 函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,导致意外的文件泄漏甚至恶意代码注入。 php中常见的文件包含函数有以下四种: include() require() include_once() require_once() include与require基本是相同的,除了错误处理方面: include(),只生成

    2024年02月16日
    浏览(16)
  • 文件包含漏洞相关协议详解

    今天继续给大家介绍渗透测试相关知识,本文主要内容是文件包含漏洞相关协议详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备进行渗透测试! 首先,我们来介绍以下文件

    2024年02月13日
    浏览(11)
  • 文件包含漏洞

    漏洞讲解 漏洞过程解析 在使用include等包含函数时,当对包含文件的来源过滤不严格,那么会包含到恶意文件,攻击者将会通过这个恶意文件来到达他想要达到的相应目的。 引用一句网上看到的话:文件包含漏洞和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,

    2024年02月19日
    浏览(7)
  • pearcmd文件包含漏洞

    pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定 --with-pear 才会安装 不过,在Docker任意版本镜像中,pcel/pear都会被默认安装,安装的路径在 /usr/local/lib/php 原本pear/pcel是一个命

    2024年01月21日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包