在这里推荐下自己的博客,支持友链互换,Back's Blog

本次防御从代码层面出发, 尽量从多个角度进行防御。不足之处请指出。谢谢。

黑名单检测防御

首先看下dvwa的远程文件包含页面源码(low级别)。

<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>

可以看到没有经过任何的加固,远程文件包含利用的最大特点显而易见,就是http和https协议。

我们先进行漏洞利用,简单复现。远程文件包含需要在php.ini中打开allow_url_include。

这里我已经打开了allow_url_include

本地写好了一个测试文件。简单点。

进行远程文件包含测试,因为在本地测试,所以写在了同一个虚拟机下(懒得多开)

成功包含远程文件

这里进行加固,使用黑名单进行检测,若包含的代码中包含http、https则报错,并且退出执行。

加固之后代码如下

<?php$file = $_GET[ 'page' ];$black = array("https","http");if(!in_array($file,$black)){echo "危险操作!";exit;}?>

进行远程文件包含测试

黑名单中,不仅可以添加协议,也可以添加敏感信息。如passwd、shadow、hosts等等,以进行防御本地文件包含。

str_replace()函数替换防御

加固代码如下,这里仅写了http用以测试

<?php$file = $_GET[ 'page' ];$file = str_replace("http","",$file);?>

加固成功

但是这种加固是及其不安全的,因为str_replace()函数有一个特性,即仅会检测一次。如果我们构造出hthttptp这样的参数,它会替换掉中间的http,然后左右剩下的ht 和 tp 仍会构成一个新的http。

而str_replace()不会再次对此进行检测。从而达到绕过的目的。如下测试图。

过滤其他的诸如 https、http:// 等同样可以绕过。

不过对单字符就没办法了。因为只有一个字符,无法构造合成。如下

<?php$file = $_GET[ 'page' ];$file = str_replace("h","",$file);?>

原则上没有什么问题,但是不建议如此过滤。不仅容易误伤,还容易造成其他错误。

strstr函数过滤防御

直接上代码吧。懒得多BB了。

<?php
$file = $_GET[ 'page' ];
if(strstr($file,"http")==true){echo "危险操作";exit;
}
?>

strstr()函数主要是进行了一个检测,没有对参数本身进行更改,所以不存在hthttptp的这种情况出现。

然后这里进行判断, 如果存在http则echo “危险操作”,并退出执行。

如果不退出,会是怎样的情景?看一下、我这里修改了下1.txt内容

可以看到,虽然输出危险操作,但是仍然将内容进行了执行并输出。

你以为这样就是安全的吗?

不,strstr()函数还有一个问题所在,就是它区分大小写。什么意思?就是小写过滤,但是大写不过滤。如下

应对措施也简单,将获得到的参数进行小写转换。使用strtolower()函数。

$file = strtolower($file);

如此即可

白名单检测防御

这种防御方法,即指定可包含文件,其他均不允许。此种方法和Impossible级别一样,只不过添加远程文件即可。

<?php// The page we wish to display$file = $_GET[ 'page' ];// Only allow include.php or file{1..3}.phpif( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit;}?>

关于远程文件包含的主要加固方式,还是关闭php.ini中的allow_url_include()比较安全。

如果必须开启的话,要从代码层面进行加固。多层防护,一定要检测你所使用的加固函数是否可以绕过,以及相应的加固措施。

DVWA远程文件包含防御相关推荐

  1. php 创建目录_使用SMB绕过PHP远程文件包含限制

    译文声明 本文是翻译文章,文章原作者mannulinux,文章来源:mannulinux.org  原文地址:http://www.mannulinux.org/2019/05/exploiting- ...

  2. 远程文件包含 php,php本地及远程文件包含漏洞

    在php程序中包含有file inclusion的时候,php要开启一下两个功能: allow_url_fopen on allow_url_include on 但是开启这两个功能之后伴随的是url ...

  3. PHP远程文件包含(RFI)并绕过远程URL包含限制

    文章来源|MS08067 公众号粉丝投稿 本文作者:VastSky(Ms08067实验室粉丝) 前言 本文我们讲如何绕过远程URL包含限制.在PHP开发环境php.ini配置文里"allow ...

  4. LFI(本地文件包含)、RFI(远程文件包含)、PHP封装协议(伪协议)安全问题学习

    友情链接:https://www.cnblogs.com/LittleHann/p/3665062.html 目录 一.文件包含的基本概念 1.要想成功利用文件包含漏洞,需要满足下面的条件 (1)in ...

  5. php代码审计文件包含,PHP代码审计之远程文件包含(RFI)

    有位叫做普瑞斯特的大牛针对PHP的web应用列出了下面几种攻击方式: 1.命令注入(Command Injection)2.eval注入(Eval Injection)3.客户端脚本攻击(Script ...

  6. 文件上传漏洞之——远程文件包含漏洞(RFI)

    定义 如果php.ini的配置选项allow_url_include为On的话,文件包含函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞.利用远程文件包含漏洞,可以直接执行任意命令 原理 同本 ...

  7. DVWA通关--文件包含(File Inclusion)

    目录 LOW 通关步骤 一.本地文件包含 二.远程文件包含 代码分析 MEDIUM 通关步骤 一.本地文件包含 二.远程文件包含 代码分析 HIGH 通关步骤 一.本地文件包含 二.远程文件包含 代码 ...

  8. php远程文件包含攻击,利用SMB共享来绕过php远程文件包含的限制

    在这篇博文中,我将为大家演示如何利用PHP应用中的远程文件包含漏洞的技术.我们将绕过php远程文件包含的限制,并执行RFI的利用,即使PHP环境被配置为不包含来自远程HTTP/FTP URL的文件. ...

  9. RFI远程文件包含的漏洞

    RFI(Remote File Inclusion) 远程文件包含漏洞,即服务器通过PHP的特性(函数)去包含任意文件时, 由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以 ...

最新文章

  1. 通用Excel文件导出工具类
  2. 后端:50 个 经典 Spring 面试题,值得收藏!
  3. ❤️《10个超级常用Python方法总结》复制即用丨小白捷径【文末赠书2本】❤️
  4. hive表定义(3种方式)
  5. JavaScript选择器
  6. 函数的对象,函数的嵌套
  7. jar包导出无法显示图片或者音乐_超详细微信表情包制作教程
  8. 中小企业网络推广方案
  9. 小象学院 零基础Python入门 案例四 52周存钱挑战v_3.0
  10. 微信编辑器 wxEditor 最牛逼的富文本编辑器
  11. element input限制输入数字
  12. Google 三大论文之——MapReduce
  13. 网站备案其实是服务器备案,国内服务器为什么需要备案?国外服务器备案吗?
  14. Selenium库实现推特爬虫
  15. vue组件挂载与html加载区别,vue中的挂载是什么意思?
  16. 图案设计灵感怎么写_服装设计灵感来源怎么写_服装设计理念怎么写
  17. 我眼中的匈牙利命名法
  18. 内网渗透之跨路由访问
  19. codeforces1166E. The LCMs Must be Large
  20. 【FME实战教程】003:FME读取地理空间数据(矢量、栅格、点云、三维模型、数据库、地理服务)大全

热门文章

  1. 后台Request获得表单的几种方法
  2. 中国数字藏品的未来思考
  3. 二元函数图像生成器_谷歌程序员自制秃头生成器:一键get张东升同款发型,今天你脱发了吗?...
  4. Xcode12 iOS14踩坑
  5. Neo4j 基础简介二
  6. C# 作为客户端实时与服务器进行通信
  7. 找规律: 1,2,9,64,625,()
  8. Linux资产图形化配置网络之nmtui指令
  9. 计算机未检测到无线接收器,wifi接收器插上没反应 wifi接收器插上没反应怎么办 - 云骑士一键重装系统...
  10. 服务器租用的三大误解是什么