[BlackHat][USA][2023] SAP企业软件中发现新的远程和根权限访问向量

By Pablo Artuso , Yvan Genuer iggy [Argentina]

连锁攻击:在SAP企业软件中发现新的远程和根权限访问向量

image-19.png

阶段3

image-20.png

SAP系统(Systems, Applications, and Products in Data Processing)是一套由德国SAP公司开发的企业管理软件,广泛应用于各类企业进行资源规划和管理。SAP系统包括一系列集成的模块,每个模块都设计用于管理不同的业务功能,如财务、人力资源、制造、供应链、客户关系等。

  • ERP(Enterprise Resource Planning): SAP ERP是SAP系统的核心,提供全面的企业资源规划功能,帮助企业整合和管理各种业务流程。

  • SAP S/4HANA: SAP最新一代的ERP系统,基于内存计算技术HANA,提供实时数据处理和分析能力,大大提高了系统性能和灵活性。

  • SAP Business Suite: 包括SAP ERP、SAP CRM(Customer Relationship Management)、SAP SCM(Supply Chain Management)、SAP SRM(Supplier Relationship Management)等多个模块,帮助企业全面管理业务流程。

  • SAP HANA: 一种高性能的内存数据库,支持实时数据分析和处理,广泛用于大数据分析、业务智能(BI)和物联网(IoT)等应用场景。

  • SAP Cloud Platform: 提供基于云的开发和部署环境,帮助企业快速开发和扩展应用程序。

  • SAP Analytics: 提供各种数据分析和商业智能工具,帮助企业从数据中获得洞察,支持决策制定。

  • SAP Fiori: 一套用户体验设计指南和工具,提供现代化、用户友好的界面,使用户能够更轻松地访问和使用SAP系统功能。

  • SAP Ariba: 一个基于云的商务网络,帮助企业管理采购和供应链流程,优化供应商关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所涉及的少数几个二进制文件在该支持的应用程序中

image-22.png

两个可执行文件是一个服务,并且作为路由正在运行。

image-23.png

并且开放了http服务

image-24.png

image-25.png

管理员通常可以使用saphostctrl+二进制文件名称 来连接到系统的SAP控件,可以从中调用许多函数。

在图二中演讲者发现存在一个ConfigureOutsideDiscovery方法

当尝试提供一些参数的时候,你会得到与创建配置的相关结果

image-26.png

通过tcpdump抓取1128端口数据包后,发现请求并没有进行身份验证

image-27.png

image-28.png

尝试进行系统命令盲注
CVE-2023-24523

image-30.png

image-29.png

image-31.png

所以当前完成了这一块,但不是绝对的,因为这里至少需要一个基础用户才能执行发送请求进行本地权限提升

image-32.png

阶段2

协议

(ACP)P4属性协议

image-33.png

P4是基于RMI核心
该协议目的是促进实例之间的远程对象之间的通信,通常系统每一个接口都会找到P4端口(通常未做安全验证)
P4协议就处于SAP Java NetWeaver层

image-35.png

image-36.png

JNDI代表Java的命名目录接口(JNDI是一种将字符串绑定到对象的命名服务),黄色部分为解析器。

归根到底,该服务可以将返回的字符串,通过远程方式使用这些对象。

  • 服务列表

image-37.png

服务并非都是远程方式公开的

CVE-2021-21481: SAP 反序列化

https://codewhitesec.blogspot.com/2021/06/about-unsuccessful-quest-for.html

周期

image-39.png

特殊的SAP系统

image-40.png

image-43.png

SPA管理器是一个带有java堆栈的子网,并且管理器有P4服务。
所以在整个Jendayi服务中,所拥有的服务很少,但是有几个仅存于子管理器上。
幸运的是smd代理使用的通信协议也是P4

image-44.png

有趣的是,当SAP管理器发起管理器发出一个子解决方案请求时,所有的smd代理都会接受处理

image-45.png

image-47.png

需要提供一个字符串作为java类

image-48.png

开始模拟运行

image-49.png

image-51.png

image-52.png

SAP管理器可以通过与子管理器的P4协议通信,并且通过smd代理来调用java类

image-53.png

TOP
SPA系统
SMD代理
存在漏洞的java类

通过P4协议调用存在漏洞的java类,来让整个攻击完成

image-54.png

这里可以通过远程命令执行(仅限windows)或者SSRF来进行阶段3中的本地权限提升

image-55.png

image-56.png

结合CVE-2023-24523

通过P4协议与smd代理通信->发送payload,代理器触发SSRF->HTTP请求CVE-2023-24523本地权限提升->反向shell

image-57.png

阶段1

SAP JNDI注入:JEA

image-58.png

image-59.png

关键在于redirect函数

image-61.png

url作为参数,分割前缀和网址以及其他部分,然后使用内存中的映射,将该映射前缀作为键,和对象作为值。

所以它根据前缀在映射中找到对应的对象执行对象中的函数。

image-62.png

连接器

image-63.png

image-64.png

当前缀为pcd时,会发现它执行了一个lookup的函数

image-65.png

所以可以根据用户提供的参数,来进行查找注入

image-66.png

image-67.png

需要找到一些lookup的函数漏洞

image-68.png

文档强调可通过JNDI引用来利用此漏洞

JNDI引用只是一个对象:例如你可以在我的服务器中提供服务,当你向我的服务器执行lookup查找时候,你就可以获取的文献。当系统尝试恢复该引用的时候,你可以指向一个java类(远程或本地)执行。

image-69.png

image-70.png

image-71.png

image-72.png

很明显这个漏洞已经在2016存在补丁了

image-73.png

Pablo Artuso , Yvan Genuer iggy在博客中发现Michael Stepankin写的一篇关于java载入本地class类文章

https://www.veracode.com/blog/research/exploiting-jndi-injections-java

image-74.png

image-75.png

java载入本地class类的前提,类必须存在于SAP的类路径中

image-76.png

Get对象实例的函数,该实例是实际解析引用的函数,当执行查找时候它将进行分析引用

image-77.png

参数f可由攻击者控制,并且传递给函数findObjectFactory

image-78.png

第一个:攻击者控制它创建一个类对象
第二个:它创建该类的一个实例,并且将其强制转换为ObjectFactory类

image-79.png

由上可知,我们必须提供参数是一个factory类,并且可嵌套到ObjectFactory类中

image-80.png

在函数结束后,值将返回给参数fac,其中可能还存在Get对象实例的函数可以使用

image-81.png

一定会执行getObjectInstance类

image-82.png

在某些函数之后它调用一个名为resolveReferenc的函数

image-83.png

它从参考文献中提取攻击者所控制的appname,判断语句中如果该应用程序名称不为空,则会启动该应用程序

image-84.png

JNDI引用->指向本地类(给出启动应用程序名称)->解析引用启动应用

image-85.png

可以通过该漏洞开启一个P4隧道app

image-86.png

通过这个P4隧道,发送P4流量。并且将以上提及到的漏洞进行加以利用

image-87.png

阶段1

目标Windows,RCE权限提升:

image-88.png

SSRF权限提升:

image-89.png

任意文件读取权限提升(本次实例所使用到的):

image-90.png

白皮书细节:

https://i.blackhat.com/BH-US-23/Presentations/US-23-Genuer-chained-to-hit-discovering-new-vectors-to-gain-remote-and-root-access-in-sap-enterprise-software-wp.pdf?_gl=1*wjjryd*_gcl_au*NjAzMzk0OTQ1LjE3MTk2NzcyMTU.*_ga*MTUwNzI2ODQzMi4xNzE5Njc3MjE2*_ga_K4JK67TFYV*MTcxOTgwOTU2NS4zLjAuMTcxOTgwOTU2NS4wLjAuMA..&_ga=2.267295565.213268773.1719809566-1507268432.1719677216

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值