致远OA最新0day_前台安全绕过+RCE

admin 2024年3月7日15:30:32评论178 views字数 1781阅读5分56秒阅读模式
    师傅们,最近较忙,没啥时间写文章,但是遇到有好文章直接转,深怕你们错过了,喜欢这篇文章的给该安全绘景公众号点点关注!
    老样子,师傅们如果有用到该平台的漏洞,要记得及时找厂商进行修复以及做好防护策略,这样子就可以预防一下啦。

简介

致远OA存在前台密码重置漏洞,可以重置系统中默认账户,使用重置后的密码通过接口获取cookie后可getshell,此组合拳可以实现致远的前台RCE

漏洞复现

  1. 重置系统中默认的管理员密码

未重置前通过密码获取cookie失败

致远OA最新0day_前台安全绕过+RCE

重置审计管理员密码

致远OA最新0day_前台安全绕过+RCE

  1. 使用重置后的密码通过接口获取cookie

致远OA最新0day_前台安全绕过+RCE

  1. 获取当前用户信息,确认cookie有效性
致远OA最新0day_前台安全绕过+RCE
  1. getshell
详情见后续分析。

分析

密码重置这个漏洞在去年用了挺多次的,后来打了补丁后能打的不多了,本来打算开工后就写文章,一直忙于项目。正好最近看到有师傅分析了整个过程,公众号上也有一些风声,索性蹭一波师傅的文章进行学习和补充。
阅读下文前强烈推荐看这一篇文章,本文基于这篇文章(https://xz.aliyun.com/t/13741)进行补充。
前面分析基本上都和上面文章中一致则不再赘诉,在文章最后说到,需要使用普通用户权限修改管理员密码,从而实现RCE或留后门。如果只是这样,那这个漏洞其实也就是越权,实用性不太强;因为致远后台本身就存在低权限getshell的漏洞,所以有了用户就不需要进行此操作。
  • 思考
这个漏洞如果是前台的话,则实用性就非常强,不再需要爆破弱口令等方式来进入后台。通过此漏洞直接前台重置默认管理员密码后使用接口来获取cookie,从而后台getshell;通过这种组合拳,基本上可以实现致远前台RCE。感谢参考文章师傅的分析和分享,下面我的水文开始。
  • 什么情况下不需要登录就可以访问
查阅致远开发文档后可知,如果声明了@NeedlessCheckLogin注解,则不需要登录即可访问。当Controller上声明此注解时,所有aciton都不需要登录;如果在某个Controlleraction上声明此注解,则表示当前action不需要登录。
致远OA最新0day_前台安全绕过+RCE
  • 哪些Controller声明了此注解
经过一番简单寻找,发现GenericControllerShareController在action中声明了此注解(可能还有其他Controller,当时找到这两个后就没有继续寻找)。所以调用这两个Controlleraction时,不需要登录即可访问。
GenericController:

致远OA最新0day_前台安全绕过+RCE

致远OA最新0day_前台安全绕过+RCE

ShareController:

致远OA最新0day_前台安全绕过+RCE

致远OA最新0day_前台安全绕过+RCE

  • 为什么选择share.do
其实这两个Controller能够达到的效果完全一致,下面用genericController.do再进行简单复现。

致远OA最新0day_前台安全绕过+RCE

致远OA最新0day_前台安全绕过+RCE

核心思想是通过xxx.do的后缀让致远使用SpringController的方式进行验证,而不是使用rest方式;但我们的请求格式又满足重置密码的rest接口,所以最终会调用rest接口来重置密码;而密码是share.do/genericController.do,这两个接口正好满足SpringController调用且声明了不需要鉴权的注解,从而完成前台密码重置。
  • 后台getshell
通过ZipSlip漏洞,将webshell解压到根目录下从而getshell。
  1. 上传zip

致远OA最新0day_前台安全绕过+RCE

  1. 访问shell
通过构造特殊的zip文件,从而使得webshell解压到根目录下。
致远OA最新0day_前台安全绕过+RCE
  1. 分析
通过接口定位代码
致远OA最新0day_前台安全绕过+RCE
致远OA最新0day_前台安全绕过+RCE
首先判断了必须为MultipartHttpServletRequest,否则抛出异常,简单来说就是上传请求。
致远OA最新0day_前台安全绕过+RCE
接着判断了MaxUploadSizeExceeded和unknownException参数,不为空则抛出异常。
致远OA最新0day_前台安全绕过+RCE
然后获取上传信息,并创建临时zip文件来保存信息。
致远OA最新0day_前台安全绕过+RCE
接下来创建一个临时目录,判断是否有文件,有就清空。
致远OA最新0day_前台安全绕过+RCE
最后创建zip文件,遍历zip中的文件并取出后进行拼接。未对zip文件进行过滤,导致可以通过../跨越目录,从而写入到web目录中获取服务器权限。
致远OA最新0day_前台安全绕过+RCE
参考文章:
https://xz.aliyun.com/t/13741
http://open.seeyon.com/seeyon/webhelp/APIdoc/content/api/cn/oa.json11.24

原文始发于微信公众号(网络安全007):致远OA最新0day_前台安全绕过+RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月7日15:30:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   致远OA最新0day_前台安全绕过+RCEhttps://cn-sec.com/archives/2555006.html

发表评论

匿名网友 填写信息