本文讲的是一次针对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用户的名字,姓氏,权限和登录名,而不进行身份验证。

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

利用此漏洞很容易,攻击者只需要匿名打开可用的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 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日
本文作者:鲁班七号
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

一次针对SAP系统的完美渗透测试相关推荐

  1. 【整理】RPA选择器针对SAP系统的设置

    RPA选择器针对SAP系统的设置 用之前提到的选择器去SAP系统界面上进行选取时会提示"某脚本正尝试添加到GUI". 输入事务代码RZ11 进入到维护参数文件参数的页面. 输入参数 ...

  2. 针对微信小程序的渗透测试

    公众号:None安全团队 2020.9.19凌晨3点23 深夜难眠,回想起今天waf上一大堆误报和寥寥无几的告警,甲方爸爸提供的两荤一素已经换成了白粥榨菜,农夫已经换成了怡宝,猪肉换成了榨菜,或许我们 ...

  3. 渗透测试 ( 2 ) --- 渗透测试系统、靶机、GoogleHacking、kali工具

    操作系统:https://zhuanlan.zhihu.com/p/162865015 1.基于 Windows.Linux.Android 的渗透测试系统 1.1 基于 Linux 的系统 Kali ...

  4. Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞

    From:https://bbs.ichunqiu.com/thread-15716-1-1.html 怎样用 WPScan,Nmap 和 Nikto 扫描和检查一个 WordPress 站点的安全性 ...

  5. Lockdoor Framework:一套自带大量网络安全资源的渗透测试框架

    博客&文章 Reddit:[传送门] Medium.com:[传送门] Xploit Lab:[传送门] Station X:[传送门] Kelvin Security :[传送门] All ...

  6. 0003 渗透测试标准

    0003 渗透测试标准 渗透测试标准(PTES:Penetration Testing Executjion Standard)是对渗透测试的重新定义,通过定义一次完整的渗透测试过程的标准,来实现一次 ...

  7. KALI LINUX渗透测试学习笔记

    KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...

  8. 网络安全系列-I: 基本概念之事件型漏洞、通用型漏洞、渗透测试

    事件型漏洞和通用型漏洞的区别 一句话区别:如果你提交华为官网的漏洞严格意义上是非法的,因为这涉及未授权扫描:但是你针对你自己购买并部署在本地的华为设备或系统做漏洞扫描.渗透测试是没有问题的,因为你攻击 ...

  9. 渗透测试C客户端(C-S架构)checklist

    0x00 前言 本项目主要针对pc客户端(cs架构)渗透测试,结合自身测试经验和网络资料形成checklist,如有任何问题,欢迎联系,期待大家贡献更多的技巧和案例. 0x01 概述 PC客户端,有丰 ...

最新文章

  1. Docker学习(八)-----Docker安装mysql
  2. bzoj1230[Usaco2008 Nov]lites 开关灯*
  3. Adobe illustrator 剪切蒙版 - 连载 14
  4. linux虚拟机系统的复制或克隆后续问题解决!
  5. (转)“版本上线延时”问题与对策的探讨
  6. SQL Server 2012 SQLEXPRESS 无法通过IP连接访问问题的解决
  7. python爬取淘宝数据魔方_淘宝数据魔方看人群情况
  8. 把Excel里的折线图另存为图片
  9. python画海绵宝宝代码_Python_Turtle库画一只派大星
  10. 2016北大叉院、北大信科保研经历
  11. electron 获取电脑mac地址遇到的坑
  12. vs2022 E1696 无法打开 源 文件 “string.h“
  13. 计算机毕业设计springcloud基于微服务的家居体验平台的设计与实现
  14. 坐标北京,8大区域,上百家知名公司推荐给你
  15. 软件设计师-操作系统知识
  16. VMware Workstation安装Win7系统
  17. 黑马程序员--Java学习10--访问权限
  18. BP神经网络原理分析及c++代码实现(下)
  19. C++实现日志功能:log4c(Win10+VS2017+CMake)
  20. 常见WEB漏洞原理分析

热门文章

  1. python自动化办公pdf-基于python实现自动化办公学习笔记
  2. python快速入门答案-python快速入门基础知识
  3. python开发桌面软件-python适合windows的桌面应用程序开发吗?
  4. python软件开发-如何编写Python软件开发文档(7个技巧)
  5. Mint系统使用介绍,Mint系统安装,在Mint系统上搭建GPU环境,在Mint系统上安装Pycharm、Anaconda等软件,在Mint系统上安装cuda和cudnn
  6. Tensorflow-gpu安装
  7. 调制优缺点_复合铝基润滑脂和普通润滑脂的区别,复合铝基脂有什么优缺点
  8. LeetCode686 Repeated String Match(字符串匹配)
  9. python读取有中文文件时的报错处理
  10. 监听端口的非阻塞性不具有继承性