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.xdnf.cn/news/1550621.html

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

相关文章

【笔记】数据结构12

文章目录 2013年408应用题41方法一方法二 看到的社区的一个知识总结&#xff0c;这里记录一下。 知识点汇总 2013年408应用题41 解决方法&#xff1a; 方法一 &#xff08;1&#xff09;算法思想 算法的策略是从前向后扫描数组元素&#xff0c;标记出一个可能成为主元素的元…

【YOLO目标检测二维码数据集】共3112张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;3112 标注数量(txt文件个数)&#xff1a;3112 标注类别数&#xff1a;1 标注类别名称&#xff1a;qrcode 数据集下载&#xff1a;二维码数据集 图片示例 数据集图片&#xff1a; 数据集…

yolov8/9/10模型在垃圾分类检测中的应用【代码+数据集+python环境+GUI系统】

yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 背景意义 随着计算机视觉技术和深度学习算法的快速发展&#xff0c;图像识别、对象检测、图像分割等技术在各个领域得到了广泛…

C++类和对象(下) 初始化列表 、static成员、友元、内部类等等

1.再探构造函数 之前使用构造函数时都是在函数体内初始化成员变量&#xff0c;还有一种构造函数的用法&#xff0c;叫做初始化列表&#xff1b;那么怎么使用呢&#xff1f; 使用方法用冒号开始(" : ")要写多个就用逗号(" , ")隔开数据成队列每个成员变量后…

谷歌收录批量查询,如何批量查询谷歌收录以及提交网站进行收录的方法

在SEO优化过程中&#xff0c;了解并监控网站在谷歌搜索引擎中的收录情况至关重要。本文将详细介绍如何批量查询谷歌收录以及提交网站进行收录的方法&#xff0c;帮助网站管理员和SEO专家更有效地管理和优化网站。 一、谷歌收录批量查询方法 1.使用搜索引擎的site指令 …

前端考核总结

目录 JavaScript的基本数据类型有哪些&#xff1f;JavaScript中数据类型的检测方法JavaScript如何判断对象中的属性存在自身还是原型链上flex布局HTML5新标签Vue的基本概念Vue生命周期JavaScript中闭包的基本概念防抖节流双等号与三等号的区别显式转换 JavaScript的基本数据类型…

fastadmin搜索刷新列表,怎么限制用户频繁点击?

文章目录 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f;解决方案fastadmin事件方法实现完结 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f; fastadmin目前有个很致命的问题&#xff0c;就是用户可以频繁的点击搜索等按钮&#xf…

Qt --- 界面优化 --- QSS和绘图API

界面优化 》美化 一个程序的界面是否好看&#xff0c;是否重要呢。 有些面向专业领域的程序&#xff0c;界面好看与否&#xff0c;不是看关键&#xff0c;更关键的是实际的效果。有些面向普通用户领域的程序&#xff0c;界面好看&#xff0c;还是很大的加分项。 界面优化 Qt…

奖金高达 110 万元,Spatial Joy 2024 全球 AR 应用开发大赛启动

今年是AR应用开发大赛第三届&#xff0c;恰逢Rokid成立十周年&#xff0c;我们推出全新的大赛品牌“Spatial Joy”&#xff0c;引领开发者享受开发乐趣&#xff0c;为其打造充满挑战和惊喜的开发之旅&#xff0c;逐渐成为空间计算时代全球最大AR应用开发大赛。回顾大赛发展&…

PCB敷铜敷不了相同网络的线怎么办?

图片上的情况就是今天需要讲的内容&#xff0c;可以看出出来的线头是GND,敷的铜也是GND但是相同网络就是不能连在一起。 解释&#xff1a; 这是因为我们敷铜的时候属性选的是连接相同的net,如图所示&#xff1a; 解决办法&#xff1a; 只需要设置改为相同的Object就可以了&…

STM32+ADC+扫描模式

1 ADC简介 1 ADC(模拟到数字量的桥梁) 2 DAC(数字量到模拟的桥梁)&#xff0c;例如&#xff1a;PWM&#xff08;只有完全导通和断开的状态&#xff0c;无功率损耗的状态&#xff09; DAC主要用于波形生成&#xff08;信号发生器和音频解码器&#xff09; 3 模拟看门狗自动监…

高效的视频压缩标准H.264介绍,以及H.264在视频监控系统中的应用

目录 一、概述 二、 工作原理 三、技术特点与优势 1、高效压缩率 2、高质量视频 3、错误恢复能力 4、灵活性 四、编解码过程 1、编码过程 2、解码过程 五、帧类型与结构 1、I帧 2、P帧 3、B帧 六、应用与优势 1、节省存储空间和带宽 2、提高视频质量 3、适应…

2024大二上js高级+ES6学习9.29(深/浅拷贝,正则表达式,let/const,解构赋值,箭头函数,剩余参数)

9.29.2024 1.浅拷贝和深拷贝 Es6的语法糖&#xff1a;用assign将obj对象浅拷贝给o对象。 把数组写在前面是因为数组也是对象 2.正则表达式 创建和检测正则表达式 正则表达式的使用直接跳过&#xff0c;等要用时现查现用 3.ES6 4.let关键字 块级作用域是指在一个{}l里 变量提…

File 和 Blob两个对象有什么不同

Blob 在 JavaScript 中&#xff0c;Blob&#xff08;Binary Large Object&#xff09;对象用于表示不可变的、原始的二进制数据。它可以用来存储文件、图片、音频、视频、甚至是纯文本等各种类型的数据。Blob 提供了一种高效的方式来操作数据文件&#xff0c;而不需要将数据全…

招联金融内推-2025校招

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

【springboot】使用thymeleaf模板

1. 导入依赖 首先&#xff0c;创建一个Spring Boot项目&#xff0c;并添加Thymeleaf依赖。在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifa…

组合逻辑元件与时序逻辑元件

组合逻辑元件和时序逻辑元件都是数字电路中的基本构建块&#xff0c;但它们在功能和结构上存在显著差异。 1. 组合逻辑元件: 内容: 组合逻辑元件的输出仅取决于当前的输入&#xff0c;而与之前的输入无关。 它们没有记忆功能。 常见的组合逻辑元件包括&#xff1a; 与门 (AND…

美图AI短片创作工具MOKI全面开放 支持生成配乐、细节修改

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 美图公司近日宣布&#xff0c;其研发的AI短片创作工具MOKI已正式向所有用户开放。这款专注于AI短片创作的工具&#xff0c;提供了包括动画短片、网文短剧等多种类型视频内容的生成能力&#xff0c;致力于为用户带来…

文件防泄密措施有哪些?6个方法有效防止文件泄密

想象一下&#xff0c;一群穿着黑衣的神秘人在电影中潜入高保安办公室&#xff0c;绕过各种高科技安保装置&#xff0c;只为偷走里面存放的饱含机密的文件&#xff01; 听起来是不是很刺激&#xff1f; 但如果这种情况发生在现实中&#xff0c;而且发生在你的企业或个人数据上…

【中级通信工程师】综合能力:2024年真题回顾(附答案)

【零基础3天通关中级通信工程师】 综合能力&#xff1a;2024年真题回顾 本文是根据参加考试的回忆并且结合网上几版资料复原的2024年通信考试中级《综合能力》的真题考卷&#xff0c;旨在为广大考生提供复习和备考的参考&#xff0c;试卷大体和真题相符&#xff0c;部分选项回…