以下是从该网页截图中获取的关于漏洞的关键信息,使用简洁的Markdown格式返回: --- 漏洞概述 漏洞类型: 任意文件上传 影响产品: emlog v2.6.1 影响组件: REST API 上传端点 ( 方法) 严重性: 严重 (CVSS 分数: 9.1) 攻击向量: 远程 验证: 必须 (API密钥或管理Cookie) --- 漏洞描述 emlog v2.6.1 暴露了一个REST API端点 ( ) 用于媒体文件上传。端点没有实现对文件类型的适当验证、扩展名和内容,允许经过身份验证的攻击者(具有有效的API密钥或管理会话Cookie)向服务器上传任意文件(包括恶意PHP脚本)。攻击者可以通过获得管理器访问以启用REST API设置,或者通过应用程序中的信息泄露漏洞来获得API密钥。一旦上传,恶意PHP文件就可以执行以在目标服务器上获得远程代码执行(RCE),导致服务器完全妥协。 --- 技术分析 3.1 根因 漏洞源于文件上传工作流中的多个关键缺陷: 1. 缺乏文件类型验证: 方法在 中仅检查是否提供了文件 ( ),但没有验证文件的MIME类型、扩展名或内容。 2. 不受限制的文件存储: 方法将文件元数据(包括原始文件名和路径)盲目存入数据库,而没有对文件名进行清理或限制允许的扩展名。 3. 不安全的文件处理: 操作处理程序(通过 调用)不强制执行文件扩展名白名单,允许直接上传PHP文件。 3.2 关键易受攻击的代码片段 3.2.1 Api_Controller::upload(REST API端点) 3.2.2 Media_Model::addMedia(文件元数据存储) --- 4. 概念验证(POC) 4.1 请求详细信息 4.2 预期结果 1. 服务器响应一个 状态,并返回上传文件的URL(例如: )。 2. 访问返回的URL( ) 执行 函数,证实任意PHP代码执行。 --- 5. 影响 远程代码执行: 攻击者可以上传并执行恶意PHP脚本,以窃取敏感数据(例如:数据库凭证)、修改网站内容,或取得对服务器的完全控制。 数据泄露: 被攻破的服务器可能会暴露用户的凭证、博客内容和其他在emlog数据库中存储的敏感信息。 服务器陷落: 攻击者可以使用RCE来安装恶意软件,创建后门,或参与僵尸网络活动。