1、10.文件包含漏洞 SANGFOR安全服务团队 目录 文件包含漏洞原理解析 文件包含示例 文件包含利用 漏洞防范 文件包含漏洞原理解析 文件包含漏洞原理解析 开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时 ,直接调用此文件,而无须再次编写,这种调用文件的过程被称为包含。 文件包含漏洞的产生原因是在通过引入文件时,由于传入的文件名没有经 过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意 外的文件泄露甚至恶意的代码注入。 文件包含漏洞原理解析 因PHP语言所提供的文件包含功能太强大、太灵活,所以大部门文件包含 的漏洞都出现在PHP的程序中。 当被包含的文件在服
2、务器本地时,就形成的本地文件包含漏洞。 当被包含的文件在远程服务器时,就形成的远程文件包含漏洞。 文件包含示例 文件包含示例 通过文件包含读取本地文件 文件包含示例 通过文件包含读取本地文件,“/”表示父目录 文件包含利用 读取敏感文件 常见的敏感信息路径如下: Windows 读取敏感文件 常见的敏感信息路径如下: Linux 远程包含SHELL 远程包含一句话木马: 访问 录下生成shell.php 本地包含配合文件上传 假设已经上传一句话图片木马到服务器中,路径为: /uploadfile/shell.jpg 图片代码: 访问 ,将会在目录下生成shell.php 本地包含配合文件上传
3、假设已经上传一句话图片木马到服务器中,路径为: /uploadfile/shell.jpg 图片代码: 访问 ,将会在目录下生成shell.php 漏洞防范 漏洞防范 1. 严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关 键点就在于被包含文件是否可以被外部控制。 2. 路径限制:限制被包含的文件只能在某一文件夹内,禁止目录跳转字符,如 :“/”。 3. 包含文件验证:验证被包含的文件是否是白名单中的一员。 4. 尽量不要使用动态包含,可以在需要包含的页面固定写好,如: include(“test.php”);。 思考与要点 1.PHP中的四个文件包含函数(require、 require_once、 include、 include_once ),因此在挖掘文件包含漏洞时只需要跟踪这四个函数的代码。 2.PHP远程包含漏洞需要allow_url_include为On 3.挖掘文件包含漏洞需对代码有一定的基础 4.文件包含漏洞大部分出现在PHP中,其他的如ASP,ASP.NET,JSP也会存在,但相 对很少 5.PHP文件包含漏洞总结 http:/drops.wooyun.org/tips/3827