PHP文件出现漏洞的原理及解决方案
2、PHP远程文件包含漏洞获得网站WebShell
同样还是采用相同的服务器代码,其中PHP配置文件中,allow_url_fopen和allow_url_include两个参数都必须是ON的状态。
目标服务器地址:192.168.20.35
攻击者远程服务器:192.168.210.102
在攻击者个人服务器上,放置了一个恶意文件(index.txt),如下:
该文件可以向目标服务器上创建一个hack.php脚本文件,并向其中写入一句话木马(已被Base64加密),这里要注意的是恶意文件不能是php可解析的扩展名,也就是不能以php结尾。
攻击者通过远程文件包含漏洞,触发该文件(在file参数处写入http://192.168.210.35/index.txt即可),如下:
然后攻击者就可以通过连接工具,远程连接木马并获得网站WebShell
防御方案
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、提升安全开发意识
任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范;在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论