File Inclusion文件包含漏洞

  1. 漏洞分析
  1. 文件包含函数
  • require() 找不到被包含的文件时会产生致命错误,并停止脚本运行
  • include() 找不到被包含的文件时只会产生警告,脚本将继续运行
  • include_once()与include()类似 ,唯一区别时如果该文件中代码已经被包含,则不会再次包含
  • require_one()与require()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含

Level:low

  1. <?php
  2. // The page we wish to display
  3. $file = $_GET[ 'page' ];

漏洞分析

low级别没有进行任何过滤;

  • 第一步:构造url

    127.0.0.1/dvwa/vulnerabilities/fi/?page=/etc/shadow

    报错,显示没有这个文件,说明不是服务器系统不是Linux,但同时暴露了服务器文件的绝对路径

D:\Phpstudy\PHPTutorial\WWW\dvwa

  • 第二步:通过绝对路径读取服务器的php.ini

其中'allow_url_fopen = on allow_url_include = on ' 文件包含都是打开的

可以通过..\保证到达服务器的C盘根目录

配置文件中的Magic_quote_gpc选项为off。在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,我们可以在文件名中使用%00进行截断,也就是说文件名中%00后的内容不会被识别,即下面两个url是完全等效的。

使用%00截断可以绕过某些过滤规则,例如要求page参数的后缀必须为php,这时链接A会读取失败,而链接B可以绕过规则成功读取

Level:medium

  1. <php
  2. //Thepagewewishtodisplay
  3. $file=$_GET['page'];
  4. //Inputvalidation
  5. $file=str_replace(array("http://","https://"),"",$file);
  6. $file=str_replace(array("../","..\""),"",$file);
  7. >

漏洞分析

  • Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” ../”、”..\”替换为空字符,即删除

  • Sre_replace(函数)及其不安全,可以使用双写绕过替换规则

    例如:page=hthttp://127.0.0.1/phpinfo.txt时,str_replace函数会将http://删除变成http://127.0.0.1/phpinfo成功执行

    同时,因为替换的只是“../”、“..\”,所以对采用绝对路径的方式包含文件是不会受到任何限制的。

Level:high

  1. <php
  2. //Thepagewewishtodisplay
  3. $file=$_GET['page'];
  4. //Inputvalidation
  5. if(!fnmatch("file*",$file)&&$file!="include.php"){
  6. //Thisisn'tthepagewewant!
  7. echo"ERROR:Filenotfound!";
  8. exit;
  9. }

漏洞分析

  • High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件.
  • High级别的代码规定只能包含file开头的文件,看似安全,不过的是我们依然可以利用file协议绕过防护策略。

构造url

什么时file协议

字面意思:本地文件传输协议

 

什么是File:

file协议主要用于访问本地计算机中的文件,好比通过Windows的资源管理器中打开文件或者通过右键单击‘打开’一样

file协议的基本格式如下:

file:///文件路径

file协议与http协议的区别

file协议与http协议的区别

Level:impossible

  1. <php
  2. //Thepagewewishtodisplay
  3. $file=$_GET['page'];
  4. //Onlyallowinclude.phporfile{1..3}.php
  5. if($file!="include.php"&&$file!="file1.php"&&$file!="file2.php"&&$file!="file3.php"){
  6. //Thisisn'tthepagewewant!
  7. echo"ERROR:Filenotfound!";
  8. exit;
  9. }
  10. >

漏洞分析

Impossible级别的代码使用了白名单机制进行防护,简单粗暴,page参数必须为“include.php”、“file1.php”、“file2.php”、“file3.php”之一,彻底杜绝了文件包含漏洞。

DVWA各级文件包含漏洞的更多相关文章

  1. 2. DVWA亲测文件包含漏洞

    Low级:     我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...

  2. 文件包含漏洞(DVWA环境中复现)

    LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...

  3. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

  4. php伪协议,利用文件包含漏洞

    php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结.实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本, 设置allow_url_fopen ...

  5. 本地文件包含漏洞(LFI漏洞)

    0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVW ...

  6. DVWA之文件包含(File inclusion)

    daFile inclusion的意思就是文件包含,当服务器开启了allow_url_include选项时,就可以通过PHP的某些特征函数 include,require和include_once,r ...

  7. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  8. PHP:文件包含漏洞

    简单记录一些文件包含漏洞的常用方法 产生原因: 文件包含漏洞的产生原因是在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意 ...

  9. 配合php伪协议利用文件包含漏洞

    文章来源: https://blog.csdn.net/zpy1998zpy/article/details/80598768?utm_medium=distribute.pc_relevant.no ...

随机推荐

  1. Caused by: java.lang.ClassNotFoundException: com.alibaba.druid.filter.logging.Log4j2Filter

    最开始遇到这个错误,百度,网上一堆的清一色解决方案,缺少log4j,引入log4j相关依赖,或者引入slf4j-over-log4j的依赖,但是好像都不行,最后还是谷歌靠谱,直接检索出github上的 ...

  2. sql bypass waf fuzz python

    从freebuf copy过来的,先保存,有空再改 #encoding=utf-8 import requests url = "http://127.0.0.1/index.php?id= ...

  3. python-基础入门-6快速入门总结

    快速入门 程序输出: 1.print语句,字符串用双引号括起来 _在解释器中表示最后一个表达式的值. print语句 与字符串格式(%)结合使用,能实现字符串替换功能. >>>pri ...

  4. 公司人员组织架构图用思维导图软件MindManager怎么做

    有朋友一直不太明白组织架构图怎么做,其实组织架构图就是组织结构图.小编今天就在这里以一个公司为例,来给大家演示一番人员组织结构图怎么做. 老规矩,先说一下小编使用的软件跟电脑系统,这里用的是MindM ...

  5. 借助Mac自带的强大的搜索功能,如何快速搜索打开Tuxera Disk Manager

    现在很多小伙伴们在遇到Mac读写NTFS格式硬盘问题的时候,都会选择使用Tuxera NTFS这个磁盘读写工具.因为这款读写工具不仅可以帮助我们进行读写工作,还具有一个磁盘管理工具Disk Manag ...

  6. MAC端口被占用的解决方法

    html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...

  7. 2020 CSP-J 多校赛 Day 2 T2 题解

    0x01 引入 在考场时想了一个错误算法,口胡一下,或许对理解正解有点帮助. 我们考虑交换两个数产生的代价,你会发现我们需要让大的数重复被交换的次数尽可能少,减少它对后面的代价. 那么不难构思出一个按 ...

  8. C++高级程序员进阶之路

    一.自学成为高级程序员推荐看的书: 1.c语言基础 <c primer Plus>.<c和指针>.<C专家编程> 2.C++语言基础 <C++ Primer& ...

  9. Java蓝桥杯01——第一题集锦:堆煤球、购物单、哪天返回、第几天、分数

    堆煤球(2016JavaB) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100 ...

  10. 决胜IT十八招-前言

    决胜IT十八招 走资讯这一行转眼间八年多了,从大学的时候,我有长达十年的时间思索在从事软体开發这一行到底怎麽存活下来,这思考下来,为自己总算找到一个出口来,这十八招只是其一的绝学,见阵这一行干软体开發 ...