PHP文件出现漏洞的原理及解决方案

美创科技
关注

2、PHP远程文件包含漏洞获得网站WebShell

同样还是采用相同的服务器代码,其中PHP配置文件中,allow_url_fopen和allow_url_include两个参数都必须是ON的状态。

目标服务器地址:192.168.20.35

攻击者远程服务器:192.168.210.102

在攻击者个人服务器上,放置了一个恶意文件(index.txt),如下:

image.png


该文件可以向目标服务器上创建一个hack.php脚本文件,并向其中写入一句话木马(已被Base64加密),这里要注意的是恶意文件不能是php可解析的扩展名,也就是不能以php结尾。

image.png

攻击者通过远程文件包含漏洞,触发该文件(在file参数处写入http://192.168.210.35/index.txt即可),如下:

image.png


然后攻击者就可以通过连接工具,远程连接木马并获得网站WebShell

image.png

防御方案

1、设置白名单

代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

2、过滤危险字符

由于Include/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini),在Linux环境中可以通过”../../”的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

3、设置文件目录

PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

4、关闭危险配置

PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。

5、提升安全开发意识

任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范;在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存