ctf php文件包含 (你知道什么是ctf php文件包含吗?)
随着互联网的发展,网络安全问题愈发严重,因而各种安全技术也得到了广泛应用。实战 CTF 演练中,文件包含也是一道经典题目之一。其中,CTF PHP 文件包含作为最为常见的一种组合而被广泛使用。本文将对 CTF PHP 文件包含的基本定义和攻防技术进行简要介绍。
一、概念
CTF 文件包含起源于网站开发中最常见的漏洞之一:文件包含漏洞,它是一款利用被动性文件包含不足导致的漏洞攻击工具。顾名思义,CTF PHP 文件包含即采用 PHP 作为攻击载体,执行 PHP 远程文件的脚本,在目标站未授权的情况下获取对方服务器文件的内容,实现对方服务器的攻击。
二、CTF PHP 文件包含的攻击
(一)目录遍历漏洞
一般来说,页面中通过将参数传入到 include 函数中渲染,这种情况下文件要包含的参数一定是直接给出的,并不可控,攻击者很难进行利用,但如果,你直接接收参数,然后再作为 include 函数参数去渲染文件,则此处便存在目录遍历漏洞,攻击者可在访问参数中注入其获取文件的参数,再包含 web 服务器文档目录下任意位置的文件,造成严重安全问题。
(二)php://filter 远程文件读取
除了通过直接读取远程文件包含外,通过配合 php://filter 来进行远程文件读取也是一个不错的选择。在使用时只需要将地址替换成php://filter/convert.base64-encode/resource=path 即可。这样读入后的文件,若是下放到包含语句中,便可获得代码。
(三)GET 参数回退利用
在 PHP 5.3 版本及以前,参数中使用 null 字节进行字符串截断,可极大的扩大攻击面,但目前大多数的服务器都被防护起来,此种方式很难使用有效。
三、CTF PHP 文件包含的防御
使用绝对路径:推荐使用绝对路径进行文件包含,防止意外包含,这样不仅有助于防止被包含文件所在目录移动的情况。相对路径合适则继续使用。要是非常确定被包含文件的物理路径,可使用 realpath 函数获取物理路径,同时设立白名单控制其访问的范围,增强安全性。
设置 openbasedar:设置 openbasedar 并不是让你放心地去使用 include 函数,但它可有效防止文件包含漏洞导致的任意代码执行等风险。在 PHP.INI 核心配置文件中,通过配置 openbasedir,可以将 PHP 运行时的文件访问权限限制在某个目录以内。若在 openbasedir 下的访问,被攻击者自己掌控,此时,外层限制了攻击者建立连接和进行远程操作时所能够利用的文件或目录范围,从而达到控制引用的文件和被包含文件的目的。
总的来说,CTF PHP 文件包含问题目前在互联网安全领域基本上就已跑得飞快,可避免的主要还是因为对运行环境的了解和维护调整。在使用 PHP 时,一定要严格遵守规范,避免额外的操作,保证代码的安全。