一次针对SAP系统的完美渗透测试

简介: 本文讲的是一次针对SAP系统的完美渗透测试,SAP为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。SAP公司成立于1972年.总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网络。
本文讲的是 一次针对SAP系统的完美渗透测试

什么是SAP 渗透测试?

SAP为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。SAP公司成立于1972年.总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网络。作为全球领先的企业管理软件解决方案提供商,SAP帮助各行业不同规模的企业实现卓越运营。

那么为什么我们需要去了解SAP系统的安全性?第一个想法很简单——SAP系统对于黑客们而言是一个诱人的目标,因为它往往存储和管理着一个组织的关键信息和业务流程的命脉。但是,这不是唯一的原因。想象一下,某个SAP模块负责工业技术,例如控制石油开采或运输的SAP模块,我想它的重要作用就无需多说了吧,而其安全也就显得更为重要。那么如何才能确保SAP系统不会轻易受到伤害,攻击者无法干预其系统的任何流程呢?对SAP系统进行渗透测试当然完全符合这一目标。

典型的黑盒SAP渗透测试如下所示

1.渗透测试人员扫描SAP系统的范围,试图获得尽可能多的系统信息。

2.根据从第一步获得的信息,pentesters会了解到哪些数据库使用了SAP的版本或者特定的SAP模块。然后,他们开始搜索这些版本容易受到的漏洞。通过利用这些漏洞,获得对系统的最小访问权限(例如作为访客用户)。

3.进而通过利用漏洞,升级权限并获得系统的管理访问权限。

SAP软件在某种程度上是独一无二的,在进行SAP渗透测试时应考虑其特殊性质。例如,默认情况下,管理员密码,数据库的密码以及将SAP服务器连接到数据库的方案将被加密并存储在SecStore.properties文件中,解密密钥保存在SecStore.key文件中。因此,在系统配置不佳的情况下,利用像Directory Traversal或XXE这样的漏洞就足以从服务器读取文件。

由于供应商现在专注于其产品的安全性,实施了新的保护机制,SAP系统的妥协变得越来越困难。同样,SAP也组建了自己的安全团队。因此,现在已经不可能通过利用单一的漏洞来破坏整个SAP系统了。对于渗透测试人员来说,必须要利用一连串的安全问题来实现最终的结果。

SAP 渗透与SAP安全审计区别

评估SAP系统安全性的另一个选择是SAP安全审计。

如果在安装了系统之后的一段时间里黑客没有入侵(例如2周),这并不意味着系统是安全的,或者说黑客是无法入侵的。这只是意味着如果攻击者需要更多的时间,他们就可能会成功。

安全审计则就是一组专家获得了对系统,源代码和内部网络的完全访问,以便他们能够更有效地分析其安全性,并且可能会发现比黑盒或白盒的更多的漏洞 。

在上面的文章中,我们讨论了安全审计和渗透测试之间的差异。现在,我们来看看一个典型的案例。

这是一次完美的黑盒测试,通过利用3个漏洞可以让攻击者劫持一个SAP管理员帐户。主要涉及以下步骤:

信息收集

漏洞利用

特权升级

商业风险示范

信息收集

信息收集是每次渗透测试的第一步。我们可以收集有关系统的一些信息,例如,通过扫描特定SAP服务的网络或可用Web应用程序的Web服务器,以了解是否存在任何具有漏洞的应用程序或服务。

此步骤还包括利用一种称为“信息披露”的特定漏洞类型。通常,这些低风险漏洞非常普遍,因为管理员必须应对更多的关键问题,但却没有太多的资源,因此经常会被忽略。但是,在这种漏洞的帮助下,攻击者可能会收到操作系统,SAP版本,私有IP到用户列表及其密码的信息。

尽管典型的SAP安装过程中充满了信息泄露漏洞,但在我们的最后阶段,如果系统配置的很安全,那我们就必须搜索一些0day。 

最终我们发现了多个信息泄露漏洞。例如,使用漏洞ERPSCAN-16-010和ERPSCAN-16-016,攻击者可以远程获取SAP用户的名字,姓氏,权限和登录名,而不进行身份验证。

漏洞利用的一个例子可以在下面的截图中看到。

 一次针对SAP系统的完美渗透测试

利用此漏洞很容易,攻击者只需要匿名打开可用的webdynpro应用程序统一资源标识符(URI),然后按“选择”按钮。但攻击者无法仅使用用户名登录到SAP系统; 还需要SAP帐户的密码。这就到了我们渗透测试计划的第二步 – 漏洞利用。

漏洞利用

这一步很简单。在了解哪些服务和Web应用程序可用之后,我们可以找到这些服务是否存在漏洞并利用它们。

如果我们谈论的是SAP NetWeaver J2EE应用程序服务器,那么可以确定几个漏洞(从CTC Web服务中的Verb篡改漏洞以及Invoker servlet到P4身份验证绕过,K2EE Web服务中的多个XXE和SSRF问题)。所有这些都存在于几乎每一个SAP实施中,但是一些客户真的在关心SAP Security,并且为黑客消除了所谓的“低处的水果”。而到了这里就是一个要点,可以将厉害的渗透测试人员与脚本小子或漏洞扫描器使用者区分开来。即使没有明显的方法,一个真正的渗透测试人员也会试图找到一个新的漏洞。在这样做时,他会首先考虑需要什么。事实上,渗透测试人员已经有了一些有关系统的信息 – 用户名。因此,获得至少一个密码哈希就可以保证胜利。而某些漏洞可能会导致其允许访问它们,比如SQL注入。

SQL注入是传统应用程序中出现的常见问题,但在SAP中很少见(见下表)。这种类型允许攻击者注入自己的恶意SQL命令。它使请求合法化,为访问数据库中的关键数据(例如业务数据,用户密码和银行帐户信息)铺平了道路。使用SQL注入攻击者尝试获取信用卡日期,用户密码,社交卡信息等。

下面是一个不同漏洞排行的比较

一次针对SAP系统的完美渗透测试

最后,我们发现了SAP NetWeaver中的匿名SQL注入漏洞(后来得到了一个标识符ERPSCAN-16-011)。该漏洞在SAP UDDI中,该组件中是最广泛的组件,它会影响SAP NetWeaver 7.11 – 7.50版本。为了进行攻击,攻击者需要发送以下类型的HTTP查询:

POST /UDDISecurityService/UDDISecurityImplBean HTTP/1.1
Content-Type: text/xml
 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
        <m:deletePermissionById xmlns:m="http://sap.com/esi/uddi/ejb/security/">
            <permissionId>x' AND 1=(SELECT COUNT(*) FROM BC_UDV3_EL8EM_KEY) or '1'='1</permissionId>
        </m:deletePermissionById>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

该漏洞在permissionId中显示,可以包含任何SQL命令。当SAP获取此代码时,它将被执行。例如,SAP服务器将执行此SQL命令并从BC_UDV3_EL8EM_KEY表返回一行数。

SELECT COUNT(*) FROM BC_UDV3_EL8EM_KEY

使用此漏洞,攻击者可以从UME_STRINGS表中获取用户密码的哈希值。之后,他们需要从哈希中获取密码。它可以通过两种方式完成:

使用暴力破解

查找密码加密算法中的另一个漏洞

升级权限

业务风险演示之前的最后攻击步骤是权限升级。

在经过上面的步骤之后,我们可以访问系统了,但这种访问仅限于某些操作。因此我们需要使用一连串的漏洞来升级权限。在这个例子中,我们有用户名和密码哈希。不过,我们没有密码。在经过一段时间之后,我们非常接近这个目标了,并在SAP NetWeaver(ERPSCAN-16-003)中发现了密码加密功能的漏洞。

当在SAP系统中创建具有密码的任何用户时,密码将通过加密进行保护。即使用PasswordHash.class来实现存储HashWithIterations的功能。

SAP SE在实现加密算法时犯了一个错误,结果密码作为base64被存储在数据库中,不是加密算法的,而是编码算法。

业务风险演示

现在我们可以访问系统了,即使一开始我们认为这是不可能的,因为所有已知的漏洞都被修补。通常,传统的渗透测试在这里就结束了,但是对于一个完美的结果来说,仅仅显示访问是不够的,展示业务风险其实才是至关重要。

我们在SAP系统上获得了管理员帐户,例如干扰生产过程。这些使用SAP产品的公司可以使用SAP MII模块来管理技术过程。SAP MII(SAP制造集成和智能)是一个SAP应用程序,用于将制造操作与后台业务流程同步并标准化数据。

在SAP MII和技术控制器之间有SAP PCo。当SAP PCo从SAP MII收到所有控制数据时,它会更改数据并将其发送到控制器。当我们拥有SAP NetWeaver管理员用户时,我们可以访问SAP MII并管理负责石油生产的控制器。

我们的研究团队确定了SAP xMII中的几个漏洞。这些可以用作多级攻击的一部分,从暴露于互联网的众多业务应用程序之一开始,最终目的是控制车间。工业控制系统的设计没有基本的安全措施:一旦犯罪者控制了系统,他们就可以无阻碍地访问所有的控制器及其配置。这里的后果主要依赖于攻击者的目标,技能和想象力的限制。例如,攻击者可以改变熔化温度,使产品更脆弱。另一个攻击矢量是对焊缝的指示的轻微修改。如果在汽车生产或高科技设备制造过程中执行这两项行动,可能会导致严重的后果。 




原文发布时间为:2017年8月13日
本文作者:鲁班七号
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
30天前
|
设计模式 安全 测试技术
【软件设计师备考 专题 】系统实施:程序设计和系统测试
【软件设计师备考 专题 】系统实施:程序设计和系统测试
64 0
|
1月前
|
中间件
什么是 SAP CRM 系统里的 Initial Download
什么是 SAP CRM 系统里的 Initial Download
23 0
|
3月前
|
数据采集 供应链 数据管理
关于评估 SAP 主数据的数据初始化对 SAP 系统影响范围的方法论
关于评估 SAP 主数据的数据初始化对 SAP 系统影响范围的方法论
42 0
|
3月前
|
缓存 监控 安全
SAP ABAP 系统里事务码 SMICM 的作用
SAP ABAP 系统里事务码 SMICM 的作用
49 0
|
3月前
|
供应链 中间件
SAP CRM 和 ERP 系统之间的主数据同步 - PRODUCT_R3_ADAPTER
SAP CRM 和 ERP 系统之间的主数据同步 - PRODUCT_R3_ADAPTER
66 0
|
4天前
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
65 13
如何入门做物联网系统压测?
|
17天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
14 0
|
1月前
|
Java 测试技术 数据库
springboot大学生体质测试管理系统
springboot大学生体质测试管理系统
|
2月前
|
安全 数据安全/隐私保护
SAP ABAP Gateway 系统接口 /IWBEP/IF_MGW_APPL_SRV_RUNTIME 的作用介绍
SAP ABAP Gateway 系统接口 /IWBEP/IF_MGW_APPL_SRV_RUNTIME 的作用介绍
28 0
|
2月前
|
SQL 开发框架 数据库
聊聊 SAP ABAP 系统里的胖接口(Fat Interface)
聊聊 SAP ABAP 系统里的胖接口(Fat Interface)
28 0