项目9 文件包含漏洞实践.pptx
郑丽
0中园水利水电火版社
Web安全基础及项目实践
项目9文件包含漏洞实践
■任务1认识文件包含漏洞
■任务2使用DVWA平台实践文件包含漏洞
■任务3绕过攻击及防御建议
中园水利水电出版社
项目9文件包含漏洞实践
项目导读
文件包含指的是一种文件调用过程,也就是在一个文件中调用另一个文件的函数。一般情况下,重复使用的函数会定义到单个的文件中,需要使用时直接调用该文件即可,而不需要再重复编写函数。如果没有对文件来源进行严格的审查,就可能会导致调用恶意文件,执行恶意命令,从而造成文件包含漏洞。本项目将介绍文件包含漏洞的原理,使用实例来模拟文件包含漏洞的攻击过程及绕过攻击方法,并探讨文件包含漏洞的防御措施。
项目9文件包含漏洞实践
教学目标
·掌握文件包含漏洞的原理
·熟悉文件包含漏洞攻击的过程
●熟悉文件包含漏洞攻击的绕过方法
·了解文件包含漏洞的防御方法
任务1认识Web安全
任务描述
·在Web后台开发中,开发人员为了提高效率并使代码看起来更加简洁,通常会把重复使用的函数封装到文件中,然后通过“包含”函数进行文件调用。有些网站会在前端让用户选择需要包含的文件或在前端的功能中使用“包含”功能,但是因为后台开发人员没有对要包含的文件进行严格的安全过滤,攻击者就可能通过修改包含文件的位置而让后台来执行恶意文件或代码。本任务将介绍文件包含漏洞的原理、常见的包含函数,并使用实例来演示文件包含漏洞。
·环境:Windows1064位虚拟机、PhpStudy。
任务1认识Web安全
任务要求
·掌握文件包含漏洞的原理
·熟悉文件包含漏洞攻击的过程
·熟悉文件包含漏洞攻击的绕过方法
·了解文件包含漏洞的防御方法
知识链接
1.文件包含漏洞的原理
文件包含函数的参数没有经过严格的过滤,并且参数可以被用户控制,就可能包含非预期的文件。如果被包含的文件中存在恶意代码,文件被解析执行后会造成严重后果。文件包含漏洞可能会造成服务器网页被篡改、网站被挂马、服务器被远程控制、被安装后门等危害。
文件包含漏洞有本地文件包含漏洞和远程文件包含漏洞两种。其中本地文件包含漏洞又分为无限制本地文件包含漏洞和有限制本地文件包含漏洞。远程文件包含有无限制远程文件包含和有限制远程文件包含。
知识链接
无限制本地文件包含漏洞是指代码中没有为包含文件指定特定前缀或者.php、.html等特定的扩展名,因此攻击者可以利用文件包含漏洞读取本地文件系统中的其他文件获取敏感信息,或者执行其他文件中的代码。有限制本地文件包含漏洞是指代码中为包含文件指定了特定的前缀或者.php、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤才能利用文件包含漏洞进行攻击。常见的有限制本地文件包含过滤绕过的方式主要有%00截断文件包含、路径长度截断文件包含和点号截断文件包含3种。
如果文件的位置并不在本地服务器,而是通过URL形式进行包含其他服务器上的任意文件,执行文件中的恶意代码,这种就是无限制远程文件包含。漏洞的利用条件是需要将PHP配置文件中的allow_url_fopen和allow_urlinclude都设置为On的状态。有限制远程文件包含是指代码中存在特定的前缀或者.php、.html等扩展名过滤,攻击者需要绕过前缀或者扩展名过滤才能执行远程URL文件中的恶意代码。
知识链接
2.常见PHP包含函数
PHP中常见的与文件包含有关的函数有include、require、include_once和r
equire_once,它们的区别如下:
·include():只有代码执行到该函数时才会包含文件进来,如果找不到被包含的文件会给出一个警告,脚本将继续执行。
·include_once():和include()函数功能相似,区别在于当重复调用同一个
文件时,程序只调用一次。
·require():只要程序一执行就包含文件进来,找不到被包含的文件时会产生错误输出,并终止脚本。
·require_once():和require()功能类似,区别在于当重复调用同一个文件时,程序只调用一次。
实现方法
现在使用两个实例来演示本地文件包含漏洞和远程文件包含漏洞。在虚拟机中启动PhpStudy,在网站根目录D:\phpstudy_pro\WWW下创建文件夹
fileinclude,用于存放模拟文件包含的代码和相关文件。
1.本地文件包含
以include()函数为例。首先创建一个文件filel.php,通过GET方式获得file