Pikachu靶场之文件包含漏洞详解
前言
本篇文章用于巩固对自己文件包含漏洞的学习总结,其中部分内容借鉴了以下博客。
链接: pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)
链接: 【文件包含】文件包含漏洞知识总结
文件包含漏洞简述
1.漏洞描述
和SQL注入等攻击方式一样,文件包含漏洞也是一种“注入型漏洞”,其本质就是输入一段用户能够控制的脚本或者代码,并让服务器端执行。
什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程就叫做包含。
有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
以PHP为例,常用的文件包含函数有以下四种:
include(),require(),include_once(),require_once()
区别如下:
- require(),找不到被包含的文件时会产生致命错误,并停止脚本运行。
- include(),找不到被包含的文件时只会产生警告,脚本将继续运行。
- include_once()与include()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
- require_once()与require()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
2.漏洞原因
include()函数并不在意被包含的文件是什么类型,只要有php代码,都会被解析出来,如果网站有文件包含漏洞,jpg文件就可以被当作php文件进行解析。
3.漏洞危害
1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。
因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。
4.如何防御
1、使用str_replace等方法过滤掉危险字符
2、配置open_basedir,防止目录遍历
<
本文详细讲述了Pikachu平台上关于文件包含漏洞的实战演练,涉及本地与远程文件包含,以及如何利用漏洞读取隐藏文件、不同目录和系统文件,同时介绍了防御措施如过滤字符、配置限制和升级PHP版本。
最低0.47元/天 解锁文章
1815

被折叠的 条评论
为什么被折叠?



