首页 » 网站建设 » 解析php文件内容技巧_PHP文件包含马脚事理分析 美创安然实验室

解析php文件内容技巧_PHP文件包含马脚事理分析 美创安然实验室

访客 2024-12-19 0

扫一扫用手机浏览

文章目录 [+]

漏洞简介

文件包含漏洞(File Inclusion)是一种常见的依赖于脚本运行从而影响Web运用的漏洞。
严格来说,文件包含漏洞是"代码注入"的一种,许多脚本措辞,例如PHP、JSP、ASP、.NET等,都供应了一种包含文件的功能,这种功能许可开拓者将可利用的脚本代码插入到单个文件中保存,在须要调用的时候可以直接通过载入文件的办法实行里面的代码,但是如果攻击者掌握了可实行代码的路径,也便是文件位置时,攻击者可以修正指定路径,将其指向一个包含了恶意代码的恶意文件。

文件包含漏洞常日都会使Web做事器的文件被外界浏览导入信息透露,实行的恶意脚本会导致网站被修改,实行造孽操作,攻击其他网站,获取WebShell等严重危害。

解析php文件内容技巧_PHP文件包含马脚事理分析  美创安然实验室

漏洞产生事理

在上一节的描述中我们提到,攻击者通过掌握可实行代码的路径就可以实现文件包含漏洞,这只是一个对整体攻击流程的简化描述,在实际情境下,做事器解析实行php文件时通过包含函数可以加载另一个文件中的php代码,当被包含的文件中存在木马时,就意味着木马程序会在做事器上加载实行。

解析php文件内容技巧_PHP文件包含马脚事理分析  美创安然实验室
(图片来自网络侵删)

以是产生文件包含漏洞的根本缘故原由在于开拓者是否对通过包含函数加载的文件进行了严格且合理的校验,在PHP中统共有四种文件包含函数:

1)Include():包含并运行指定的文件,只有在程序实行到include时才包含文件,且当包含文件发生缺点时,程序警告,但会连续实行。

2)Require():只要程序一运行就会实行该包含文件函数,当包含文件发生缺点时,程序直接终止实行。
3)Include_once():和include()类似,不同之处在于include_once会检讨这个文件是否已经被导入,如果已导入、下文便不会再导入。
4)Require_once():和require()类似,不同处在于require_once也是与include_once一样只导入一次。

根据被包含文件的位置不同,PHP文件包含漏洞可以分为本地文件包含漏洞(Local File Inclusion,LFI),和远程文件包含漏洞(Remote File Inclusion,RFI)。
顾名思义,所谓确当地文件包含漏洞指的是攻击者通过掌握包含文件函数,如include(),require()等,加载做事器本地上的PHP脚本文件,当然如果本地的PHP脚本文件都是一些对系统无害的功能性文件,攻击者也无法进行进一步的利用,但若是攻击者能够合营任意文件上传漏洞,将恶意文件上传进做事器中,再通过本地文件包含实行该恶意脚本就可以达到得到网站掌握权的目的。

而远程文件包含漏洞是指攻击者可以通过文件包含函数加载其他做事器上的PHP文件,在实际项渗透目中,攻击者可以在自己的做事器上存放一个可实行的恶意文件,然后通过目标网站存在远程文件包含漏洞来加载干系文件,实现任意命令实行。

漏洞复现

01 PHP本地文件包含漏洞获取做事器敏感信息

搭建测试环境,为了方便演示,我们大略设计了一个做事器上的PHP脚本代码,如下:

个中PHP配置文件中,allow_url_fopen和allow_url_include两个参数默认是ON的状态。
(在本地文件包含漏洞中,allow_url_fopen必须是ON的状态allow_url_include的状态可以不用必须指定。

通过访问该资源,可以判断利用了文件包含函数。

做事器直接将file参数当作文件包含的参数路径,并未做任何过滤,攻击者可以直接在file参数后面填写做事器敏感文件路径,从而得到做事器敏感信息,例如在file后加上../../MYSQL/my.ini即可读取到做事器本地的Mysql配置文件。

02 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。

防御方案

01设置白名单

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

02过滤危险字符

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

03设置文件目录

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

04关闭危险配置

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

05提升安全开拓意识

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

本文转自杭州美创科技有限公司"大众号(第59号),如需二次转载,请咨询marketing@mchz.com.cn。

相关文章

Kbus协议,连接未来智能交通的桥梁

随着科技的飞速发展,智能交通系统逐渐成为城市交通发展的新趋势。在我国,Kbus协议作为一种重要的智能交通通信协议,发挥着越来越重要...

网站建设 2024-12-23 阅读0 评论0

K课程,开启未来教育的关键钥匙

随着科技的飞速发展,教育领域也迎来了前所未有的变革。在这个信息爆炸的时代,如何培养适应未来社会需求的创新型人才,成为了教育界关注的...

网站建设 2024-12-23 阅读0 评论0

JSP流对象在Web开发中的应用与优化

随着互联网技术的飞速发展,Web开发已经成为我国IT行业的热门领域。Java Server Pages(JSP)作为一种流行的动态...

网站建设 2024-12-23 阅读0 评论0

JSP推送,技术革新,构建未来智能生活

随着互联网技术的飞速发展,我们的生活正在发生翻天覆地的变化。在众多技术中,JSP推送技术以其高效、便捷的特点,逐渐成为构建未来智能...

网站建设 2024-12-23 阅读0 评论0