文件包含漏洞简介

news2024/11/26 4:41:32

今天继续给大家介绍渗透测试相关知识,本文主要内容是文件包含漏洞简介。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、文件包含漏洞概述

在Web开发时,开发者为了代码简介与规范,常常把一段需要重复用到的代码写入一些单独的文件中,然后再使用这些代码时,将该文件包含进来,这样就避免了在很多文档中都复制使用这段代码。并且,当这段代码需要更改时,我们只需要修改这个被引用文件中的代码,即可完成对整个架构代码的修改,而不需要打开每个单独的文件,去修改代码了。
但是,这样的操作也会带来问题。如果这种模式需要以用户的输入作为引用的文件名称(或者一部分),并且没有进行严格的过滤时,攻击者就可以利用这一点,查看系统秘密文件或者是包含一些含有恶意代码的文件,这时就会产生文件包含漏洞。
文件包含包括本地文件包含以及远程文件包含,其区别在于远程文件包含可以根据一些协议访问远程的文件,远程文件包含可以被攻击者利用包含恶意脚本代码,因此危害更大。

二、文件包含漏洞成因

文件包含漏洞的产生不拘泥于后台脚本类型,这是因为基本上任意一种脚本,都具有类似的功能。
对于ASP类型的脚本而言,文件包含的代码如下所示:

<!-—#include file="file.asp " -->
<!--#include file="file.aspx"-->

对于JSP类型的脚本而言,文件包含的代码如下所示:

<jsp:include page="file.jsp" / >
<%@ include file="file.jsp" %>

对于PHP类型的脚本而言,可能产生文件包含的函数有以下四个(包括但不止):

require()
include()
require_once()
include_once()

在上述四个函数中,require()、require_once()和include()、include_once()的区别在于require()和require_once()在包含的文件不存在时会报错,并且停止执行后面的代码,而include()和include_once()在包含的文件不存在时仅仅会进行警告,不会停止执行后面的代码。

三、文件包含漏洞简单示例

我们使用DVWA靶场,来查看以下文件包含漏洞后台代码情况。DVWA靶场文件包含漏洞页面如下所示:
在这里插入图片描述
我们点击上述超链接的文件,发现代码URL发生了变化,page参数变成了点击文件的名称,并且下面的页面也发生了变化,如下所示:
在这里插入图片描述
因此我们可以猜测page参数可能存在文件包含漏洞。
从后台代码来看,在Low等级下,文件包含漏洞代码如下所示:

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

从上述代码可以看出,由于file变量是通过GET的方式上传page参数得到的,因此我们可以控制file变量,因此也就存在文件包含漏洞。
在Impossible等级下,上述代码如下所示:

<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Only allow include.php or file{1..3}.php
if( $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;
}
include( $file )
?>

可以看到,在Impossible等级下,对用户输入的page参数进行了过滤,仅允许该参数为file1.php、file2.php、file3.php或include.php。这样严格的限制,在很大程度上就可以消除文件包含漏洞。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一些好玩的js小作品

今天小编给大家带来了一些很实用的js小作品&#xff0c;下面请一看究竟。 1、计算详细年龄工具js脚本 2、检测是否安装Flash插件及版本号js脚本 3、无法查看源码的页面 4、面积换算js脚本 5、体积和容积换算js脚本 6、长度换算js脚本 7、重量换算js脚本 8、只能输入汉字…

记一些女装数据分析

文章目录服装维度女装生命周期门店维度常见度量值衍生指标服装维度 尺码&#xff1a;XS、S、M、L、XL颜色&#xff1a;黑、红、蓝、白……一级分类&#xff1a;上半身、下半身、全身季节&#xff1a;春、夏、秋、冬价格类型&#xff1a;正价、特价、折扣价、降价、优惠券…价格…

Android自定义ViewGroup布局进阶,完整的九宫格实现

自定义ViewGroup九宫格 前言 在之前的文章我们复习了 ViewGroup 的测量与布局&#xff0c;那么我们这一篇效果就可以在之前的基础上实现一个灵活的九宫格布局。 那么一个九宫格的 ViewGroup 如何定义&#xff0c;我们分解为如下的几个步骤来实现&#xff1a; 先计算与测量九…

【Linux学习】进程信号

文章目录前言一、信号初识1. 信号的概念2. Linux中的普通信号3. 信号的处理二、信号产生1. 终端按键产生信号2. 系统调用发送信号2.1 kill函数2.2 raise函数2.3 abort函数3. 由软件条件产生信号3.1 SIGPIPE信号3.2 alarm函数4. 由硬件异常产生信号三、信号阻塞1. 信号阻塞即其他…

[前端面试题]flex上下布局

[前端面试题]flex上下布局 [万字长文]一文教你彻底搞懂flex布局 [CSS]一些flex的应用场景 页面中有两个元素。元素bottom固定在底部&#xff0c;靠内容来撑开&#xff1b;而元素top在上边&#xff0c;高度自适应&#xff0c;自动铺满除bottom剩下的空间&#xff0c;且top内容…

第十四届蓝桥杯集训——JavaC组第十篇——分支语句

第十四届蓝桥杯集训——JavaC组第十篇——分支语句 目录 第十四届蓝桥杯集训——JavaC组第十篇——分支语句 if单分支 if单分支语法 if单分支语句示例 单分支例题&#xff1a; 连续单分支示例 if简写语法 if双分支语句 if双分支语法 if双分支语法示例 if双分支简写法…

全栈jmeter接口测试教程之Jmeter+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具&#xff0c;并配置好环境变量&#xff1b;参考&#xff1a;https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件&#xff0c;要设置一下bin/jmeter.properties,文件内容…

圣诞节快来了~用python做一个粒子烟花震撼众人赚个女孩回来吧~

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 准备 准备一下你运行效果的背景图 以及一首你喜欢或那你女朋友喜欢的音乐 效果 代码展示 导入模块 import random import pygame as py import tkinter as tk from time import time, sleep fr…

Fuzzing with Data Dependency Information阅读笔记

相关数据 论文&#xff1a;https://www.s3.eurecom.fr/docs/eurosp22_mantovani.pdf 开源代码&#xff1a;https://github.com/elManto/DDFuzz 论文背景 这篇论文是2022年发表在sp上的一篇论文&#xff0c;也是在afl的基础上进行改进的一篇论文。afl是在afl的基础上进行整合…

第二十六章 linux-输入子系统二

第二十六章 linux-输入子系统二 文章目录第二十六章 linux-输入子系统二框架三个重要结构体struct input_devstruct input_handlerstruct input_handle框架 Linux系统支持的输入设备繁多&#xff0c;例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等&#xff0c…

[附源码]Python计算机毕业设计电子投票系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

30岁转行网络安全来得及吗?有发展空间吗?

30岁转行网络安全来得及吗?有发展空间吗? 现阶段&#xff0c;很多30岁左右的人群都面临就业难的问题&#xff0c;尤其是对于年龄已过30.没有一技之长的人。现阶段&#xff0c;网络安全行业已成了风口行业&#xff0c;也有很多30岁人群也想转行学习网络安全&#xff0c;但又担…

python之界面案例

目录 一、海龟绘图 二、图形化编程入门 窗口创建 三、表格控件的简单认知 四、综合案例 一、海龟绘图 海龟绘图作用&#xff1a;提升界面美观度&#xff0c;吸引用户使用 学习网址&#xff1a; turtle --- 海龟绘图 — Python 3.8.14 文档 二、图形化编程入门 窗口创建 …

【数据结构与算法】跳表

目录 一、什么是跳表 二、跳表的效率验证 三、跳表的实现 1、search 2、add 3、erase 四、跳表与其它搜索结构对比 总结 一、什么是跳表 跳表是一个随机化的数据结构&#xff0c;可以被看做二叉树的一个变种&#xff0c;它在性能上和红黑树&#xff0c;AVL树不相上下&am…

【高精度定位】RTK定位与RTD定位知识科普

高精度定位一般指亚米级别或厘米级别的定位&#xff0c;常见的室内有蓝牙AoA和UWB两种技术&#xff0c;室外有北斗地基增强技术&#xff0c;这些技术都是采用算法进行定位。 工业4.0时代&#xff0c;在资源和环境约束不断强化的背景下&#xff0c;创新驱动传统制造向智能制造转…

【MAUI】条形码,二维码扫描功能

前言 本系列文章面向移动开发小白&#xff0c;从零开始进行平台相关功能开发&#xff0c;演示如何参考平台的官方文档使用MAUI技术来开发相应功能。 介绍 移动端的扫描条形码、二维码的功能已经随处可见&#xff0c;已经很难找到一个不支持扫描的App了&#xff0c;但是微软的…

sync fsync fdatasync 三者的区别

传统的UNIX系统实现在内核中设有缓冲区高速缓存或页高速缓存&#xff0c;大多数磁盘I/O都通过缓区进行。当我们向文件写入数据时&#xff0c;内核通常先将数据复制到缓冲区中&#xff0c;然后排入队列&#xff0c;晚些时候再入磁盘。这种方式被称为延迟写 (delayed wrie)(Bach[…

最惨面试季:“这么简单的9道题,我刷掉了90%的测试员。”

人往高处走水往低处流&#xff0c;十二月将至&#xff0c;“金三银四”招聘季还会远吗&#xff1f; 远观2022年的招聘季&#xff0c;在资本寒冬的映照下&#xff0c;的确萧条了不少&#xff0c;裁员、取消年终奖、末尾淘汰制等热门制度&#xff0c;让很多人陷入了“工作难保&a…

【自然语言处理】隐马尔科夫模型【Ⅴ】解码问题

有任何的书写错误、排版错误、概念错误等&#xff0c;希望大家包含指正。 由于字数限制&#xff0c;分成六篇博客。 【自然语言处理】隐马尔可夫模型【Ⅰ】马尔可夫模型 【自然语言处理】隐马尔科夫模型【Ⅱ】隐马尔科夫模型概述 【自然语言处理】隐马尔科夫模型【Ⅲ】估计问题…

基于安卓的校园订餐系统开发设计

目 录 Abstract 6 1 绪 论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 国内外研究现状 1 1.4 研究的过程和结果 2 1.5 论文主要组织结构 3 2 设计原理和方法 4 2.2 关键技术简介 4 2.3 开发工具 5 2.4 应用平台 6 3 需求分析 8 3.1 功能性需求 8 3.2 非功能需求 17 4 系统概要设计 1…