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

news2024/9/29 22:00:22

概念:

  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.coloradmin.cn/o/2177928.html

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

相关文章

【SOP】Windows下安装Neo4j流程

Neo4j简介 Neo4j 是一个基于图形结构的 NoSQL 数据库&#xff0c;专门用于存储和管理图数据。与传统的关系型数据库不同&#xff0c;Neo4j 使用 图&#xff08;graph&#xff09;的形式来表示数据&#xff0c;其中数据点&#xff08;称为 节点&#xff09;通过 边&#xff08;…

CHI trans--Home节点发起的操作

总目录&#xff1a; CHI协议简读汇总-CSDN博客https://blog.csdn.net/zhangshangjie1/article/details/131877216 Home节点能够发起的操作&#xff0c;包含如下几类&#xff1a; Home to Subordinate Read transactionsHome to Subordinate Write transactionsHome to Subor…

uniapp学习(001 介绍-安装等)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第1p-第p4的内容 文章目录 创建项目目录结构效果下载微信小程序开发者工具在hbuilderX里配置开发者工具找到安全…

D22【python接口自动化学习】-python基础之判断与循环

day22 if语句的定义 学习日期&#xff1a;20240928 学习目标&#xff1a;内置数据类型--32 if语句&#xff1a;数据流程出现分支时&#xff0c;怎样编写程序&#xff1f; 学习笔记&#xff1a; 条件判断的用途 需求分析 真假值用布尔型表达 # if语句基本写法 if True:print…

技术速递|Python in Visual Studio Code 2024年9月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布将于 2024 年 9 月发布适用于 Visual Studio Code 的 Python 和 Jupyter 扩展&#xff01; 此版本包括以下公告&#xff1a; Django 单元测试支持使用 Pylance 从 inlay 提示转到定义 如果您有兴趣&#xff0c;可以在我们的 Pyth…

cloud-(Nacos)--注册中心原理-服务注册-服务发现

并且通过(RestTemplate)Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题 在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下: 流程如下: 服务启动…

【YOLOv8改进[SPPF]】使用SPPFCSPC替换SPPF模块 + 含全部代码和详细修改方式

本文将进行在YOLOv8中使用SPPFCSPC魔改v8,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 改进前和改进后的参数对比如下: 目录 一 SPPFCSPC 二 使用SPPFCSPC魔改v8 1 整体修改 ① 添加SPPCSPC.py文件 ② 修改ultralytics/nn/tasks.py文件 2 配置文件

VGG16网络介绍及代码撰写详解(总结1)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习只要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。 摘要&#xff1a;本文是介绍V…

超便携专业AI大师本带来生产力跃升,联想ThinkPad P1 AI 2024 AI元启版上市

随着AI技术在各行业的广泛应用&#xff0c;其实际效用愈加突出。无论是4K视频生成、建筑设计&#xff0c;还是仿真实验等专业领域&#xff0c;AI技术的支持使得过去需要数小时完成的任务如今分钟级即可完成。AI能够生成与人类创作者风格相似的内容&#xff0c;极大地提高了内容…

【Linux】基于驱动框架的程序编写测试

【Linux】基于驱动框架的程序编写测试 字符设备驱动工作原理☆ 驱动程序开发驱动程序开发步骤驱动代码框架驱动框架设计流程 编译与测试编译测试 参考博文&#xff1a; 【Linux】基于框架编写驱动代码、驱动代码编译和测试 Linux驱动&#xff08;驱动程序开发、驱动框架代码编…

智能摄像头DIY教程

你要去度假&#xff0c;想看看家里的情况吗&#xff1f;你想了解人工智能和计算机视觉吗&#xff1f;你有 Raspberry Pi、网络摄像头和一些空闲时间吗&#xff1f;那么这个项目就是为你准备的&#xff01; 在本文中&#xff0c;我们将介绍如何使用 Raspberry Pi 在 Python 中创…

Matlab|考虑阶梯式碳交易与供需灵活双响应的综合能源系统优化调度

目录 1 主要内容 目标函数 模型&#xff1a; 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序方法复现《考虑阶梯式碳交易与供需灵活双响应的综合能源系统优化调度》&#xff0c;提出了供需灵活双响应机制&#xff0c;供应侧引入有机朗肯循环实现热电联产机组热电输…

MongoDB入门:安装及环境变量配置

一、安装MonggoDB Windows系统安装MongoDB 1、下载MongoDB安装包 访问MongoDB官方网站&#xff0c;选择与Windows系统相匹配的MongoDB Community Server版本进行下载。 Download MongoDB Community Server | MongoDB 2、安装MongoDB 双击下载好的安装包文件&#xff0c;根…

从Midjourney到秒画:探索国产AI绘图的崛起与未来

最近&#xff0c;许多人在询问&#xff1a; 是否有优秀的国产AI绘图产品&#xff1f; 如果让我推荐一款AI绘图工具&#xff0c;那毫无疑问是Midjourney。它在AI绘图领域的地位堪比OpenAI在人工智能领域的影响力&#xff0c;处于领先的水平。 不过&#xff0c;Midjourney的使用…

[Linux]僵尸进程,孤儿进程,环境变量

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

Unity 查看Inspectors组件时严重掉帧

遇到一个问题&#xff0c;就是运行一个脚本的时候&#xff0c;只要我查看它的Inspectors&#xff0c;就会严重掉帧。 原本是30fps&#xff0c;只要查看这个组件&#xff0c;就掉到5fps。 这还真有点像波粒二象性&#xff0c;一观察就会掉帧&#xff0c;不观察就正常。 using…

【Ubuntu】minicom安装、配置、使用以及退出

目录 1 安装 2 配置 3 使用 4 退出 minicom是一个串口通信的工具&#xff0c;以root权限登录系统&#xff0c;可用来与串口设备通信。 1 安装 sudo apt-get install minicom 2 配置 使用如下命令进入配置界面&#xff1a; sudo minicon -s 进入配置界面后&#xff0c;…

Html2OpenXml:HTML转化为OpenXml的.Net库,轻松实现Html转为Word。

推荐一个开源库&#xff0c;轻松实现HTML转化为OpenXml。 01 项目简介 Html2OpenXml 是一个开源.Net库&#xff0c;旨在将简单或复杂的HTML内容转换为OpenXml组件。 该项目始于2009年&#xff0c;最初是为了将用户评论转换为Word文档而设计的 随着时间的推移&#xff0c;Ht…

人工智能技术在电磁场与微波技术专业的应用

在人工智能与计算电磁学的融合背景下&#xff0c;电磁学的研究和应用正在经历一场革命。计算电磁 学是研究电磁场和电磁波在不同介质中的传播、散射和辐射等问题的学科&#xff0c;它在通信、雷达、无 线能量传输等领域具有广泛的应用。随着人工智能技术的发展&#xff0c;这一…

清美项目 vue总结

vue绑定表单验证 <el-form ref"classform" :model"classform" :rules"classRules" label-width"80px"><el-form-item label"转入班级" prop"classId"><el-select v-model"classform.classId&…