侵权投诉
订阅
纠错
加入自媒体

PHP文件包含漏洞原理分析|美创安全实验室

2020-08-19 09:59
美创科技
关注

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、提升安全开发意识

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

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

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    安防 猎头职位 更多
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号