漏洞场景
类似于metinfo_5.0.4实现了动态包含,有存在文件包含漏洞的危险。
类似于文件读取的URL,可能存在文件包含。
漏洞描述
攻击者可以利用任意文件包含漏洞读取文件、执行代码和对服务器造成危害。
程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。
程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用(包含),但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。
几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在PHP 的Web 应用中居多,在JSP/ASP/ASP.NET 程序中比较少。
漏洞原理
PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,有类似于以上测试代码的设计,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,Web 应用没有进行严格的校验,浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。
.动态包含
.被包含文件路径可控
特点:
.读取文件
.执行代码
漏洞危害
攻击者利用文件包含漏洞,可以:
.读取文件
.执行PHP代码
.直接获取网站后门
.控制网站
.控制服务器
漏洞评级
高危
漏洞验证
漏洞利用
略
漏洞防御
.尽量少的使用动态包含;
.严格过滤被包含文件的路径;
.将参数allow_url_include 设置为Off;
.使用参数open_basedir 限定文件访问范围
open_basedir = c:\phpstudy_2016\www\
漏洞案列
.metinfo_5.0.4_lfi
.dvwa_lfi_high_getshell