外链论坛

 找回密码
 立即注册
搜索
查看: 21|回复: 4

代码审计 | CNVD 1day Emlog_pro 任意文件上传2则

[复制链接]

3065

主题

148

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99118926
发表于 2024-10-3 09:30:18 | 显示全部楼层 |阅读模式

免责声明

因为传播、利用本公众号所供给的信息而导致的任何直接间接的后果及损失,均由运用自己负责,公众号及作者不为此承担任何责任,一旦导致后果请自动承担!如有侵权烦请通知咱们会立即删除并致歉。谢谢!

欢迎关注本公众号,长时间推送技术文案

前言

前段时间给大众分享了一篇关于Emlog的SQL注入的代码审计,今天继续给大众分享一篇关于emlog的代码审计文案

以下两则该漏洞均属于后台任意文件上传,两则思路是同样的,只是上传的位置区别,用来学习代码审计思路是蛮好的

环境配置

影响版本:emlog emlog pro 2.2.0

漏洞存在位置:

emlog pro /admin/plugin.php存在任意文件上传漏洞

emlog pro /content/templates/存在任意文件上传漏洞

Emlog官网下载存在漏洞版本的源码:

https://github.com/emlog/emlog/releases

运用PhpStudy进行搭建,配置数据库信息,搭建完成界面如下。

代码审计

CNVD-2023-74535

按照提示emlog pro/admin/plugin.php存在任意文件上传漏洞,远程攻击者可利用该漏洞提交特殊的请求,可上传恶意文件,以应用程序上下文执行任意代码。

咱们先瞧瞧网页长什么样子

这儿有个上传的,按黑盒测试来讲第1反应便是这儿的问题,测就完啦

此刻咱们是有源码的,瞅瞅这个文件,这儿有个小技巧,咱们能够查看这个安装插件,瞧瞧这个位置

这儿咱们能够晓得,上传的函数在upload_zip里面

if ($action == upload_zip) { 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; } }

大体查看一番,这儿便是检测上传的文件必须是zip,而后便是直接解压,这儿咱们尝试写一个phpinfo,而后将其进行压缩测试

将其进行压缩

提示上传失败

按照这个提示,定位代码的位置

<?php if (isset($_GET[error_e])): ?> <div class="alert alert-danger">安装失败,插件安装包不符合标准</div><?php endif ?>

继续查看这个error_e,这个是一个按照emUnZip返回值进行判断的

$ret = emUnZip($zipfile[tmp_name], ../content/plugins/, plugin);

继续跟踪这个emUnZip函数,能够发掘他需要获取一个路径$dir,然则咱们的压缩包里面便是一个文件,因此报错

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; }

咱们重新构建一下压缩包

此刻压缩包结构为shell/shell.php,重新上传

成功上传,这儿什么提示,不外这儿咱们能够查看源码路径结构,直接复制插件源码进行压缩就能够看见了

咱们想的是合适的,拜访位置http://127.0.0.1:81/content/plugins/shell/shell.php

CNVD-2023-74536

按照漏洞提示emlog pro/content/templates/存在任意文件上传漏洞,远程攻击者可利用该漏洞提交特殊的请求,可上传恶意文件,以应用程序上下文执行任意代码。

查看这个文件所在的网页

以上漏洞同样的页面,估计漏洞同样规律,查看这个上传位置

调用的同一个函数upload_zip,就不继续跟踪啦

总结

感谢大众看到这儿文案写的必要啰嗦,大众请多多包涵。

关于文件上传,大众能够多关注一下函数,例如$_FILESmove_uploaded_fileis_uploaded_file等,以及直接搜索上传、文件upload.php都是能够的,特征点比较显著,咱们只需要重视过滤以及各样限制

以上只是鄙人的一点拙见,各位师傅瞧瞧就行,嘿嘿

往期精彩:

代码审计 | CNVD Emlog_Pro的二次SQL注入漏洞

干货 | SRC挖掘中容易被忽略的细节





上一篇:专业的视觉特效软件 Boris FX Mocha Pro 2024 +插件MacOS 激活版
下一篇:[漏洞复现] CVE-2024-33752 emlog后台插件任意文件上传
回复

使用道具 举报

2979

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569190
发表于 2024-10-11 09:34:56 | 显示全部楼层
楼主听话,多发外链好处多,快到碗里来!外链论坛 http://www.fok120.com/
回复

使用道具 举报

3083

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098788
发表于 2024-10-12 07:46:19 | 显示全部楼层
外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢!
回复

使用道具 举报

2983

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109240
发表于 2024-10-20 16:17:12 | 显示全部楼层
太棒了、厉害、为你打call、点赞、非常精彩等。
回复

使用道具 举报

3053

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139078
发表于 2024-10-25 23:29:17 | 显示全部楼层
对于这个问题,我有不同的看法...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-20 19:28 , Processed in 0.101038 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.