`
phplaber
  • 浏览: 142776 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

远程文件包含

    博客分类:
  • PHP
阅读更多

远程文件包含(Remote File Inclusion),简称RFI,与其对应的是本地文件包含(Local File Inclusion,LFI),它们都是通过PHP的包含函数即:require(),require_once(),include()和include_once()来使用。

 

一般情况下,用户通过包含函数将具有特定功能的函数或类包含到当前脚本中,是没有什么问题的。但是有时候,为了方便,需要动态的包含文件,这就会留下一些攻击漏洞。

 

通常情况下,LFI攻击威胁不大,因为本地服务器上的文件是比较确定的,攻击者想要上传带有攻击性代码的文件也不是件容易的事。RFI攻击才是我们需要防范的事。那么,RFI攻击是如何实现的呢?

 

首先,提供一个存在RFI漏洞的代码示例(index.php):

<?php
// 存在RFI漏洞的代码片段

$file = $_GET['file'];
include $file;

?>

脚本中使用了利用GET方法来动态包含文件,例如:在index.php同级目录下存在include.php文件,我们就可以通过访问类似URL“127.0.0.1/lab/index.php?file=include.php”来包含include.php文件,随后,服务器将解析include.php脚本,将产生的HTML代码传送给浏览器执行。

 

目前看来,还没出现什么安全问题,因为还仅仅只是包含本地文件。如果是包含远程文件,问题就来了,因为攻击者是可以任意编码远程文件的。

 

需要说明的是,进行RFI攻击需要同时具备三个条件(被攻击机器):

  1. allow_url_fopen = On    (默认开启)
  2. allow_url_include = On  (默认关闭)
  3. 被包含的变量前没有目录的限制

同时满足了这三个条件,就等于为攻击者打开了大门。为了清楚地理解,下面给出一个LFI攻击的实例。(说明:在本地搭建一个存在RFI漏洞的环境,通过包含一个远程主机上的文件来攻击这个本地主机)

 

第一步:设置php.ini文件,将“allow_url_fopen ”和“allow_url_include”都开启,重启Apache。

第二步:创建存在RFI漏洞的脚本文件,如上面的index.php。

第三步:在远程主机上创建一个带有攻击性代码的文本文件hack.txt(Just test),注意这个文件不能被服务器解析,如不能为PHP脚本文件。因为只是演示,文本文件被执行就能满足演示效果了。hack.txt文件内容如下:

hahaha,You are hacked. <?php echo $_GET['a']; ?>

将文本文件放在一个拥有登录权限的主机根目录下,文本文件在互联网上的位置为:http://yourhost/hack.txt。

第四步:将攻击文件的URL带入include,进行攻击,如图所示:

 

可以看到,文本文件被执行。接着,我们使用其中的PHP代码,如图所示:

 

可以看到,文本文件中的PHP代码被成功执行,现在只是一个演示,但是已经能说明RFI攻击过程。如果攻击者在文件中放入了系统命令,后果将不堪设想。

 

上面提到,攻击文件不能是PHP文件,所以有些经验丰富的开发者会考虑将被包含文件的扩展名写死,如:

<?php
// 存在RFI漏洞的代码片段

$file = $_GET['file'];
include $file.'.php';

?>

 这样,通过以上方法包含远程文件,系统就会警告找不到被包含文件,从而避免攻击。

 

这种方法确实能起到一定作用,但对那些有经验的攻击者来说,这不是问题。我们知道PHP引擎是有C来实现的,C中空字符就是字符串结束符,因此可以使用空字符将扩展名截断,实现RFI攻击。

 

理解了RFI攻击原理,防御也就简单了。在配置层面,保持PHP的默认设置,将“allow_url_include”关闭;在代码层面,如果一定要动态包含文件,最好明确规定包含哪些文件,进行白名单比对。同时,也可以在包含函数中加入目录限制。

 

 

 

 

 

 

 

 

  • 大小: 4.2 KB
  • 大小: 4.7 KB
  • 大小: 9.4 KB
分享到:
评论

相关推荐

    Web应用安全:远程文件包含利用.pptx

    远程文件包含利用 远程文件包含利用 什么是远程文件包含? 使用远程文件包含(RFI),攻击者可以使web应用程序包含远程文件。对于动态包含外部文件或脚本的web应用程序来说,这是可能的。成功的RFI攻击的潜在web安全...

    通达OA v11.8 getway.php 远程文件包含漏洞.md

    通达OA漏洞合集

    E042-服务漏洞利用及加固-利用CVE-2018-12613漏洞实现远程文件包含.pdf

    E042-服务漏洞利用及加固-利用CVE-2018-12613漏洞实现远程文件包含

    PHP远程文件包含列

    什么是"远程文件包含漏洞"?回答:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。

    Web应用安全:文件包含漏洞简介.pptx

    远程文件包含 文件包含漏洞简介 2、包含漏洞的原理解析 大多数Web语言都支持文件包含操作,其中PHP语言所提供的文件包含功能太强大、太灵活,也就导致文件包含漏洞经常出现在PHP语言中。这里就以PHP语言为例。 PHP中...

    信息安全技术:远程文件包含漏洞.pptx

    信息安全技术基础

    phpmyadmin 远程文件包含漏洞(CVE-2018-12613) - tdcoming'blog QQ group 906

    漏洞背景背景介绍phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具…阅读数 156博文CVE-2018-12613 --- 本地文件包含造成

    使用SMB共享来绕过php远程文件包含的限制执行RFI的利用

    我们将绕过php远程文件包含的限制,并执行RFI的利用,即使PHP环境被配置为不包含来自远程HTTP/FTP URL的文件。对此文感兴趣的朋友跟随小编一起看看吧

    PHP 网络开发详解之远程文件包含漏洞

    由于PHP支持使用相同的函数(Function)对本地文件和远程文件进行操作。因此,一些恶意用户通过强行使网站上的PHP代码(Code)包含自己的文件来实现执行自己脚本的目的。

    php 远程包含文件漏洞分析第1/6页

    首先,我们来讨论包含文件漏洞,首先要问的是,什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可去包含一个恶意文件,而我们可以构造这...

    实验报告包含pyk文件

    学校学校,交流。求大神帮助改进。简简单单,方方正正,ok

    文件包含1

    将指定的文件内容base64转码本地文件包含返回文件执行结果返回文件代码内容远程文件包含注意:如果远程服务器可以解析1.txt则会返回远程服务器的执行结果如果远

    远程文件系统服务器源码

    远程文件系统服务器源码, 超过9000行C++源代码, 其中包含服务程序RFSvc.exe和RF32s.dll动态库源码, 文件清单如下: \RFServer\unit_rc\RCServer.h \RFServer\unit_rc\RCServerObj.cpp \RFServer\unit_rc\RCServerObj....

    php获取远程文件的内容和大小

    您可能感兴趣的文章:php下载远程文件类(支持断点续传)PHP 远程文件管理,可以给表格排序,遍历目录,时间排序获取远程文件大小的php函数PHP 获取远程文件内容的函数代码PHP 网络开发详解之远程文件包含漏洞php带...

    WebCruiser

    WebCruiser - Web 漏洞扫描器, 是一款非常实用的Web安全扫描工具,能够扫描SQL注入(SQL注入), Cross Site Scripting(跨站), Local File Inclusion(本地文件包含), Remote File Inclusion(远程文件包含), ...

    dede CMS最新采集规则

    dede CMS 最新采集规则 包含 60多个各种采集规则

    WebCruiser Web 漏洞扫描器V3.3.0

    Web 漏洞扫描器, 是一款轻量级但非常实用的Web安全扫描工具,能够扫描SQL注入(SQL注入), Cross Site Scripting(跨站), Local File Inclusion(本地文件包含), Remote File Inclusion(远程文件包含), ...

    Xftp Linux远程控制文件上传下载工具

    此外,该程序有直接编辑功能,允许用户编辑远程文件与Windows记事本。 通过这种方式,您可以快速编辑文件没有下载它们。 还可以重命名,删除或创建新文件。 多个窗格 Xftp支持超过2窗格,每个窗格中可以有多个选项卡...

    CISP-PTE认证资料.zip

    cisp-pte靶场通关思路分享----SQL注入篇 cisp-pte靶场通关思路分享----xss篇 ...cisp-pte靶场通关思路分享----远程文件包含篇 cisp-pte靶场通关思路分享----综合题篇 CISP-PTE知识体系大纲 PTE大纲

Global site tag (gtag.js) - Google Analytics