emlog2.5.3代码审计(后台文件上传漏洞)

2025-04-17 9 0

前言

前几天在学代码审计,翻cnvd看到一个emlog的新漏洞,想着自己复现一下

emlog2.5.3代码审计(后台文件上传漏洞)插图

搭建

访问官网找到对应版本下载即可

https://www.emlog.net/

解压到phpstudy的www目录下

访问install.php即可安装

审计

该漏洞需要登录到后台,因此先进行登录

emlog2.5.3代码审计(后台文件上传漏洞)插图1

进入后台,来到插件这,可以看到有一个安装插件,即上传功能

分析相应的代码

if ($action == 'upload_zip') { if (defined('APP_UPLOAD_FORBID') && APP_UPLOAD_FORBID === true) { emMsg('系统禁止上传安装应用'); } LoginAuth::checkToken(); $zipfile = isset($_FILES['pluzip']) ? $_FILES['pluzip'] : ''; if ($zipfile['error'] == 4) { emDirect("./plugin.php?error_d=1"); } if ($zipfile['error'] == 1) { emDirect("./plugin.php?error_g=1"); } if (!$zipfile || $zipfile['error'] >= 1 || empty($zipfile['tmp_name'])) { emMsg('插件上传失败, 错误码:' . $zipfile['error']); } if (getFileSuffix($zipfile['name']) != 'zip') { emDirect("./plugin.php?error_f=1"); } $ret = emUnZip($zipfile['tmp_name'], '../content/plugins/', 'plugin');switch ($ret) { case 0: emDirect("./plugin.php?activate_install=1"); break;case -1: emDirect("./plugin.php?error_e=1"); break; case 1: case 2: emDirect("./plugin.php?error_b=1"); break; case 3: emDirect("./plugin.php?error_c=1"); break; } }

重点为以下两个部分

emlog2.5.3代码审计(后台文件上传漏洞)插图2

1.emUnZip

function emUnZip($zipfile, $path, $type = 'tpl') { if (!class_exists('ZipArchive', FALSE)) { return 3; //zip模块问题 } $zip = new ZipArchive(); if (@$zip->open($zipfile) !== TRUE) { return 2; //文件权限问题 } $r = explode('/', $zip->getNameIndex(0), 2); $dir = isset($r[0]) ? $r[0] . '/' : '';switch ($type) { case 'tpl': $re = $zip->getFromName($dir . 'header.php'); if (false === $re) { return -2; } break; case 'plugin': $plugin_name = substr($dir, 0, -1); $re = $zip->getFromName($dir . $plugin_name . '.php'); if (false === $re) { return -1; } break;case 'backup': $sql_name = substr($dir, 0, -1); if (getFileSuffix($sql_name) != 'sql') { return -3; } break; case 'update': break; } if (true === @$zip->extractTo($path)) { $zip->close(); return 0; } return 1; //文件权限问题 }

重点为以上加粗的两部分

1.1

emlog2.5.3代码审计(后台文件上传漏洞)插图3

emlog2.5.3代码审计(后台文件上传漏洞)插图4

emlog2.5.3代码审计(后台文件上传漏洞)插图5

使用 ZipArchive::getNameIndex(0) 获取 ZIP 文件中第一个文件的完整路径。

使用 explode 函数将路径按 / 分割,取第一个部分作为目录名($dir),并确保其以 / 结尾。

这里的 $dir 是 ZIP 文件中第一个文件所在的目录,用于后续的文件检查

2.

由于传参是“plugin”,所以主要是这一部分

emlog2.5.3代码审计(后台文件上传漏洞)插图6emlog2.5.3代码审计(后台文件上传漏洞)插图7

要让re不为false

则$dir和$plugin_name需要相同

因此zip目录结构如下

phpinfo/phpinfo.php

即目录要和最后的文件名相同

emlog2.5.3代码审计(后台文件上传漏洞)插图8

上传后访问路径为

emlog2.5.3代码审计(后台文件上传漏洞)插图9

因此访问../content/plugins/phpinfo/phpinfo.php

emlog2.5.3代码审计(后台文件上传漏洞)插图10

结语

本人较菜,有不正确的地方求大佬们指正,谢谢。

目前只审计了这一个漏洞,有其他的漏洞也求大佬们指导一下,谢谢


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

红队APT基础 | 钓鱼邮件的制作与SPF绕过(一)
新型BPFDoor控制器组件助力攻击者在Linux服务器中实现隐蔽横向移动
WordPress热门插件SureTriggers曝高危漏洞,4小时内遭大规模利用
虚假PDFCandy网站通过谷歌广告传播恶意软件
打靶日记——Brainpan1
攻击者滥用AI平台仿冒微软登录 多阶段钓鱼攻击窃取实时凭证

发布评论