首页 > 编程知识 正文

文件包含漏洞的一般特征,文件包含漏洞利用

时间:2023-05-04 15:55:22 阅读:195476 作者:2034

1、文件包含漏洞原理。 原理: 在通过PHP的相应函数(比如include())引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入 文件包含漏洞的形成,需要满足两个条件:  1、 include()等函数通过动态变量的方式引入需要包含的文件。 2、用户能够控制这个动态变量。 将一个文件加载当前文件中进行执行: 例:      Include      Require      Include_once      Require_once2、文件包含漏洞两种方式。 本地文件包含(LFI): 能够读取或执行包含本地文件的漏洞,称为本地文件包含漏洞。 远程文件包含: 1、如果php.ini的配置选项allow_url_include为ON的话,文件包含函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞。利用远程文件包含漏洞,可以直接执行任意命令。2、如果PHP的配置选项中,allow_url_include为ON的话,include和require这样的文件包含函数是可以加载远程文件的。远程文件漏洞,可以直接用来执行任意命令。3、文件包含漏洞危害。 1、敏感信息泄露 2、获取Webshell 3、任意命令执行4、文件包含漏洞进阶-PHP协议。 PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。 File协议:file:///c:\windows\system32\drivers\etc\hostshttp://192.168.0.102\1.txt5、远程文件包含   包含的是txt文件。 文件包含的时候,无视文件格式,只要文件中有php代码,就会被执行。 浏览器 请求  192.168.0.102/phpinfo.php   得到的是php代码解析后的结果  是从远端的服务器进行解析的。6、文件包含漏洞,包含的是一张图片。 只要图片中包含php代码就可以解析成功(图片马   ---- 文件上传漏洞中上传的图片马)7、文件包含漏洞防御。 设置白名单 代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。 过滤危险字符 由于Include/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini),在Linux环境中可以通过”../../”的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。 设置文件目录 PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。 关闭危险配置 PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。注意:任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范;在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。