Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:11082 篇
已收录公众号数量:89 个
本站文章为爬虫采集,如有侵权请告知
本周热门文章
绕过CDN寻找真实IP的8种方法   2020.05.25 08:00:22  72
某真实渗透实践案例分析   2020.05.24 18:00:44  71
FOFA 4.0 beta版全新改版   2020.05.22 19:55:25  64
Powershell攻击指南----黑客后渗透之道   2020.05.26 15:37:51  61
每日安全动态推送(05-25)   2020.05.25 07:54:43  61
2020网鼎杯-玄武组-部分WriteUp   2020.05.25 08:00:19  57
每日安全动态推送(05-26)   2020.05.26 08:32:28  55
已收录微信公众号
网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
CVE-2020-10189 Zoho ManageEngine反序列化远程代码执行
本文来自公众号:安全客   2020.03.19 18:19:02

漏洞描述

2020年3月6日,有安全研究人员 steventseeley 在Twitter上发布了Zoho企业产品 Zoho ManageEngine Desktop Central 中的反序列化远程代码执行漏洞.利用该漏洞可直接控制安装该产品的服务器,该产品为Windows系统上运行的一种端点管理解决方案,客户可用它管理网络中的设备,例如:Android手机,Unix服务器以及Windows工作站等.它往往充当公司内部的中央服务器,帮助系统管理员推送更新,远程控制系统,锁定设备,控制访问权限等。

影响版本

Zoho ManageEngine Desktop Central < 10.0.479

漏洞编号

CVE-2020-10189

威胁等级

高危

漏洞分析

1.寻找反序列化点

我们进入 DesktopCentral_Server/webapps/DesktopCentral/WEB-INF/ 目录提取 web.xml ,可以看到一个名为 CewolfServlet servlet .

servlet 对应的 class de.laures.cewolf.CewolfRenderer ,该类存在于 DesktopCentral_Server/lib/cewolf-1.2.4.jar
该类中的get方法使用 img 参数接受 imgKey 的值

imgKey将会被 Storage 类中的 getChartImage 方法调用

在该jar包中存在一个 FileStorage 类基于 Storage 类实现接口的类.在其内部存在一个 storeChartImage 方法,该方法直接将接收到的文件流存储在本地.该方法内部调用一个 getFileName 类用于拼接base路径.

在查看 storeChartImage 方法的同时,我注意到还有一个获取文件的方法 getChartImage .

清晰可见的是它执行了一个非常危险的操作,直接让 ObjectInputStream 执行了 readObject 方法.可见这就是漏洞的触发点.那么问题来了,有了反序列化的点,序列化文件的点从哪里来?

2.寻找文件上传点

于是我再次检索 web.xml ,发现了一个具有上传功能的 servlet .

servlet 对应 DesktopCentral_Server/lib/AdventNetDesktopCentral.jar 中的 com.me.mdm.agent.servlets.file.MDMFileUploaderServlet .

在该类中存在 Post 方法,可见 udid filename 为可控点,我们完全可以自己传值控制.当然 udid 其实也做了三种安全检查,但并不影响目录穿越的产生.

filename 被做了后缀名限制,只允许为 log|txt|zip|7z 其中一种

其实在 security-mdm-agent.xml 做了进一步限制

只允许完整文件名称为 logger.txt|logger.zip|mdmlogs.zip|managedprofile_mdmlogs.zip .不过这丝毫不影响我们上传恶意的序列化文件.

3.寻找序列化可用的gadgets

我们进入 DesktopCentral_Serverlib 目录,寻找有漏洞的jar.

可见我们发现了 commons-collections.jar commons-beanutils-1.8.0.jar

commons-collections.jar 不确定具体版本,我们查看一下版本

太完美了它是 commons-collections:3.1 .可见我们可以利用 CommonsBeanutils1 CommonsCollections3 两条gagdets.当然还有jdk的两条gagdets, JDK7U21 JRE8U20 .

我们请出反序列化文件构建神器—— ysoserial .

我们使用 ysoserial 中的两条gadgets构建序列化文件即可.但是这里我们需要注意的是如果直接使用可能会反序列化失败,

这是由于我们在打包 ysoserial 时默认的依赖版本是 1.9.2 ,而 Zoho ManageEngine Desktop Central 自带的是 commons-beanutils-1.8.0 ,这将导致 UID 不同,从而造成反序列化失败.我们只需要修改 ysoserial pom.xml 中的 commons-beanutils 为1.8系列即可

4.效果演示

为了满足漏洞管理条例,本文不直接放出payload,可自行参考文末的公开payload

Reference

https://nosec.org/home/detail/4211.html
https://srcincite.io/pocs/src-2020-0011.py.txt
https://nvd.nist.gov/vuln/detail/CVE-2020-10189