目录

1.漏洞信息

2.调试配置

3.Restful API认证绕过

4.任意文件上传

5.命令注入

6.后记

7.参考


有需要了解更多漏洞情报小伙伴,请关注微信公众号:且听安全。聪者听于无形,明者见于未形;专注网络安全,关注漏洞态势;拒绝重复搬运,只做精品原创。

1.漏洞信息

2021年9月,Zoho官网发布了CVE-2021-40539漏洞补丁:CVE-2021-40539。从描述来看,CVE-2021-40539是一个认证绕过漏洞,影响版本包括`ADSelfService Plus builds up to 6113`,漏洞在`ADSelfService Plus build 6114`版本中完成了修复。漏洞脆弱点位于Restful API接口中,攻击者可以构造特殊的URL请求,绕过认证后实现RCE,官方给出了漏洞利用的示意图:

2.调试配置

下载6113版本进行安装。安装完毕后运行自启动命令如下:

"C:\ManageEngine\ADSelfService Plus\bin\Wrapper.exe"  -c  "C:\ManageEngine\ADSelfService Plus\bin\\..\conf\wrapper.conf"

修改`wrapper.conf`文件,加入远程调试信息:

-Xrunjdwp:transport=dt_socket,address=0.0.0.0:8787,server=y,suspend=n

重新启动成功打开远程调试端口:

3.Restful API认证绕过

查看`web.xml`,Restful API接口对应servlet为`action`:

URL以`/RestAPI/*`开头,查看`action`定义:

Restful API接口采用struts架构生成,访问接口的定义位于`*.xml`配置文件中。

`web.xml`定义了一个名为`ADSFilter`的全局过滤器:

`com.manageengine.ads.fw.filter.ADSFilter#doFilter`

第65行首先判断如果是Restful API访问,尝试提取认证信息,然后调用`doSubFilters`:

经过一系列判断,进入第136行,对Restful API访问进行检查:

调用`isRestAPIRequest`函数判断是否为Restful API访问,如果为`true`,将调用`RestAPIFilter.doAction`进行认证信息验证等处理,看下`isRestAPIRequest`函数定义:

通过`request.getRequestURI`提取URL信息,这里通过正则表达式`/RestAPI/.*`来判断是否为Restful API访问,因为Zoho ManageEngine ADSelfService Plus使用的是Tomcat容器,下面的两个请求等价:

/RestAPI/LicenseMgr
/./RestAPI/LicenseMgr

但是第二个请求部匹配正则表达式,存在绕过的可能性。`/RestAPI/LicenseMgr`对应的处理类为`LicenseMgr`,打下断点:

  • 请求一:`/RestAPI/LicenseMgr`:

可以发现在`com.manageengine.ads.fw.filter.ADSFilter#doSubFilters`没有通过权限检查,返回`false`。

  • 请求二:`/./RestAPI/LicenseMgr`

绕过了认证检查。

下面继续分析在绕过认证之后,是否存在进一步利用的可能性。

4.任意文件上传

前面提到了Restful API的接口定义位于`*.xml`文件之中,在`struts-config.xml`中找到`LogonCustomization`:

`com.adventnet.sym.adsm.common.webclient.admin.LogonCustomization`:

对参数进行一系列判断后,进入`sCAction.addSmartCardConfig`:

跟进`addSmartCardConfig`:

第94行调用`FileActionHandler.getFileFromRequest`提取`certFileJson`,进入函数:

其中参数`paramName`来源于请求提交的`CERTIFICATE_PATH`参数,实际上就是将上传的文件(来源于参数`CERTIFICATE_PATH`)进行保存。

构造一个文件上传的POST请求,根据前面的分析设置参数,最终请求如下:

文件上传至`\ManageEngine\ADSelfService Plus\bin`目录,尝试利用`../`进行穿越,但是`formFile.getFileName`只会提取文件名称,导致前面的`../`无效,无法进行穿越。

5.命令注入

现在可以实现未授权向`bin`目录写入任意文件,文件名称和文件内容完全可控,由于无法实现路径穿越,也就无法直接Getshell。进一步分析,在`struts-config.xml`中找到`ConnectionAction`:

`com.adventnet.sym.adsm.common.webclient.admin.ConnectionAction#openSSLTool`:

进入`SSLUtil.createCSR`:

实例化`JSONObject`对象`sslParams`,其中的参数全部来自于`request`,然后调用`createCSR`,跟进:

实例化字符串`keyCmd`,然后根据`JSONObject`的值完成字符串拼接,最后调用`runCommand`:

猜测可能会调用`runtime`执行命令,在`exec`处打下断点,构造请求进行测试:

确定调用了`Runtime.exec`来执行命令,参数为:

..\jre\bin\keytool.exe  -J-Duser.language=en -genkey -alias tomcat -sigalg SHA256withRSA -keyalg RSA -keypass "null" -storePass "null" -dName "CN=null, OU= null, O=null, L=null, S=null, C=null" -keystore ..\jre\bin\SelfService.keystore

`keytool.exe`是Java提供的一个生成数字证书的工具:

其中参数`providerclass`和`providerpath`可以用于指定Java字节码class文件的名称和路径,当调用`keytool.exe`时,会自动执行对应Java代码。很自然可以想到结合上面的任意文件上传漏洞,上传一个恶意class文件到bin目录,然后通过构造POST参数实现RCE。

首先构造一个恶意类`evil.java`:

public class evil {public evil()throws Exception{Runtime.getRuntime().exec("calc");}
}

编译evil.class文件后,上传至bin目录:

利用接口`ConnectionAction`构造如下请求:

触发断点,实际执行的命令如下:

..\jre\bin\keytool.exe  -J-Duser.language=en -genkey -alias tomcat -sigalg SHA256withRSA -keyalg RSA -keypass "null" -storePass "null" -keysize 123 -providerclass evil -providerpath "C:\ManageEngine\ADSelfService Plus\bin" -dName "CN=null, OU= null, O=null, L=null, S=null, C=null" -keystore ..\jre\bin\SelfService.keystore

成功实现RCE:

6.后记

CVE-2021-40539实现RCE的过程由3个漏洞组成,分别是Restful API认证绕过、任意文件上传以及命令拼接。在深入分析过程中,发现文件上传和命令执行还有其他的触发点,这里不过多赘述。此外,在`ADSelfService Plus build 6114`版本中,补丁更新的地方非常多,但对漏洞的修复并不完善,仍然可以被bypass,直到在更新的版本中,漏洞才得到较为完善的修复,有兴趣的小伙伴可以自行分析。

有需要了解更多漏洞情报小伙伴,请关注微信公众号:且听安全。聪者听于无形,明者见于未形;专注网络安全,关注漏洞态势;拒绝重复搬运,只做精品原创。

7.参考

CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE

CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE相关推荐

  1. FireEye红队失窃工具大揭秘之:分析复现Zoho ManageEngine RCE (CVE-2020-10189)

     聚焦源代码安全,网罗国内外最新资讯! 前言 最近,全球领先的网络安全公司 FireEye 疑遭某 APT 组织的攻击,其大量政府客户信息遭越权访问,且红队工具被盗.虽然目前尚不清楚这些红队工具将被如 ...

  2. CISA提醒修复Zoho ManageEngine RCE漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 摘要 本周四,美国网络安全和基础设施安全局 (CISA) 提醒称,网络攻击活动正在利用最近修复的一个Zoho ManageEngine 漏洞 ( ...

  3. Black Hat USA 2021:通过无线基带-针对5G智能手机的RCE白皮书

    Over The Air Baseband Exploit: Gaining Remote Code Execution on 5G Smartphones 通过无线基带针对5G智能手机的RCE白皮书 ...

  4. 学习笔记-B/S - Exploits

    B/S - Exploits 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 各类论坛/CMS框架 AEM 74CMS dedeC ...

  5. 速修复!CISA警告称 Zoho 服务器0day已遭在野利用

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 美国网络安全和基础设施安全局 (CISA) 督促组织机构应用 Zoho ManageEngine 服务器的最新安全更新,修复已遭在野利用一周多的 ...

  6. Zoho:尽快修复已遭利用的 ManageEngine 严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 商业软件提供商 Zoho 督促客户尽快将 Desktop Central 和 Desktop Central MSP 更新至最新版本. Zoho ...

  7. 超8成项目存在高危开源漏洞 《2021中国软件供应链安全分析报告》发布

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  8. Zoho 修复Desktop Central 中的又一个严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Zoho 修复了一个新的严重漏洞(CVE-2021-44757),它影响 Zoho Desktop Central 和 Desktop Cent ...

  9. 研究员拒绝提前通知,Zoho 匆忙修复一个严重的 0day

    聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 业务工具开发公司 Zoho 指出,已修复影响其 ManageEngine Desktop Central 产品的一个严重的0day. M ...

最新文章

  1. 20080826 - Delphi 2009 来了
  2. socket 2.草稿。
  3. 130701基础练习-first
  4. python函数代码_如何显示Python函数的代码?
  5. linux java 部署 生产环境
  6. 4am永远 鼠标按键设置_4AM碾压性夺冠创PCL历史!韦神赛后采访彰显霸气
  7. 泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow
  8. 用java编写录音机类_java实现录音机
  9. IMO船舶材料防火安全规范
  10. 学习总结-在Icepak模型中修改和增加零件
  11. 成年人夜生活的自救! 华熙LIVE·五棵松放大招
  12. 解决git克隆到本地的仓库文件夹不显示红色感叹号、绿色对号等图标的问题
  13. 华为路由器接口如何区分_华为路由器接口管理命令有哪些
  14. “拼多多和短视频极速版”,让我怎么吐槽你好呢!
  15. CSS 实现文字渐变色
  16. 《Unix编程艺术》重读笔记(三)
  17. Python ORM框架peewee
  18. Intel第十代CPU集成显卡不再支持 Legacy启动 (i5-10400...)
  19. python自动化ppt_python自动化办公手册之python操作PPT
  20. 详解UniSwap、无聊猿、PlatoFarm空投的逻辑

热门文章

  1. 【Codeforces 777 D Cloud of Hashtags】
  2. 逻辑斯蒂回归(logistic regression)原理小结
  3. 信号系统matlab实例3——卷积的matlab求解
  4. 备份 mysql数据
  5. 使用Julia运用JuMP和Clp求解Lp和ILP问题(分支定界法)
  6. NOIP 2018 滚粗记(bushi)
  7. 62套儿童行业响应式Html5儿童慈善机构网站模板儿童公益组织企业官网模板儿童慈善CSS模板下载婴儿树儿童健康食品整站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
  8. 58同城和赶集网要合并了!
  9. 【数据结构】(森林)以孩子兄弟链表为存储结构,请设计递归算法求树的深度
  10. 新页微NY7503S无线充芯片10w