Web安全领域的探索之远程文件包含漏洞(LFI)

2023-05-16

文件包含渗透 File Inclusion

文件包含漏洞:

  • 即File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可 以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文 件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

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

  • 远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务 器允许包含一个远程的文件)。 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不 严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到自己的目的。

0.文件包含(File Inclusion)即程序通过[包含函数]调用本地或远程文件,以此来实现拓展功能
1.被包含的文件可以是各种文件格式,而当文件里面包含恶意代码,则会形成远程命令执行或文件上传漏洞
2.文件包含漏洞主要发生在有包含语句的环境中,例如PHP所具备include、require等包含函数 文件包含分为两类: 本地文件包含LFI(Local File Inclusion) 当被包含的文件在服务器本地时,就形成本地文件包含 远程文件包含RFI(Remote File Inclusion) 当被包含的文件在第三方服务器时,叫做远程文件包含

文件包含特征

  • ?page=a.php
  • ?home=b.html
  • ?file=content

检测方法

  • ?file=../../../../etc/passwd
  • ?page=file:///etc/passwd
  • ?home=main.cgi
  • ?page=http://www.a.com/1.php
  • http://1.1.1.1/../../../../dir/file.txt

原理图

演示一(LFI):

dvwa 文件包含(low):

0.首先我们要打开allow_url_include()allow_url_fopen()这两个函数开关,

2.然后我们来到dvwa页面的低等级的文件包含漏洞下,

3.观察url,我们可以看出这里是通过page参数传一个include.php文件名,我们先试一下下面三个链接

4.中间那段内容是fil1.php文件的内容,已经被包含进来了

5.这是file2.phpfile3.php文件情况,这里很明显通过page传参,传一个文件名,然后就可以把该文件内容包含进来(权限足够的情况下)6.我们试着在fi目录下新建一个test.txt文件并写入内容,来看是否能包含该文件内容

8.我们可以看到刚刚写的内容被成功包含进来了,这里我们其实可以通过目录跳转的方式读取该服务器下的其他敏感文件,我们这里是windows系统,所以我们可以尝试读取C:\WINDOWS\System32\drivers\etc\hosts文件,

9.可以看到,这里成功读取了hosts文件,为了之后方便演示,我这里在c盘根目录下创建1.txt文件并写入内容,之后的演示就读取这个文件了。

代码审计解析

这里我们看到low等级下,对page参数没有做任何过滤,所以只要是个可读文件就能包含

dvwa 文件包含(medium):

代码审计解析

这里可以看到,我们输入的page的值被str_replace()函数替换了,它将http://https://,../,..替换成了空字符串,所以我们可以尝试双写../..,或者绝对路径

0.先看看low等级下,需要跳六层到c盘根目录

2.再来到medium等级下,同样的方式发现不行

3.可能是被替换掉了,我们尝试进行双写绕过,构造payload ..././..././..././..././..././..././1.txt

4.这里解释一下,这是跳六层的payload,如果是跳一层,也就是说一个../的作用,当被过滤时,用双写..././前面.../为一组后面./为一组,就是它会过滤掉连在一起的../所以过滤之后,第一组被过滤的只剩下.然后第二组是./拼在一起正好是../所以这样便起到了原本的../的作用,即往上跳一层,然后六个这样的就跳六层,就可以绕过,或者,采用根目录方法,制造payloadc:\1.txt

5.可以看到,这里也可以成功绕过

dvwa 文件包含(high):

代码审计解析

分析源码可以看到,如果file变量中不含有file并且file变量中不含有file并且file变量中不含有file并且file不等于include.php,此时服务器才不会去包含文件,两个条件只要不满足其中任意一个,就能达到文件包含的目的,可以是同file协议来绕过

0.打开高等级下的文件包含页面,还是和以前一样,我们构造payload

2.成功解析,可以绕过

\

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web安全领域的探索之远程文件包含漏洞(LFI) 的相关文章

  • iOS --- 为UISlider添加点击事件

    UISlider是iOS中非常常见的UI控件 继承自UIControl 可设置valueChanged等事件响应方法 但其默认不支持单击事件 本文即简单地实现了可单击选值的UISlider UISlider的常见IBAction Value
  • 阿里云linux服务器开启图形界面并用windows远程 并修改远程端口

    阿里云CentOS服务器安装图形界面 并安装xrdp远程 1 安装Gnonme yum groupinstall 34 GNOME Desktop 34 34 Graphical Administration Tools 34 y 如需卸载
  • 数论-约数和公式

    约数定义 约数 xff0c 又称因数 整数a除以整数b b 0 除得的商正好是整数而没有余数 xff0c 我们就说a能被b整除 xff0c 或b能整除a a称为b的倍数 xff0c b称为a的约数 在大学之前 xff0c 34 约数 34
  • 高手在民间——SDH、MSTP、OTN和PTN的区别和联系

    个人觉得作者总结得非常牛 xff0c 忍不住转载 分享 SDH MSTP OTN和PTN的区别和联系 首先要说的是TDM的概念 xff0c TDM就是时分复用 xff0c 就是将一个标准时长 xff08 1秒 xff09 分成若干段小的时间
  • bash:fdisk:command not found

    bash fdisk command not found lansir 64 Red Hat fdisk l bash fdisk command not found 原因是fdisk不在PATH路径中 lansir 64 Red Hat
  • java-A+B【NEUQACM】

    1002 A 43 B xff08 基本输入输出2 xff09 时间限制 1 Sec 内存限制 128 MB 提交 979 解决 668 提交 状态 讨论版 题目描述 输入两个数A B xff0c 输出A 43 B的值 输入 第一行是数据的
  • Opencv调取摄像头失败的处理方法

    最近想学习一下opencv xff0c 就弄了一本 学习opencv 的书看 xff0c 书中的例子也随便敲一敲 可是 xff0c 在调去摄像头时出现了如下问题 具体代码如下 xff1a include 34 stdafx h 34 inc
  • Python编辑器 Sublime text2 +JEDI(python自动补全插件)

    以前写python的时候都是用eclipse写的 用mac后 xff0c 今天突然看到了这个Sublime text2 xff0c 目测很好用 先记下来 xff0c 到时再来补充 Win Linux gt cmd 43 shifp 43 p
  • 连接MySQL出现Host is not allowed to connect to this MySQL server 解决方法

    一 报错的原因 xff1f 英语翻译 不允许主机连接到此MySQL服务器 xff08 意思是本地账号连接可以登录 xff0c 但是远程登陆不行 xff09 二 解决步骤 1 打开cmd 进入到php的bin文件 2 以下命令按顺序执行 1
  • Debian 安装并切换配置使用 Xfce 4 桌面环境

    1 首先 使用 sudo tasksel 选择安装 Xfce 4 环境 或者 通过 sudo apt install kali defaults kali root login desktop base xfce4 xfce4 places
  • Qt 设置Widget背景图片并实现透明度的三种方式

    一 场景 在平常的开发过程中 xff0c 我们常常会遇到需要设置Widget窗口背景图片透明度的方式 一般会有三种方式可以进行设置 二 方式一 xff08 使用图形遮罩功能SetMask函数 xff09 class BackGroundWi
  • 穿山甲的广告聚合平台-GroMore

    很多同学微信私聊问我 xff0c TogetherAd 和其他市面上的广告聚合平台有什么区别 xff1f 接了你这个收入会不会提高啊 xff1f 毕竟个人时间有限 xff0c 我很难每个同学都去详细的回答 这篇文章我们就深入的探讨一下 我见
  • 使用Python的Tkinter库创建GUI(附实例:回归)

    我们前面介绍了树回归中的回归树和模型树 两种回归方式 本节我们首先将树回归和标准回归进行比较 xff0c 然后创建出一个GUI xff0c 通过交互的形式更好去观察模型树和回归树之间的奥秘 1 树回归与标准回归的比较 我们之前介绍过几种回归
  • django-模板语言-传输各种数据类型

    复习 django的三种返回方式 HttpResponse render redirect 了解这三个功能的导入位置 from django shortcuts import HttpResponse render redirect 模板语
  • 数据结构—顺序表

    目录 绪论 逻辑结构 xff1a 数据的逻辑结构可以看作从具体问题抽象出来数学模型 xff0c 他与数据的存储无关 A 集合结构 B 线性结构 C 树形结构 D 图形结构 物理结构 xff1a 是指数据的逻辑结构在计算机中的存储形式 xff
  • C语言 求2*3矩阵的转置

    C语言 求2 3矩阵的转置 span class token macro property span class token directive hash span span class token directive keyword in
  • cmd找不到conda

    cmd找不到conda以及通过cmd启用Anaconda中的Python环境 xff08 base xff09 1 gt 在系统环境中添加Anaconda路径 在环境变量path中选择新建 xff0c 并将Anaconda安装目录下的Scr
  • 201409-2 画图

    试题编号 xff1a 201409 2 试题名称 xff1a 画图 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 xff1a 问题描述 在一个定义了直角坐标系的纸上 xff0c 画一个 x1 y1 到 x2
  • sublime 设置识别语言

    cmd 43 shift 输入语言入 object c 自动跳出 Set Syntax Object C 这样就能识别OC的代码片段了 个人觉得用sublime做代码片段管理比较好
  • vsftp local_umask=022 要不很郁闷的!

    先是最基本的配置 请看我的 etc vsftpd vsftpd conf 接受匿名用户 anonymous enable 61 YES 匿名用户login时不询问口令 no anon password 61 YES 接受本地用户 local

随机推荐

  • CSP202112-2序列查询新解java100分

    问题描述 试题编号 xff1a 202112 2试题名称 xff1a 序列查询新解时间限制 xff1a 1 0s内存限制 xff1a 512 0MB问题描述 xff1a 题目背景 上一题 序列查询 中说道 xff1a A 61 A0 A1
  • 【极速下载】gradle各版本快速下载地址大全

    灰机准备好 xff0c 我就是活雷锋 xff0c 持续更新欢迎 收藏 xff0c 若对您有帮助 xff0c 快来 赏个赞 xff01 如果没有你想要的版本 xff0c 可以留言 版本CSDN下载网盘下载更新时间gradle 8 1 1 al
  • 带括号的表达式求值(参考算法笔记)

    虽然算法原理很简单 xff0c 但是有几个地方需要注意 1 因为左括号是要放入操作符栈中的 xff0c 所以他的优先级要设置为0 xff0c 不然其他运算符来了 xff0c 就不知道能不能放进去 2 栈顶运算符优先级小于op时 xff0c
  • AWS部署方式对比和总结

    Hello大家好 xff0c 我们今天的课时对AWS的部署方式做一个对比和总结 部署方式 对于一个专家级解决方案架构师来说 xff0c 需要有在面对不同的业务需求时 xff0c 采用适合的部署方案的能力 我们前面的课时也讲了很多AWS提供的
  • ECS-弹性容器服务 - Part 1

    67 ECS 弹性容器服务 Part 1 Hello大家好 xff0c 我们今天的课时内容是ECS AWS的弹性容器服务 ECS AWS的弹性容器服务 ECS是高度可扩展的 快速的容器管理和编排服务 使用ECS xff0c 能够将您的Doc
  • Centos7上安装MySQL community步骤

    下载mysql80 community release el7 3 noarch rpm软件源包文件 MySQL Community Yum Repository Downloads shell gt sudo yum localinsta
  • Win10远程桌面账号正确但连接失败的解决方法(使用微软AzureAD的账号)

    百度到的那些改组策略之类的完全没用 xff0c 花了一个小时左右 xff0c 终于在谷歌找到了答案 xff01 https community spiceworks com topic 2048258 logon attempt faile
  • Ubuntu 20.04系统 安装显卡驱动RTX3080

    网络上很多 xff0c 试过很多前人的经验 xff0c 多多少少都有些奇怪问题特别是对于我这样的新手 我记录下 xff0c 仅代表我个人安装成功的经验 说明 xff0c 我是台式机安装Ubuntu 怎么安装完系统就不谈了 xff0c 主要说
  • SerDes---CDR技术

    1 为什么需要CDR 时钟数据恢复主要完成两个工作 xff0c 一个是时钟恢复 xff0c 一个是数据重定时 xff0c 也就是数据的恢复 时钟恢复主要是从接收到的 NRZ xff08 非归零码 xff09 码中将嵌入在数据中的时钟信息提取
  • Failed to start bean ‘documentationPluginsBootstrapper‘

    最近写项目发现导入Swagger2依赖会报错Failed to start bean documentationPluginsBootstrapper 这个错误是由Springfox的一个bug引起 xff0c 解决这个问题的方式有多种 x
  • mac,centos 安装Connector/Python

    mac 官网下载 xff0c 双击 centos https dev mysql com doc connector python en connector python installation source html sudo yum
  • 5个可保存的在线代码片段平台推荐-变成自己的代码词典库

    文章目录 1 谷歌等现代浏览器自带的代码片段2 github gitee gitcode等在线托管平台的gist列表3 各大在线IDE平台4 掘金代码片段5 在线笔记 1 谷歌等现代浏览器自带的代码片段 路径 xff1a 浏览器开发者工具
  • 前置声明与C++头文件互相包含导致的error: 'xxx' does not name a type问题

    在一个源文件中 xff0c 要声明或定义一个类的指针时 xff0c 必须在使用前声明或定义该类 xff0c 因此下面的代码会报错 xff1a span class hljs class span class hljs keyword cla
  • C语言中1<<n是什么意思

    1 lt lt 2 1的二进制为 0000 0001 左移2位 0000 0100 如果再转成10进制就是4
  • 位运算——左移和右移

    lt lt 左移 1 运算规则 xff1a 按二进制形式把所有的数字向左移动对应的位数 xff0c 高位移出 舍弃 xff0c 低位的 空位补零 2 语法格式 xff1a 需要移位的数字 lt lt 移位的次数 例如 xff1a 3 lt
  • 【Python】爬取TapTap原神评论并生成词云分析

    序言 本来是想爬B站的 xff0c 但是B站游戏区的评论好像是动态方式加载 xff0c 分析了一通没搞懂怎么爬 xff0c 所以转到了TapTap xff0c TapTap评论页通过URL来定位 xff0c 非常容易拼接URL去获取想要的页
  • ubuntu下http代理设置

    方法一 这是一种临时的手段 xff0c 如果您仅仅是暂时需要通过http 代理使用apt get xff0c 您可以使用这种方式 在使用apt get 之前 xff0c 在终端中输入以下命令 xff08 根据您的实际情况替换yourprox
  • ARM汇编(基于树莓派3B)3

    第七章 Linux操作系统服务 在第1章 入门 中 xff0c 我们需要能够退出程序并显示字符串 我们使用Raspbian Linux来执行此操作 xff0c 直接调用操作系统服务 在所有高级编程语言中 xff0c 都有一个运行时库 xff
  • VS修改平台工具集

    MSB8020 无法找到 Visual Studio 2010 的生成工具 平台工具集 61 v100 若要使用 v100 生成工具进行生成 xff0c 请安装 Visual Studio 2010 生成工具 或者 xff0c 可以升级到当
  • Web安全领域的探索之远程文件包含漏洞(LFI)

    文件包含渗透 File Inclusion 文件包含漏洞 xff1a 即File Inclusion xff0c 意思是文件包含 xff08 漏洞 xff09 xff0c 是指当服务器开启allow url include选项时 xff0c