黑客
登录
客服
网络安全
黑客资讯

文件包含漏洞的原理解析

围观人数:374 日期:2020-9-9 14:03:19

一、什么是文件包含?

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。

二、文件包含函数

PHP中文件包含函数有以下四种

require()
require_once()
include()
include_once()

三、漏洞产生的原因

文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
例:


<?php
    $filename  = $_GET['filename'];
    include($filename);
?>


$_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数,攻击者可以修改
$_GET['filename']的值,执行非预期的操作。

四、本地文件包含漏洞

以下代码是最简单的一个文件包含示例,程序没有对要包含的文件进行验证,导致可控。


<?php
    $file = $_GET['file'];
    if(isset($file)){
        include("$file");
    }else{
        echo "file fail";
    }
 ?>



内容输出如下图:

这样的代码过于危险,可以轻易的得到账号和密码,所以很少有人这么写,但有些防护措施是很差的。

五、远程文件包含漏洞

1.包含读出目标机上其它文件
由前面我们可以看到,由于对取得的参数page没有过滤,于是我们可以任意指定目标主机上的其它敏感文件,例如在前面的警告中,我们可以看到暴露的绝对路径(vhost/wwwroot/php/),那么我们就可以多次探测来包含其它文件,比如指定URL为:http://hi.baidu.com/m4r10/php/index.php?page=./txt.txt可以读出当前路径下的txt.txt文件,也可以使用…/…/进行目录跳转(在没过滤…/的情况下);也可以直接指定绝对路径,读取敏感的系统文件,比如这个URL:http://hi.baidu.com/m4r10/php/index.php?page=/etc/passwd,如果目标主机没有对权限限制的很严格,或者启动Apache的权限比较高,是可以读出这个文件内容的。
2.远程文件包含可运行的PHP木马
如果POST的数据是执行写入一句话木马的PHP代码,就会在当前目录下写入一个木马。


<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>


下面就可以用菜刀或者是蚁剑了。

最新文章

推荐文章

热门文章

黑客技术 黑客软件 黑客教程 黑客书籍

关于我们 | 免责声明 | 学员守则 | 广告服务 | 联系我们

©2013-2020 xf1433.com 版权所有

本站资源仅供用于学习和交流,请遵循相关法律法规