大型企业之患!SAP安全之攻击客户端

在复杂的信息安全处理过程中,最重要的任务之一就是业务应用软件的安全性。如今,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的版本有弱点,并且用户在此刻启动了打印服务,那么攻击者就能够得到对该用户的工作站的访问权限。实际上,67%的SAPGUI安装都易于受到这种攻击的危害。

得到了用户的工作站命令提示符的访问权限后,攻击者就可以做一些更出格的事情,例如,可以安装特洛伊木马程序来窃取用户的密码,或者从sapshortcut.ini配置文件中读取用户证书,这样就可以直接访问SAP服务器和关键业务数据了。