文件包含漏洞的种类
- 本地文件包含
- 远程文件包含
文件包含漏洞的原理
开发人员希望代码更加灵活应用,会将包含的文件设置为变量,用来动态调用,由于这种灵活性可能导致攻击者调用恶意文件,造成文件包含漏洞
文件包含漏洞的实例
本地包含漏洞
我们先写两个php文件
- test.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>文件包含案例</title> </head> <body> <h2><a href="test.php">xigua</a></h2> <a href="./test.php?file=about.php">About Me</a> <p> <?php if (isset($_GET['file'])) { $file=$_GET['file']; include $file; } ?> </p> </body> </html>
- about.php
<?php echo "This is about page!<br>"; echo "I am xigua.<br>"; echo "Thank you!<br>"; echo "flag in flag.txt"; ?>
然后把这两个php文件放在phpStudy里的www目录下,这里我重新创建了一个名为include的文件夹,将两个php文件放到里面
接着进行访问127.0.0.1/include/test.php,看看返回结果
点一下About Me看看,可以看到URL处多了个?file=about.php,这就是文件包含,将about.php文件调用出来
下面让我们看看调用一下其他的本地文件,我自己随便写了一个txt文本文件,让我们来调用看看
上面那种方法是用的相对路径调用的,接下来让我们看看绝对路径的,调用成功
远程包含漏洞
概念:如果应用程序的配置还允许包含远程的其它服务器上的文件,恶意攻击者就有可能构造恶意的脚本然后通过包含并予以执行,进而获取WEB应用的敏感数据或控制权,这种方式称为远程文件包含。简单来说:当包含的文件在远程服务器上时,就形成了远程文件包含。
利用的前提:allow_url_fopen=On且allow_url_include=On(在PHP的配置文件修改)
接着在虚拟机写一个php文件试试,接着查一下IP地址,方便等会远程包含用
访问一下试试看,访问成功(记住要开Apache服务)
以上就是文件包含漏洞的一些讲解