应急响应|由log4j攻击事件到泛微OA任意文件上传漏洞分析

应急响应|由log4j攻击事件到泛微OA任意文件上传漏洞分析

2bb7a74f48acccae264260e7ea818386

前段时间log4j远程代码执行漏洞可谓是掀起了一股浪潮,伴随而来的是接踵而来的应急,那天被客户一个电话紧急叫走了,到了现场查看了我司的流量设备,果不其然,捕获的攻击事件数据包显示已经被成功利用了。紧接着就是一系列的应急流程,通过公开的exp帮助客户检查了所有的资产,并协助其升级为了RC2版本。

a69a34f8128f6082e84e320ceceb85cc
根据攻击者的poc显然是log4j的利用,对攻击源IP进行了溯源,微步情报显示为恶意IP,并且带有log4j的标识,显然就是攻击者的IP地址了9b84296fcae7de981a0fc7d0df68843a2b8f0597f3e1325e8118d6c207eaa164

正当以为此次应急事件就此结束之时,在流量设备上搜索攻击者IP发现了另一起攻击事件,,根据攻击路径去进行溯源,结合搜索到的资料,发现是前不久微步公开捕获的泛微e-office任意文件上传漏洞

d63c5e386f7e8af615d28b3c8b43d563
之后在征得同意之后登录到了这台winserver机器上,并找到了攻击者上传的恶意代码,下载到了本地,用微步沙箱进行检测确认为哥斯拉的马,之后协助进行了后门的清除。8f297bab363c0f06affa500663f552d7

​紧接着进行了漏洞利用的复现,根据捕获的数据包,利用BurpSuite进行构造攻击,根据响应包输出的logo-eoffice.php,远程登录到机器上找到文件,可以看到已经成功写入了复现构造的恶意代码。

230b155abc02107861343e3f978b5f1f81f15aa49d7de423ecba465ae01bdfd2
​之后根据cnvd的通报到泛微官网下载了更新包打上了补丁,封堵漏洞入口。应急结束之后,和一个大哥提起这个漏洞,巧的是刚好有e-office的安装包,那就借此机会来分析一下。

环境搭建

这里在安装的时候,如果本地有启php+mysql服务需要先关闭,安装程序在安装的时候会直接启动php+mysql,避免因为冲突导致mysql运行失败,数据库无法连接c641aaa7859c05aaa7e5665a2a8b5aca

 

漏洞分析
根据poc定位到漏洞点
webroot\general\index\UploadFile.php
调用的是UploadFile类中的uploadPicture方法e4d6d50ff9ecdae296c0eddc98203d5b

 这里首先会对获取到的$_FILES数组进行判断,如果数组为空那么就不会接着往下,并且也不会有任何的异常抛出;调试可以发现数组中有五个键值对,包括上传时的文件名,临时文件名,文件的类型,大小以及是否有异常

接着$uploadType获取到的是GET或者POST传参传递的uploadType值,并且下面的代码都与这个uploadType参数值直接相关,根据poc传入的uploadType=eoffice_logo,直接来看到对应的代码部分
general\index\UploadFile.php#124

41f96435d7c4ef503b42fc0e9b11a703
 跟进查看$_SERVER[‘DOCUMENT_ROOT’]默认值为空,所以$targetPath=/images/logo/,之后会判断是否存在对应的路径,如果不存在就会创建相应的文件夹。自会后调用类中的getFileExtension方法,传入方法中的参数为前面提到过的二维数组中的文件名,跟进方法

dd4701839b28d7dd83f65f27fdfeceb0
调用strrpos来获取.在$file参数中最后出现的位置,之后调用substr来截取$file从$pos位置开始的所有字符串,简而言之就是获取到上传的文件名后缀
回到上面,接着往下

1. $_targetFile = “logo-eoffice” . $ext;

2. $targetFile = str_replace(“//”, “/”, $targetPath) . “/” . $_targetFile;

3. if (move_uploaded_file($tempFile, $targetFile))

这里会进行两次拼接最后拼接成上传的文件存储的路径和相应的文件名
后面可以看到调用move_uploaded_file方法将上传后临时保存的$tempFile移动到最后的$targetFile路径下面,后面的代码部分涉及到数据库操作,和这个漏洞并没有太大的关系。所以整个的漏洞分析就到这里了
利用poc来打一下

7847b17afcde23bb9c986abdd295210a8de72e39a3547553f9cbe7a0f938431a
漏洞修复

对比补丁包中的更新代码部分,对可以上传的文件后缀进行了限制。

ea97082469444982114c23e5528c6d54
此外通过审计Uploadfile类中uploadPicture方法中其他几种uploadType的代码,可以发现都是有相应的文件后缀白名单限制的。由此可以推测这里应该是开发人员的失误导致忘记添加白名单,也就造成了该任意文件上传漏洞,并且并不需要管理员权限。

e1e96219645d2c0658973305cfc640ec

本文来自投稿,不代表安强科技社区立场,如若转载,请注明出处:https://community.anqiangkj.com/archives/2731

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年1月13日 下午11:10
下一篇 2022年1月13日 下午11:23

相关推荐

发表回复

您的电子邮箱地址不会被公开。