【51CTO.com独家特稿】在复杂的信息安全处理过程中,最重要的任务之一就是业务应用软件的安全性。如今,SAP平台是应用最为广泛的管理企业系统和存储最重要的数据的平台。遗憾的是,人们对于SAP的安全性关注却仍显不足。我们通过实例详细介绍了针对SAP客户端的一些攻击手法,希望籍此引起安全人员的足够重视。
一、简介
在复杂的信息安全处理过程中,最重要的任务之一就是业务应用软件的安全性。如今,SAP平台是用得最为广泛的管理企业系统和存储最重要的数据的平台。遗憾的是,人们对于SAP的安全性关注却仍显不足。实际上,在SAP系统的各种级别上还有许多问题,如网络级、业务系统级别、数据库级别、应用程序级别和表示级即SAP客户端。关于SAP服务器安全性的文献,流传较多,但是有关SAP客户端安全性的介绍,却比较少见。实际上,即使SAP服务器环境是安全的,只要SAP客户端出现纰漏,那么根据木桶原理,整个系统的安全性就会溃于蚁穴。
在本文中,我们要讨论的就是SAP客户端的安全性问题。SAP客户端不仅可能从企业网络发动攻击,而且还可能从有权访问SAP服务器和关键业务数据的企业网络和用户工作站的公共网络发动攻击。
二、利用溢出漏洞攻击SAP客户端
SAPGUI是一个标准的应用程序,它用来连接SAP并使用有关数据。在采用了SAP的大型公司中,几乎所有的SAP客户端工作站上都安装了这个应用程序。
就像其它具有复杂结构的应用程序一样,这个应用程序也存在许多漏洞。鉴于这个应用程序的流行性,在SAPGUI中发现的漏洞的严重性堪比IE浏览器或者Microsoft office软件中的溢出漏洞。Windows基本设施在更新方面还是比较方便的,同时管理员还会收到严重Windows漏洞的通知,但是SAP客户端的情况就不同了。SAP客户端的安全问题主要有两个,一是客户端软件没有自动更新系统,二是在现有的问题和解决方法方面的信息还比较匮乏。
考虑到SAP系统是通过浏览器来访问的,所以在SAP Web服务器中存在的XSS安全漏洞可能导致针对SAP客户端的各种攻击,并提高了攻击SAP客户端的可能性。
在本文中,我们会进一步仔细考察在SAP GUI客户端应用程序和SAP Web服务器中存在的各种漏洞,以及在SAP GUI应用程序的SAPlpd组件中的缓冲区溢出。
去年初,安全专家已经在SAPlpd和SAPsprint组件中发现了一些缓冲区溢出漏洞。组件SAPlpd是安装在每个SAP用户工作站上的客户应用程序SAP GUI的一部分,运行在515端口上提供打印服务。人们在SAPlpd所使用的协议中已经发现了许多漏洞,这些漏洞允许攻击者远程控制有弱点的系统,执行拒绝服务攻击,或者停止打印服务。这些漏洞的详细情况可以从SAP的正式报告中找到。主要特点是,有弱点的服务端口默认时是关闭的,只有当用户打印下一个文档时才打开。乍一看这个特点提高了攻击用户工作站的难度,事实上绝非如此。
考虑到采用SAP的公司,一般SAP用户的数量都是数以百计的,甚至数以千计,所以在给定时刻有人打印文档的可能性是非常大的。因此,可以编写一个脚本来扫描网络,寻找开放的端口,并在检测到开放端口时启动漏洞利用代码来迅速得到有弱点的用户的工作站的管理访问权限。
这不仅是一个理论设想而已,实际上做起来也很简单。针对特定安全漏洞的漏洞利用代码已经添加到了Metasploit框架中了,而Metasploit是可以从互联网免费下载的。攻击者需要做的,只是选择一个将在客户端上使用的shell-code,然后使用db_autopwn模块添加一列客户工作站的IP地址就行了。如果SAPlpd的版本有弱点,并且用户在此刻启动了打印服务,那么攻击者就能够得到对该用户的工作站的访问权限(如图1所示)。实际上,67%的SAPGUI安装都易于受到这种攻击的危害。
图1 获取对带有SAPlpd安全漏洞的SAP客户端的访问权限 |
得到了用户的工作站命令提示符的访问权限后,攻击者就可以做一些更出格的事情,例如,可以安装特洛伊木马程序来窃取用户的密码,或者从sapshortcut.ini配置文件中读取用户证书,这样就可以直接访问SAP服务器和关键业务数据了。 #p#
三、SAP GUI中的ActiveX漏洞
实际上,SAP GUI应用程序还有许多缓冲区溢出漏洞。我们下面讨论SAP GUI应用程序的ActiveX组件中的一些漏洞。SAP GUI由大约1000个不同的ActiveX组件构成,而每个ActiveX组件都可能存在漏洞。
为了利用这类漏洞,通常需要人工介入:用户必须点击攻击者提供的链接(这些链接可以通过电子邮件、即时通讯工具等等传递给用户),从而导致浏览器中的脆弱部件被利用,这样受害者的命令提示符的访问权就落入了攻击者手里了。有关数据显示,一般说来会有10%到50%的用户会点击攻击者通过社交工程发给他们的恶意链接。会导致溢出攻击的脆弱组件将在受害者浏览器所在的上下文中执行,如果受害者经常在管理员权限之下启动浏览器的话,攻击者就获得了相应的权限。
第一个公开的SAP GUI中的ActiveX组件弱点是在2007年发布的。同时,在kwedit组件中也已经发现了一个安全漏洞,此外,在kwedit rfcguisink组件中还发现了另一个安全漏洞。成功利用这些漏洞后,攻击者就会得到客户系统的远程控制权限。这些漏洞已经被修补过了,详情可以参考SAP的有关通知。之后,在其他组件中也发现了一些远程溢出漏洞。 其中还有一些漏洞仍未修补好。
2009年6月份,又发现了一个缓冲区溢出安全漏洞。 Sapirrfc.dll 中的这个安全漏洞与发现的其他漏洞一样,也可以用来获得对受害者的工作站的远程控制权限。
要想利用这个安全漏洞,攻击者可以设计一个HTML页面,用该页面来加载有弱点的ActiveX组件SAPIrRfc,然后向其发送一行大小超过720字节的参数来接管它。
一旦用户点击了该链接,那么就会引起针对用户的工作站的拒绝服务攻击,或者在用户的工作站上执行远程代码。在这里,您将看到一个会导致拒绝服务的概念性验证代码,如图所示:
图2 示例代码 |
总起来说,以下因素增加了该攻击的危险程度:
1.在rfcguisink、kwedit和WebViewer3D中发现的许多漏洞都有现成的攻击代码可用,并且许多已经包含在Metasploit中了。所以攻击者需要做的只是选择一个shell-code,找到用户电子邮件地址,然后向其发送含有链接的电子邮件,其中的链接指向攻击者的使用了脆弱组件的站点。 从而有可能收到大数量企业工作站上的shell。
2.在组件sapirrfc.dll中发现的安全漏洞已经在SAP GUI 7.10版本中得到了修补。 但是,对于6.2和6.4版本来说,还没有补丁可用,所以建议升级到7.1版本。 考虑到目前6.2和6.4版本占用户工作站的10%和50%(版本7.1的用户工作站占剩下的40%),所以大部分的公司用户仍然生活在这些攻击的威胁之下。
3.除了使用邮件或者即时通讯工具之外,变通的攻击办法是,攻击者可以在企业文档流通系统例如SAP CFolders中创建恶意的html文档。 在这种情况下,人们对该文档的信任程度会明显高于邮件或者即时通讯工具,但是在内部系统中上载文档相对来说要更困难一些。 #p#
四、利用SAP Web应用程序服务器漏洞攻击SAP客户端
目前,越来越多的SAP系统通过web进行传输,像SAP Enterprise Portal、SAP SRM 、SAP CRM 以及许多其他组件等等。 一些程序允许通过浏览器来使用SAP系统的各种功能,并且SAP应用程序看起来跟普遍的Web应用程序没什么两样。然而,即使底部的SAP平台NetWeaver也是构建于不同的Web服务之上一个应用程序服务器而已。即使在无需额外的组件的默认配置下,SAP NetWeaver也带有若干漏洞。
尽管这些漏洞都是在Web服务器中发现的,但是攻击的对象却是SAP客户端。因此,谈及SAP客户端的安全时,必须提到在Web应用程序中的典型客户端漏洞。关于SAP客户端,我们关心的漏洞有:
◆HTML代码注入漏洞或者存储式XSS;
◆反射式XSS;
◆钓鱼攻击或身份验证数据拦截
◆HTML代码注入漏洞以及存储式XSS
下面让我们考察在应用程序SAP SRM(该应用程序用于远程供应商)中的一个html注入安全漏洞(也称为存储式XSS)的例子。
SAP SRM系统允许创建含有任何数据的HTML文档,并将该文档放置到采购方的General文件夹中。因此,经过身份验证的系统用户(供应方)就可以发动存储式XSS攻击。 攻击假设把恶意代码注入到入口页面中。例如,通常买方是可以访问文档交换文件夹的。买方万一成功查看了这个页面,他的会话证书(Cookie)就会被拦截,并转发给攻击者的站点。 作为一个例子,可以使用以下HTML文件:
图3 示例HTML文件 |
由于SAP SRM的用户会话没有绑定IP地址,所以攻击者可以使用他的cookie连接到用户环境,并获得其他供应商的文档的权限以及管理系统功能的权限。 这个漏洞不是唯一的,关于相似的漏洞的详情可以在官员通报中找到。在这个通报中描述的漏洞允许在入口页面里注入任何HTML和JavaScript,从而获得对其他用户的会话的访问权限。
还记得前面介绍的SAPGUI ActiveX组件中的漏洞吧,如果跟这里的漏洞相结合,就会得到一种新的攻击形式。这时,要求加载HTML页面来调用一个有弱点的ActiveX组件。 在这种情况下,如果公司的雇员打开了我们的文档,那么我们就能够访问他的工作站了,从而为我们进一步攻击企业网络打下了基础。
反射式XSS
就像前面提到的那样,甚至在标准应用程序SAP NetWeaver中也存在许多的安全漏洞,所以更不要说其它的组件了。据安全研究人员称,在各种SAP应用程序中现已公布了的安全漏洞就有20个左右。 这只是已经公开的,至于那些尚未公之于众的,我们就不得而知了。
就像前面介绍的SAP SRM中的安全漏洞一样,我们将考察在另一个应用程序SAP IGS中的一些安全漏洞。对于这些漏洞,攻击者必须创建一个链接,如下所示:
图4 示例链接 |
然后,攻击者必须发给受害者并得到他的cookie。在标准SAP环境和其它组件中,像这样的安全漏洞还有很多,在此不作一一介绍。
利用XSS“钓取”身份验证数据
利用XSS安全漏洞,还有可能利用钓鱼攻击来嗅探用户的身份验证数据。在SAP Web应用程序服务器中就发现了这样的XSS安全漏洞,而SAP Web应用程序服务器则是整个SAP系统的基础。之所以出现这个安全漏洞,是因为对通过web登录到SAP系统时的URL中用来表示标准接口的sap/bc/gui/sap/its/webgui/没有进行严格的过滤所导致的。
图5 登录SAP使得标准Web接口 |
这个XSS安全漏洞允许在URL中注入JavaScript代码,用这样的方式,可以把用户和密码输入表单之后的内容注入到页面的源代码中。所以,它实际是注入了修改标准输入字段的代码,并在按下提交按钮的时候把用户输入的数据转移到攻击者控制之下的站点上了。 下面是页面的原始代码片段:
图6 原始页面代码片段 |
就像看到的那样,我们可以利用注入的代码改写输入表单。为了实现这种攻击,攻击者必须向潜在的受害者发送如下所示的一个链接:
图7 示例链接 |
所以当用户点击了这个链接并输入身份验证数据的时候,这些数据就会落入攻击者的手里了。
五、小结
本文中,我们通过实例详细介绍了针对SAP客户端的一些攻击手法。这些漏洞的利用代码都可以从网络上找到,所以提高了这些漏洞的危险系数。我们知道,针对Web客户端的安全漏洞的数量是很大的,而几乎每个SAP应用程序中都存在Web客户端安全漏洞。所以,希望引起负责该系统的安全人员引起足够的重视。
【51CTO.COM 独家特稿,转载请注明出处及作者!】