大型企業(yè)之患!SAP安全之攻擊客戶端
原創(chuàng)【51CTO.com獨(dú)家特稿】在復(fù)雜的信息安全處理過(guò)程中,最重要的任務(wù)之一就是業(yè)務(wù)應(yīng)用軟件的安全性。如今,SAP平臺(tái)是應(yīng)用最為廣泛的管理企業(yè)系統(tǒng)和存儲(chǔ)最重要的數(shù)據(jù)的平臺(tái)。遺憾的是,人們對(duì)于SAP的安全性關(guān)注卻仍顯不足。我們通過(guò)實(shí)例詳細(xì)介紹了針對(duì)SAP客戶端的一些攻擊手法,希望籍此引起安全人員的足夠重視。
一、簡(jiǎn)介
在復(fù)雜的信息安全處理過(guò)程中,最重要的任務(wù)之一就是業(yè)務(wù)應(yīng)用軟件的安全性。如今,SAP平臺(tái)是用得最為廣泛的管理企業(yè)系統(tǒng)和存儲(chǔ)最重要的數(shù)據(jù)的平臺(tái)。遺憾的是,人們對(duì)于SAP的安全性關(guān)注卻仍顯不足。實(shí)際上,在SAP系統(tǒng)的各種級(jí)別上還有許多問(wèn)題,如網(wǎng)絡(luò)級(jí)、業(yè)務(wù)系統(tǒng)級(jí)別、數(shù)據(jù)庫(kù)級(jí)別、應(yīng)用程序級(jí)別和表示級(jí)即SAP客戶端。關(guān)于SAP服務(wù)器安全性的文獻(xiàn),流傳較多,但是有關(guān)SAP客戶端安全性的介紹,卻比較少見(jiàn)。實(shí)際上,即使SAP服務(wù)器環(huán)境是安全的,只要SAP客戶端出現(xiàn)紕漏,那么根據(jù)木桶原理,整個(gè)系統(tǒng)的安全性就會(huì)潰于蟻穴。
在本文中,我們要討論的就是SAP客戶端的安全性問(wèn)題。SAP客戶端不僅可能從企業(yè)網(wǎng)絡(luò)發(fā)動(dòng)攻擊,而且還可能從有權(quán)訪問(wèn)SAP服務(wù)器和關(guān)鍵業(yè)務(wù)數(shù)據(jù)的企業(yè)網(wǎng)絡(luò)和用戶工作站的公共網(wǎng)絡(luò)發(fā)動(dòng)攻擊。
二、利用溢出漏洞攻擊SAP客戶端
SAPGUI是一個(gè)標(biāo)準(zhǔn)的應(yīng)用程序,它用來(lái)連接SAP并使用有關(guān)數(shù)據(jù)。在采用了SAP的大型公司中,幾乎所有的SAP客戶端工作站上都安裝了這個(gè)應(yīng)用程序。
就像其它具有復(fù)雜結(jié)構(gòu)的應(yīng)用程序一樣,這個(gè)應(yīng)用程序也存在許多漏洞。鑒于這個(gè)應(yīng)用程序的流行性,在SAPGUI中發(fā)現(xiàn)的漏洞的嚴(yán)重性堪比IE瀏覽器或者M(jìn)icrosoft office軟件中的溢出漏洞。Windows基本設(shè)施在更新方面還是比較方便的,同時(shí)管理員還會(huì)收到嚴(yán)重Windows漏洞的通知,但是SAP客戶端的情況就不同了。SAP客戶端的安全問(wèn)題主要有兩個(gè),一是客戶端軟件沒(méi)有自動(dòng)更新系統(tǒng),二是在現(xiàn)有的問(wèn)題和解決方法方面的信息還比較匱乏。
考慮到SAP系統(tǒng)是通過(guò)瀏覽器來(lái)訪問(wèn)的,所以在SAP Web服務(wù)器中存在的XSS安全漏洞可能導(dǎo)致針對(duì)SAP客戶端的各種攻擊,并提高了攻擊SAP客戶端的可能性。
在本文中,我們會(huì)進(jìn)一步仔細(xì)考察在SAP GUI客戶端應(yīng)用程序和SAP Web服務(wù)器中存在的各種漏洞,以及在SAP GUI應(yīng)用程序的SAPlpd組件中的緩沖區(qū)溢出。
去年初,安全專(zhuān)家已經(jīng)在SAPlpd和SAPsprint組件中發(fā)現(xiàn)了一些緩沖區(qū)溢出漏洞。組件SAPlpd是安裝在每個(gè)SAP用戶工作站上的客戶應(yīng)用程序SAP GUI的一部分,運(yùn)行在515端口上提供打印服務(wù)。人們?cè)赟APlpd所使用的協(xié)議中已經(jīng)發(fā)現(xiàn)了許多漏洞,這些漏洞允許攻擊者遠(yuǎn)程控制有弱點(diǎn)的系統(tǒng),執(zhí)行拒絕服務(wù)攻擊,或者停止打印服務(wù)。這些漏洞的詳細(xì)情況可以從SAP的正式報(bào)告中找到。主要特點(diǎn)是,有弱點(diǎn)的服務(wù)端口默認(rèn)時(shí)是關(guān)閉的,只有當(dāng)用戶打印下一個(gè)文檔時(shí)才打開(kāi)。乍一看這個(gè)特點(diǎn)提高了攻擊用戶工作站的難度,事實(shí)上絕非如此。
考慮到采用SAP的公司,一般SAP用戶的數(shù)量都是數(shù)以百計(jì)的,甚至數(shù)以千計(jì),所以在給定時(shí)刻有人打印文檔的可能性是非常大的。因此,可以編寫(xiě)一個(gè)腳本來(lái)掃描網(wǎng)絡(luò),尋找開(kāi)放的端口,并在檢測(cè)到開(kāi)放端口時(shí)啟動(dòng)漏洞利用代碼來(lái)迅速得到有弱點(diǎn)的用戶的工作站的管理訪問(wèn)權(quán)限。
這不僅是一個(gè)理論設(shè)想而已,實(shí)際上做起來(lái)也很簡(jiǎn)單。針對(duì)特定安全漏洞的漏洞利用代碼已經(jīng)添加到了Metasploit框架中了,而Metasploit是可以從互聯(lián)網(wǎng)免費(fèi)下載的。攻擊者需要做的,只是選擇一個(gè)將在客戶端上使用的shell-code,然后使用db_autopwn模塊添加一列客戶工作站的IP地址就行了。如果SAPlpd的版本有弱點(diǎn),并且用戶在此刻啟動(dòng)了打印服務(wù),那么攻擊者就能夠得到對(duì)該用戶的工作站的訪問(wèn)權(quán)限(如圖1所示)。實(shí)際上,67%的SAPGUI安裝都易于受到這種攻擊的危害。
![]() |
圖1 獲取對(duì)帶有SAPlpd安全漏洞的SAP客戶端的訪問(wèn)權(quán)限 |
得到了用戶的工作站命令提示符的訪問(wèn)權(quán)限后,攻擊者就可以做一些更出格的事情,例如,可以安裝特洛伊木馬程序來(lái)竊取用戶的密碼,或者從sapshortcut.ini配置文件中讀取用戶證書(shū),這樣就可以直接訪問(wèn)SAP服務(wù)器和關(guān)鍵業(yè)務(wù)數(shù)據(jù)了。 #p#
三、SAP GUI中的ActiveX漏洞
實(shí)際上,SAP GUI應(yīng)用程序還有許多緩沖區(qū)溢出漏洞。我們下面討論SAP GUI應(yīng)用程序的ActiveX組件中的一些漏洞。SAP GUI由大約1000個(gè)不同的ActiveX組件構(gòu)成,而每個(gè)ActiveX組件都可能存在漏洞。
為了利用這類(lèi)漏洞,通常需要人工介入:用戶必須點(diǎn)擊攻擊者提供的鏈接(這些鏈接可以通過(guò)電子郵件、即時(shí)通訊工具等等傳遞給用戶),從而導(dǎo)致瀏覽器中的脆弱部件被利用,這樣受害者的命令提示符的訪問(wèn)權(quán)就落入了攻擊者手里了。有關(guān)數(shù)據(jù)顯示,一般說(shuō)來(lái)會(huì)有10%到50%的用戶會(huì)點(diǎn)擊攻擊者通過(guò)社交工程發(fā)給他們的惡意鏈接。會(huì)導(dǎo)致溢出攻擊的脆弱組件將在受害者瀏覽器所在的上下文中執(zhí)行,如果受害者經(jīng)常在管理員權(quán)限之下啟動(dòng)瀏覽器的話,攻擊者就獲得了相應(yīng)的權(quán)限。
第一個(gè)公開(kāi)的SAP GUI中的ActiveX組件弱點(diǎn)是在2007年發(fā)布的。同時(shí),在kwedit組件中也已經(jīng)發(fā)現(xiàn)了一個(gè)安全漏洞,此外,在kwedit rfcguisink組件中還發(fā)現(xiàn)了另一個(gè)安全漏洞。成功利用這些漏洞后,攻擊者就會(huì)得到客戶系統(tǒng)的遠(yuǎn)程控制權(quán)限。這些漏洞已經(jīng)被修補(bǔ)過(guò)了,詳情可以參考SAP的有關(guān)通知。之后,在其他組件中也發(fā)現(xiàn)了一些遠(yuǎn)程溢出漏洞。 其中還有一些漏洞仍未修補(bǔ)好。
2009年6月份,又發(fā)現(xiàn)了一個(gè)緩沖區(qū)溢出安全漏洞。 Sapirrfc.dll 中的這個(gè)安全漏洞與發(fā)現(xiàn)的其他漏洞一樣,也可以用來(lái)獲得對(duì)受害者的工作站的遠(yuǎn)程控制權(quán)限。
要想利用這個(gè)安全漏洞,攻擊者可以設(shè)計(jì)一個(gè)HTML頁(yè)面,用該頁(yè)面來(lái)加載有弱點(diǎn)的ActiveX組件SAPIrRfc,然后向其發(fā)送一行大小超過(guò)720字節(jié)的參數(shù)來(lái)接管它。
一旦用戶點(diǎn)擊了該鏈接,那么就會(huì)引起針對(duì)用戶的工作站的拒絕服務(wù)攻擊,或者在用戶的工作站上執(zhí)行遠(yuǎn)程代碼。在這里,您將看到一個(gè)會(huì)導(dǎo)致拒絕服務(wù)的概念性驗(yàn)證代碼,如圖所示:
![]() |
圖2 示例代碼 |
總起來(lái)說(shuō),以下因素增加了該攻擊的危險(xiǎn)程度:
1.在rfcguisink、kwedit和WebViewer3D中發(fā)現(xiàn)的許多漏洞都有現(xiàn)成的攻擊代碼可用,并且許多已經(jīng)包含在Metasploit中了。所以攻擊者需要做的只是選擇一個(gè)shell-code,找到用戶電子郵件地址,然后向其發(fā)送含有鏈接的電子郵件,其中的鏈接指向攻擊者的使用了脆弱組件的站點(diǎn)。 從而有可能收到大數(shù)量企業(yè)工作站上的shell。
2.在組件sapirrfc.dll中發(fā)現(xiàn)的安全漏洞已經(jīng)在SAP GUI 7.10版本中得到了修補(bǔ)。 但是,對(duì)于6.2和6.4版本來(lái)說(shuō),還沒(méi)有補(bǔ)丁可用,所以建議升級(jí)到7.1版本。 考慮到目前6.2和6.4版本占用戶工作站的10%和50%(版本7.1的用戶工作站占剩下的40%),所以大部分的公司用戶仍然生活在這些攻擊的威脅之下。
3.除了使用郵件或者即時(shí)通訊工具之外,變通的攻擊辦法是,攻擊者可以在企業(yè)文檔流通系統(tǒng)例如SAP CFolders中創(chuàng)建惡意的html文檔。 在這種情況下,人們對(duì)該文檔的信任程度會(huì)明顯高于郵件或者即時(shí)通訊工具,但是在內(nèi)部系統(tǒng)中上載文檔相對(duì)來(lái)說(shuō)要更困難一些。 #p#
四、利用SAP Web應(yīng)用程序服務(wù)器漏洞攻擊SAP客戶端
目前,越來(lái)越多的SAP系統(tǒng)通過(guò)web進(jìn)行傳輸,像SAP Enterprise Portal、SAP SRM 、SAP CRM 以及許多其他組件等等。 一些程序允許通過(guò)瀏覽器來(lái)使用SAP系統(tǒng)的各種功能,并且SAP應(yīng)用程序看起來(lái)跟普遍的Web應(yīng)用程序沒(méi)什么兩樣。然而,即使底部的SAP平臺(tái)NetWeaver也是構(gòu)建于不同的Web服務(wù)之上一個(gè)應(yīng)用程序服務(wù)器而已。即使在無(wú)需額外的組件的默認(rèn)配置下,SAP NetWeaver也帶有若干漏洞。
盡管這些漏洞都是在Web服務(wù)器中發(fā)現(xiàn)的,但是攻擊的對(duì)象卻是SAP客戶端。因此,談及SAP客戶端的安全時(shí),必須提到在Web應(yīng)用程序中的典型客戶端漏洞。關(guān)于SAP客戶端,我們關(guān)心的漏洞有:
◆HTML代碼注入漏洞或者存儲(chǔ)式XSS;
◆反射式XSS;
◆釣魚(yú)攻擊或身份驗(yàn)證數(shù)據(jù)攔截
◆HTML代碼注入漏洞以及存儲(chǔ)式XSS
下面讓我們考察在應(yīng)用程序SAP SRM(該應(yīng)用程序用于遠(yuǎn)程供應(yīng)商)中的一個(gè)html注入安全漏洞(也稱(chēng)為存儲(chǔ)式XSS)的例子。
SAP SRM系統(tǒng)允許創(chuàng)建含有任何數(shù)據(jù)的HTML文檔,并將該文檔放置到采購(gòu)方的General文件夾中。因此,經(jīng)過(guò)身份驗(yàn)證的系統(tǒng)用戶(供應(yīng)方)就可以發(fā)動(dòng)存儲(chǔ)式XSS攻擊。 攻擊假設(shè)把惡意代碼注入到入口頁(yè)面中。例如,通常買(mǎi)方是可以訪問(wèn)文檔交換文件夾的。買(mǎi)方萬(wàn)一成功查看了這個(gè)頁(yè)面,他的會(huì)話證書(shū)(Cookie)就會(huì)被攔截,并轉(zhuǎn)發(fā)給攻擊者的站點(diǎn)。 作為一個(gè)例子,可以使用以下HTML文件:
![]() |
圖3 示例HTML文件 |
由于SAP SRM的用戶會(huì)話沒(méi)有綁定IP地址,所以攻擊者可以使用他的cookie連接到用戶環(huán)境,并獲得其他供應(yīng)商的文檔的權(quán)限以及管理系統(tǒng)功能的權(quán)限。 這個(gè)漏洞不是唯一的,關(guān)于相似的漏洞的詳情可以在官員通報(bào)中找到。在這個(gè)通報(bào)中描述的漏洞允許在入口頁(yè)面里注入任何HTML和JavaScript,從而獲得對(duì)其他用戶的會(huì)話的訪問(wèn)權(quán)限。
還記得前面介紹的SAPGUI ActiveX組件中的漏洞吧,如果跟這里的漏洞相結(jié)合,就會(huì)得到一種新的攻擊形式。這時(shí),要求加載HTML頁(yè)面來(lái)調(diào)用一個(gè)有弱點(diǎn)的ActiveX組件。 在這種情況下,如果公司的雇員打開(kāi)了我們的文檔,那么我們就能夠訪問(wèn)他的工作站了,從而為我們進(jìn)一步攻擊企業(yè)網(wǎng)絡(luò)打下了基礎(chǔ)。
反射式XSS
就像前面提到的那樣,甚至在標(biāo)準(zhǔn)應(yīng)用程序SAP NetWeaver中也存在許多的安全漏洞,所以更不要說(shuō)其它的組件了。據(jù)安全研究人員稱(chēng),在各種SAP應(yīng)用程序中現(xiàn)已公布了的安全漏洞就有20個(gè)左右。 這只是已經(jīng)公開(kāi)的,至于那些尚未公之于眾的,我們就不得而知了。
就像前面介紹的SAP SRM中的安全漏洞一樣,我們將考察在另一個(gè)應(yīng)用程序SAP IGS中的一些安全漏洞。對(duì)于這些漏洞,攻擊者必須創(chuàng)建一個(gè)鏈接,如下所示:
![]() |
圖4 示例鏈接 |
然后,攻擊者必須發(fā)給受害者并得到他的cookie。在標(biāo)準(zhǔn)SAP環(huán)境和其它組件中,像這樣的安全漏洞還有很多,在此不作一一介紹。
利用XSS“釣取”身份驗(yàn)證數(shù)據(jù)
利用XSS安全漏洞,還有可能利用釣魚(yú)攻擊來(lái)嗅探用戶的身份驗(yàn)證數(shù)據(jù)。在SAP Web應(yīng)用程序服務(wù)器中就發(fā)現(xiàn)了這樣的XSS安全漏洞,而SAP Web應(yīng)用程序服務(wù)器則是整個(gè)SAP系統(tǒng)的基礎(chǔ)。之所以出現(xiàn)這個(gè)安全漏洞,是因?yàn)閷?duì)通過(guò)web登錄到SAP系統(tǒng)時(shí)的URL中用來(lái)表示標(biāo)準(zhǔn)接口的sap/bc/gui/sap/its/webgui/沒(méi)有進(jìn)行嚴(yán)格的過(guò)濾所導(dǎo)致的。
![]() |
圖5 登錄SAP使得標(biāo)準(zhǔn)Web接口 |
這個(gè)XSS安全漏洞允許在URL中注入JavaScript代碼,用這樣的方式,可以把用戶和密碼輸入表單之后的內(nèi)容注入到頁(yè)面的源代碼中。所以,它實(shí)際是注入了修改標(biāo)準(zhǔn)輸入字段的代碼,并在按下提交按鈕的時(shí)候把用戶輸入的數(shù)據(jù)轉(zhuǎn)移到攻擊者控制之下的站點(diǎn)上了。 下面是頁(yè)面的原始代碼片段:
![]() |
圖6 原始頁(yè)面代碼片段 |
就像看到的那樣,我們可以利用注入的代碼改寫(xiě)輸入表單。為了實(shí)現(xiàn)這種攻擊,攻擊者必須向潛在的受害者發(fā)送如下所示的一個(gè)鏈接:
![]() |
圖7 示例鏈接 |
所以當(dāng)用戶點(diǎn)擊了這個(gè)鏈接并輸入身份驗(yàn)證數(shù)據(jù)的時(shí)候,這些數(shù)據(jù)就會(huì)落入攻擊者的手里了。
五、小結(jié)
本文中,我們通過(guò)實(shí)例詳細(xì)介紹了針對(duì)SAP客戶端的一些攻擊手法。這些漏洞的利用代碼都可以從網(wǎng)絡(luò)上找到,所以提高了這些漏洞的危險(xiǎn)系數(shù)。我們知道,針對(duì)Web客戶端的安全漏洞的數(shù)量是很大的,而幾乎每個(gè)SAP應(yīng)用程序中都存在Web客戶端安全漏洞。所以,希望引起負(fù)責(zé)該系統(tǒng)的安全人員引起足夠的重視。
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】