当前位置: 首页 > news >正文

CTFHub 信息泄露通关笔记4:备份文件下载 bak文件

目录

一、bak备份文件

1、手动生成:开发者主动备份

2、自动生成:工具 / 服务器被动备份

二、bak信息泄露

1、本质

2、特性

(1)通用性强:跨工具、跨平台

(2)易猜测性:文件名可预测

(3)危害直接:泄露内容可直接利用

三、渗透实战

1、打开靶场

2、信息搜集

(1)DirSearch工具

(2)Dirmap工具

3、下载index.php.bak

4、获取flag

5、总结

第一步:信息收集与探测

第二步:获取与分析备份文件

第三步:代码审计与利用构造

第四步:获取Flag与总结


本文通过CTFHub的备份文件下载-bak文件关卡的渗透实战,详细介绍了.bak备份文件的信息泄露风险。.bak文件作为常见的备份文件后缀,可能因开发者疏忽残留在Web目录中,导致源代码和敏感信息泄露。文章首先分析了.bak文件的两种生成方式(手动和自动)及其特性(通用性强、易猜测、危害直接)。随后通过CTFHub靶场演示渗透过程:使用DirSearch和Dirmap工具扫描发现index.php.bak文件,下载并分析该备份文件获取flag。最后总结了渗透测试的四个关键步骤:信息收集、获取备份文件、代码审计和利用构造。文章强调了.bak文件泄露的安全风险及防范措施。

一、bak备份文件

.bak 是 “Backup”(备份)的缩写,并非某一工具的专属后缀,而是行业通用的备份文件命名习惯—— 开发者或服务器在修改、删除文件前,会手动或自动生成原文件的副本,并添加 .bak 后缀标识,用于 “误操作后恢复原始内容”。其生成逻辑与本质可分为两类:

1、手动生成:开发者主动备份

这是 .bak 文件最主要的来源。开发者在编辑服务器上的关键文件(如配置文件、代码文件)时,为防止修改出错无法回滚,会手动复制原文件并添加 .bak 后缀。例如:

  • 原文件:config.php(存储数据库账号密码的配置文件);
  • 开发者执行命令 cp config.php config.php.bak(Linux/macOS)或 copy config.php config.php.bak(Windows),生成备份文件;
  • 开发者修改 config.php(如更新数据库地址),若修改后出现错误,可通过 cp config.php.bak config.php 恢复原始内容;
  • 若开发者忘记删除 config.php.bak,该文件会残留于 Web 根目录,成为信息泄露源。

2、自动生成:工具 / 服务器被动备份

部分工具或服务器软件会默认开启 “自动备份” 功能,将 .bak 作为默认后缀,无需开发者手动操作。常见场景包括:

  • 文本编辑器自动备份:部分编辑器(如 Notepad++、Sublime Text)可配置 “保存时自动生成.bak 文件”,例如 Notepad++ 开启 “备份” 功能后,编辑 index.php 并保存时,会自动生成 index.php.bak
  • 服务器管理工具备份:如宝塔面板、cPanel 等可视化管理工具,在 “文件修改”“网站迁移” 功能中,会自动生成 .bak 备份(如修改 nginx.conf 时生成 nginx.conf.bak);
  • 脚本 / 程序自动备份:开发者编写的自动化脚本(如数据库备份脚本、代码更新脚本),可能将 .bak 作为备份文件的统一后缀(如 bash backup.sh 脚本执行时生成 data.sql.bak)。

二、bak信息泄露

1、本质

bak文件信息泄露本质:未被清理的 “原始文件副本”。无论手动还是自动生成,.bak 文件的核心本质是“原始文件的完整副本”:

  • 内容完整性:.bak 文件与原文件完全一致,无加密、无编码(纯文本格式),原文件中的代码、注释、敏感变量(如 $dbpass = "123456")会原样保留;
  • 访问可达性:.bak 后缀不属于 Web 服务器默认解析的脚本后缀(如 .php.jsp),会被服务器识别为 “静态文件”,默认允许通过 HTTP 请求直接下载或查看;
  • 隐蔽性弱:.bak 后缀无特殊隐藏标识(如 Linux 中 . 开头的隐藏文件),但因 “非业务文件名” 易被开发者忽略,导致长期残留。

2、特性

与其他备份文件(如 Vim 的 .swp~ 后缀文件)相比,.bak 文件的泄露场景更广泛,核心特性可总结为三点:

(1)通用性强:跨工具、跨平台

  • 无工具绑定:.bak 是通用后缀,不依赖特定编辑器或工具(Vim 的 .swp 仅 Vim 生成,而 .bak 可由任何工具 / 手动操作生成);
  • 跨操作系统:Linux、Windows、macOS 均支持 .bak 后缀命名,无论是服务器还是本地开发环境,都可能产生 .bak 文件;
  • 跨文件类型:.bak 可附加在任何文件后缀后,如 index.php.bak(代码文件)、config.ini.bak(配置文件)、flag.txt.bak(敏感文本)、data.sql.bak(数据库备份),覆盖 Web 场景中绝大多数文件类型。

(2)易猜测性:文件名可预测

.bak 文件的命名规则高度固定 ——“原文件名 + .bak”,攻击者无需复杂扫描,仅需基于 “常见业务文件名” 即可快速猜测:

  • 针对首页文件:index.html.bakindex.php.bakindex.jsp.bak
  • 针对配置文件:config.php.bakdatabase.ini.bakappsettings.json.bak
  • 针对敏感文件:flag.txt.bakbackup.sql.bakadmin_login.php.bak
  • 针对特殊功能文件:upload.php.bak(上传功能)、pay.php.bak(支付逻辑)。

这种 “可预测性” 让 .bak 文件泄露成为 “低技术成本” 的攻击场景 —— 攻击者无需工具,直接拼接 URL 即可尝试访问(如 http://target.com/config.php.bak)。

(3)危害直接:泄露内容可直接利用

.bak 文件的纯文本特性使其泄露的信息 “无需二次处理”,攻击者下载后可直接获取关键信息:

  • 源代码泄露:index.php.bak 泄露网站业务逻辑,攻击者可从中分析 SQL 注入、文件上传、XSS 等风险的触发点;
  • 配置信息泄露:config.php.bak 泄露数据库账号($dbuser)、密码($dbpass)、API 密钥($api_key),可直接用于连接数据库或调用第三方接口;
  • 敏感数据泄露:flag.txt.bak(CTF 场景)直接包含 Flag,user_data.sql.bak 泄露用户账号密码明文 / 哈希;
  • 后门 / 测试代码泄露:test.php.bak 可能包含开发者未删除的测试后门(如 if($_GET['pass']=='123'){eval($_POST['cmd']);})。

三、渗透实战

1、打开靶场

打开关卡如下所示,提示信息为“当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。”,提示本关卡可以利用源码编辑过程中产生的的备份文件进行渗透测试。点击打开题目,此时系统自动创建Docker环境,下图蓝色部分的URL地址就是靶场环境。

打开靶场URL(challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800),进入了备份文件下载-vim页面,提示"flag in index.php source code.",具体如下所示。

http://challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800/

2、信息搜集

(1)DirSearch工具

通过目录扫描工具对challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800进行渗透,这里选择使用dirsearch工具进行渗透,尝试发现隐藏文件或目录,并通过 -i 200 参数设定只输出服务器返回状态码为200(成功)的扫描结果,命令如下所示。

python dirsearch.py -u http://challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800/ -i 200
  • python dirsearch.py: 调用Python运行的dirsearch工具。

  • -u <URL>: 指定要扫描的目标URL。

  • -i 200: 这是一个过滤器(--filter-code的缩写),告诉工具在输出结果时只显示那些响应状态码为200(即请求成功)的路径,屏蔽404错误等其他无效信息,使结果更清晰。

dirsearch的扫描结果如下所示,在网站根目录下发现了index.php.bak文件。

(2)Dirmap工具

通过目录扫描工具对challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800进行渗透,这里选择使用dirmap工具进行渗透,命令如下所示。

python dirmap.py -i http://challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800/ -lcf

其中-lcf--loadConfigFile):该参数表示加载项目根目录下的 dirmap.conf 配置文件,使用文件中定义的详细扫描规则(如字典模式、递归扫描、请求头设置等)。dirmap的扫描结果如下所示,在网站根目录下发现了index.php.bak文件。

3、下载index.php.bak

在url后面输入/index.php.bak,构造完整的URL地址,具体如下所示。

http://challenge-3dc6f0a968244b18.sandbox.ctfhub.com:10800/index.php.bak

访问如上URL地址后页面提示是否下载index.php.bak文件,点击确认保存文件,如下所示。

4、获取flag

打开index.php.bak文件,即可查看到flag值,如下图所示。

5、总结

总结CTFHub“备份文件下载”系列题型的渗透流程,具体如下所示。

第一步:信息收集与探测

渗透开始于高效的信息收集。我们首要目标是探测目标网站可能存在的备份文件。这些文件通常由 vim 等编辑器自动生成,常见形式包括:.index.php.swp (交换文件)、index.php~ (备份文件)、index.php.bak 或整站压缩包如 www.zip。我们使用目录爆破工具(如 dirsearch、dirmap、gobuster)并配合包含这些常见后缀的专用字典,对目标URL进行扫描。同时,手动尝试访问这些常见路径也是一个快速有效的方法。关键在于覆盖全面的文件名和后缀组合,不遗漏任何可能的备份痕迹,为下一步分析奠定基础。

第二步:获取与分析备份文件

一旦扫描器发现或手动尝试确认了备份文件的存在(例如通过HTTP状态码200成功下载了 index.php.bak),立即下载该文件。如果是 .bak 或 ~ 文件,可能直接就是可读的源代码。恢复后,使用文本编辑器或代码编辑器仔细审计源代码,这是发现敏感信息的关键一步。

第三步:代码审计与利用构造

仔细审计恢复得到的源代码,寻找两样东西:一是直接的Flag,可能以明文形式硬编码在配置变量或注释中(如 $flag="ctfhub{...}");二是更深层的安全风险,如数据库连接字符串、API密钥、隐藏的管理功能入口,或具体的代码风险(如SQL注入、命令注入、文件包含)。例如,若发现 system($cmd); 且 $cmd 参数可控,则可能存在命令注入。审计的目标是找到利用点,并据此构思如何构造攻击载荷(Payload)来读取文件、执行命令或获取数据库中的Flag。

第四步:获取Flag与总结

  • 情况一:Flag在源码中 -> 直接复制提交。

  • 情况二:发现数据库凭证 -> 尝试用这些凭证连接数据库(通常题目会开放MySQL端口,用命令行或工具如MySQL Workbench连接),然后在数据库的表中查找Flag。

  • 情况三:发现隐藏功能 -> 根据风险类型(如文件包含、命令执行),构造请求URL或表单数据,获取服务器权限或直接读取敏感文件(如 /flag)来得到Flag。

http://www.dtcms.com/a/435178.html

相关文章:

  • OverlayManager service, overlay, idmap, rro, android
  • 如何拆解一个Java项目?
  • C++ 泛型和特化
  • 【Linux篇】Linux指令进阶:从入门到熟练的实操指南
  • Orleans流系统时序图
  • 专业网站建设价格分析企业建设网站好吗
  • 活动日志系统集成指南
  • 弹幕网站是怎么做的软件开发工程师级别
  • 贵阳市建设局信息管理网站中国建设会计学网站
  • 函数简单传入参数的汇编分析
  • 怎样做已有网站的编辑维护大沥九江网站制作
  • 自己网站首页如何设置网站托管维护方案
  • 安卓基础组件024-底部导航栏
  • 【ROS2学习笔记】话题通信篇:话题通信项目实践——系统状态监测与可视化工具
  • 苏州门户网站平台推广员
  • ICT 数字测试原理 4 --电源监控电路(PMC)
  • 网站内页要不要加上关键词和描述广告型网站怎么做的
  • 深圳市建设局工程交易中心网站贵州 网站建设
  • 【C/C++】 函数形参—指针传递
  • 门限签名与多方安全计算(MPC)
  • 东莞公司高端网站建设高大上网站
  • 基于websocket的多用户网页五子棋(一)
  • PCA 主成分分析:数据世界的 “旅行清单整理师”—— 从 30 维杂乱到 2 维清晰的诗意降维
  • wordpress兼容mipseo加盟代理
  • 台州网站排名优化费用网站建设设计风格描述
  • 利用 ZoneABC 免费域名 零成本接入 Cloudflare 企业版 CDN
  • 企业网站建设费用属于什么科目dw软件网站建设教程
  • Streamlit:基础入门——零基础搭建第一个 Web 应用
  • Netty粘包和半包问题产生的原因和解决方案
  • 【小沐学GIS】基于C++绘制地形DEM(OpenGL、Terrain、TIFF、hgt)第十二期