一線工程師的經(jīng)驗(yàn)之談:ERP安全的部署和實(shí)現(xiàn)
原創(chuàng)【51CTO.com 獨(dú)家特稿】來(lái)自于維基的解釋說(shuō):ERP是企業(yè)資源規(guī)劃的英文縮寫,是基于計(jì)算機(jī)的資源管理系統(tǒng),包括對(duì)有形資產(chǎn)、資金、材料、人力資源的企業(yè)管理軟件。廣義上的ERP涵蓋了很多內(nèi)容,CRM、人力資源管理,財(cái)務(wù)管理、生產(chǎn)制造管理等等很多內(nèi)容。不管是ERP、CRM、SRM或者是其他一些類似的商業(yè)應(yīng)用管理軟件,都涉及到安全問(wèn)題,因?yàn)樗麄兇鎯?chǔ)了非常重要的業(yè)務(wù)數(shù)據(jù),這些應(yīng)用如果存在漏洞的話,都會(huì)對(duì)企業(yè)造成重大的經(jīng)濟(jì)損失。
一、ERP是安全的嗎?
關(guān)于ERP的安全,一直以來(lái)都缺少足夠的關(guān)注。在我接觸的客戶中,通常他們會(huì)對(duì)ERP安全持有三個(gè)態(tài)度:
1、第一個(gè)觀點(diǎn):ERP的業(yè)務(wù)應(yīng)用程序都在內(nèi)部網(wǎng)絡(luò)里,因此是可信的。持有這種觀點(diǎn)的人絕大多數(shù)是業(yè)務(wù)層面的高管,而非IT部門的主管。實(shí)際情況是,除非你還在大型機(jī)時(shí)代,不然的話你一定需要和別人互聯(lián)。分支辦事處、客戶和供應(yīng)商,以及銀行、銀聯(lián)都會(huì)在你的網(wǎng)絡(luò)里有接口,而且很多員工的辦公電腦都可以連接到互聯(lián)網(wǎng),這就又多了一個(gè)高風(fēng)險(xiǎn)的互聯(lián)網(wǎng)通道。我們?cè)趃oogle上輸入inrul:sap,就可以看到很多使用sap的內(nèi)部頁(yè)面。再比如圖1,我們?cè)谝粋€(gè)shado的搜索引擎上,輸入erp,可以輕易的搜索到很多國(guó)家的erp服務(wù)器,包括他們的ip,中間件,開(kāi)發(fā)語(yǔ)言等信息。
圖1 利用搜索引擎得到的ERP服務(wù)器信息
2、第二個(gè)觀點(diǎn):ERP是開(kāi)發(fā)商的問(wèn)題。持有這種觀點(diǎn)的人認(rèn)為,ERP的安全問(wèn)題,開(kāi)發(fā)商應(yīng)該在設(shè)計(jì)之初就充分考慮到,并且確保了安全,持有這種觀點(diǎn)的人一般都是對(duì)安全不太了解的IT主管。從技術(shù)的角度來(lái)說(shuō),開(kāi)發(fā)商應(yīng)該對(duì)他程序的錯(cuò)誤和架構(gòu)負(fù)責(zé)。但是,默認(rèn)/不安全的配置、人為因素、補(bǔ)丁管理、策略和過(guò)程則是用戶自己的問(wèn)題。換句話說(shuō),即使代碼是百分百安全的,在實(shí)施部署、日常運(yùn)維中,你還是有很多機(jī)會(huì)可以犯錯(cuò)。
3、第三個(gè)觀點(diǎn):業(yè)務(wù)應(yīng)用是內(nèi)部的,而且非常具體,黑客不可能了解結(jié)構(gòu)和用途。持有這種觀點(diǎn)的人一般認(rèn)為,系統(tǒng)都在公司內(nèi)部運(yùn)行,而且使用的平臺(tái)也不是windows這種黑客所熟知的,因此他是封閉、隱藏的世界,因此可以高枕無(wú)憂。
真的可以高枕無(wú)憂嗎?第一,越熱門的產(chǎn)品越容易被黑客研究,從而招致更多的攻擊,因?yàn)橐坏┕舻檬?,其可?fù)制性很大,可以獲得更多戰(zhàn)果。大家熟知的windows就是在這種攻防對(duì)抗中慢慢健壯起來(lái)的。國(guó)內(nèi)現(xiàn)在的ERP市場(chǎng),幾個(gè)大型廠商的占用率非常高,這就提供了研究攻擊的土壤。其二,ERP在過(guò)去幾年的發(fā)展中,我們可以清楚的看到,企業(yè)發(fā)展壯大之后,不可避免的具有地域擴(kuò)張的需要。所以它越來(lái)越依賴于互聯(lián)網(wǎng)運(yùn)行,即使現(xiàn)在沒(méi)有,將來(lái)也會(huì)有,等到那個(gè)時(shí)候再來(lái)考慮安全問(wèn)題,已經(jīng)積重難返了,整改的代價(jià)會(huì)非常高。第三,不管是供應(yīng)商還是用戶,對(duì)安全的防御能力還停留在3-5年前的水平,買個(gè)防火墻,裝個(gè)殺毒軟件。他們不知道攻擊早已經(jīng)從2-4層轉(zhuǎn)移到應(yīng)用層攻擊上了。
那么,ERP的主要安全問(wèn)題是什么呢?根本原因有三個(gè),第一就是ERP具有復(fù)雜的結(jié)構(gòu),系統(tǒng)越復(fù)雜,安全問(wèn)題越難處理。也就是安全界常說(shuō)的complexity kills security ,復(fù)雜性殺死安全。第二,安全層次覆蓋網(wǎng)絡(luò)、應(yīng)用等各個(gè)層面。第三,管理員擔(dān)心打補(bǔ)丁,會(huì)造成系統(tǒng)出問(wèn)題,所以絕大多數(shù)ERP系統(tǒng)里都存在著很多漏洞。所以,從erp的安全生命周期來(lái)上來(lái)說(shuō),想要保證整體安全,要從兩個(gè)方面來(lái)考慮,開(kāi)發(fā)安全,實(shí)施部署的安全。
圖2 ERP安全生命周期框架#p#
二、開(kāi)發(fā)安全
圖3 開(kāi)發(fā)安全框架
這個(gè)圖,實(shí)際上是針對(duì)程序員來(lái)說(shuō)的,開(kāi)發(fā)的安全。中間是最重要的數(shù)據(jù)。開(kāi)發(fā)安全分兩塊,一個(gè)是代碼漏洞,一個(gè)是前端漏洞。所謂前端漏洞,就是整個(gè)erp的前臺(tái),與用戶交互的地方。
1、代碼安全
在代碼的漏洞上,根據(jù)常見(jiàn)的ERP安全問(wèn)題,我們做了一個(gè)TOP10的排名。
圖4 開(kāi)發(fā)代碼漏洞TOP10
例一:跨站。sap有很多跨站問(wèn)題,最新發(fā)現(xiàn)的一個(gè)是在5月份,在RequestParts.htm頁(yè)面上,有漏洞的變量是sap-ffield,這個(gè)頁(yè)面是sap和互聯(lián)網(wǎng)的接口交互的地方,通過(guò)這個(gè)跨站漏洞,可以繞過(guò)sap的跨站過(guò)濾,獲取管理員的cookie。
- 提交:/sap(bD1lbiZjPTAwMA==)/bc/bsp/sap/icf/RequestParts.htm?sap-ffield=aaa=<img/src="asas"/onerror="alert('XSS')">
例子中使用簡(jiǎn)單的onerror,一個(gè)標(biāo)準(zhǔn)的事件屬性,就可以繞過(guò)sap的過(guò)濾機(jī)制,由此可見(jiàn)sap的跨站過(guò)濾,應(yīng)該是非常脆弱的。而且這個(gè)頁(yè)面比較關(guān)鍵,它是互聯(lián)網(wǎng)交互的,所以如果你google去搜這種頁(yè)面,就有機(jī)會(huì)跨站,拿到管理員cookie,也就是說(shuō),你完全可以遠(yuǎn)程滲透sap。#p#
例二:信息泄露問(wèn)題。
在Oracle財(cái)務(wù)軟件的/pls/DAD/find_web.ping和/OA_HTML/jsp/fnd/fndping.jsp這兩個(gè)頁(yè)面上都有這個(gè)問(wèn)題,這兩個(gè)頁(yè)面記錄了連接的錯(cuò)誤信息,而且錯(cuò)誤信息非常詳細(xì),幾點(diǎn)幾分,Oracle的http服務(wù)器Apache某某版本,與某IP的連接出現(xiàn)問(wèn)題,在Apache的日志中記錄了這個(gè)問(wèn)題,Apache的日志路徑是什么,可以使用哪些debug命令來(lái)調(diào)試確認(rèn)等等一系列信息。
例三:錯(cuò)誤的訪問(wèn)控制/遍歷
這個(gè)問(wèn)題是NETWAVER里的,NETWAVER是sap的基本平臺(tái),sap所有的新產(chǎn)品都搭建在這個(gè)平臺(tái)上。在NETWAVER里有個(gè)rfc庫(kù),庫(kù)里有很多函數(shù)可以被調(diào)用,但是誰(shuí)可以調(diào)用這些函數(shù),只有幾個(gè)賬戶可以調(diào)用。其中一個(gè)賬戶是SAPCPIC,他有個(gè)默認(rèn)密碼是admin。這個(gè)賬戶不是在線用戶,就是說(shuō)他不能直接登錄,它就是用來(lái)執(zhí)行rfc兼容命令的,可以做遠(yuǎn)程函數(shù)調(diào)用。使用這個(gè)權(quán)限你就可以獲得共享內(nèi)容。然后你還可以寫idoc,這個(gè)idoc是sap的數(shù)據(jù)交換碼,比方說(shuō)你的商品價(jià)格,我就可以通過(guò)這個(gè)權(quán)限,把你的商品價(jià)格取出來(lái),或者把你的商品價(jià)格改掉放進(jìn)去。這個(gè)攻擊就是利用這個(gè)賬戶,因?yàn)檫@個(gè)賬戶一般人根本不會(huì)用到,甚至都不知道密碼是什么。
圖5 NETWAVER中的錯(cuò)誤訪問(wèn)控制/遍歷漏洞
2、前端安全
圖6 開(kāi)發(fā)中的前端安全漏洞TOP10
這里都是和用戶交互的地方,比如BS結(jié)構(gòu)的瀏覽器頁(yè)面,信息的傳遞都在這里。所以這里的風(fēng)險(xiǎn)級(jí)別都比較高,也是很多都可以遠(yuǎn)程去做的。#p#
例一:緩沖區(qū)溢出
該例參見(jiàn)宇文先生在09年的《大型企業(yè)之患!SAP安全之攻擊客戶端》這篇文章。http://netsecurity.51cto.com/art/200909/150135.htm,在第二段里,他提到了緩沖區(qū)溢出攻擊的一個(gè)實(shí)例。
例二:默認(rèn)密碼
erp里因?yàn)橘~戶、權(quán)限很多,也記不住,就有個(gè)很壞的習(xí)慣,把密碼寫在程序里,而且大多數(shù)也不怎么加密,嗅探就可以,而且呢,這種寫法的還大多數(shù)都是連接數(shù)據(jù)庫(kù),你可以很容易成為他的dba。關(guān)于這點(diǎn),我們?cè)诤竺鏁?huì)詳細(xì)提到。
三、安全的部署和實(shí)現(xiàn)
圖7 安全的部署、實(shí)現(xiàn)框架圖
在這一部分,是比較通用的:底層的網(wǎng)絡(luò),然后上面跑的系統(tǒng),數(shù)據(jù)庫(kù)、應(yīng)用,在這里,他也有前端的漏洞問(wèn)題,這就比開(kāi)發(fā)安全要復(fù)雜一些。
1、網(wǎng)絡(luò)層漏洞
圖8 網(wǎng)絡(luò)層漏洞TOP10
網(wǎng)絡(luò)漏洞,這個(gè)大家都見(jiàn)的多了,一般的安全加固也在做這方面的事情。
例:監(jiān)聽(tīng)SAP未加密的通信
在SAP網(wǎng)絡(luò)中,使用
tcpdump -n -i eth0 'tcp[13] & 3 != 0 and (( tcp[2:2] >= 3200
tcp[2:2] < 3300) > or 5 ( tcp[2:2] >= 3600 tcp[2:2] < > 3700))'
進(jìn)行監(jiān)聽(tīng),這個(gè)例子是監(jiān)聽(tīng)tcp的3200,3600幾個(gè)高端端口,這是NETWAVER的默認(rèn)專用端口,在這個(gè)例子里,我們發(fā)現(xiàn)了HR系統(tǒng)的連接密碼,權(quán)限是最大權(quán)限,可以獲得hr系統(tǒng)的所有數(shù)據(jù)。#p#
2、操作系統(tǒng)漏洞
圖9 操作系統(tǒng)層漏洞TOP10
在erp里面有個(gè)很大的問(wèn)題就是默認(rèn)密碼,那在這一層上,實(shí)際上也有很多可利用的地方。這里列出了存儲(chǔ)各類密碼的不同路徑,這是從sap手冊(cè)上找到的,我相信大多數(shù)人不會(huì)改這些東西,你只要能夠訪問(wèn)這些文件,你就可以拿到相關(guān)密碼。雖然有的密碼是加密的,但是他們的加密機(jī)制比較弱。
例:默認(rèn)敏感文件
數(shù)據(jù)庫(kù)文件(數(shù)據(jù),加密的Oracle、SAP密碼)
路徑:/oracle/
SAP配置文件(加密的密碼)
/usr/sap/
/usr/sap/
Configtool配置文件(加密的數(shù)據(jù)庫(kù)密碼)
\usr\sap\DM0\SYS\global\security\data\SecStope.properties
\usr\sap\DM0\SYS\global\security\data\SecStope.key
J2EE Trace文件(明文密碼)
/usr/sap/
圖10,在這個(gè)文件里抓到的用戶名和密碼
ICM(加密密碼)
\usr\sap\DM0\SYS\exe\uc\NTI386\icmauth.txt #p#
3、數(shù)據(jù)庫(kù)漏洞
圖11 數(shù)據(jù)庫(kù)漏洞TOP10
例一:Oracle開(kāi)啟不必要的服務(wù)
UTL_HTTP:UTL_HTTP可以讀取Oracle里面的網(wǎng)頁(yè)源碼,這個(gè)參數(shù)比較危險(xiǎn),如果你學(xué)過(guò)oracle注入的話,這個(gè)參數(shù)是很常見(jiàn)的Oracle注入測(cè)試點(diǎn),后來(lái)Oracle發(fā)現(xiàn)了這個(gè)問(wèn)題,在11的版本里頭,開(kāi)始提供針對(duì)這個(gè)參數(shù)的訪問(wèn)控制,但是有多少人知道呢?又有多少人知道,而且會(huì)去進(jìn)行訪問(wèn)控制呢?我看了很多的安全加固手冊(cè),對(duì)這個(gè)完全沒(méi)有提及。
UTL_TCP:看名字你就知道,它是建立tcpip連接的,可以跨越數(shù)據(jù)庫(kù)領(lǐng)域?qū)ν馔ㄐ拧K某雒且驗(yàn)閂oyager這個(gè)蠕蟲(chóng),這個(gè)蠕蟲(chóng)會(huì)把dba的權(quán)限授給public,然后利用UTL_TCP去網(wǎng)上下載其他病毒,再然后把數(shù)據(jù)庫(kù)的密碼發(fā)送郵件給一個(gè)指定郵箱,06年1月份的時(shí)候,這個(gè)病毒大規(guī)模爆發(fā),直到6月份,Oracle才發(fā)布了補(bǔ)丁。這些默認(rèn)安裝的服務(wù),都是可以利用的。
例二:MSSQL的Master..xp_dirtree _\\fakesmb\sharee'
這是列目錄,找共享,是常見(jiàn)的攻擊命令,也是sql注入的常見(jiàn)用法,可以列出你根目錄,再然后找到你的數(shù)據(jù)庫(kù),把它down下來(lái)慢慢破解。
例三:使用低權(quán)限 Oracle 數(shù)據(jù)庫(kù)賬戶得到 OS 訪問(wèn)權(quán)限
這個(gè)例子在互聯(lián)網(wǎng)上廣為流傳,文章名字就叫做《使用低權(quán)限 Oracle 數(shù)據(jù)庫(kù)賬戶得到 OS 訪問(wèn)權(quán)限》。其原理:一般情況下,你去連接Oracle的SMB控制臺(tái),都需要DBA權(quán)限,但是還是有辦法來(lái)獲得權(quán)限的,那么這里就利用了Oracle的一個(gè)漏洞,在Oracle里面,任何用戶都可以創(chuàng)建一個(gè)文本索引,并且發(fā)送文本查詢。這就是這個(gè)漏洞的利用基礎(chǔ),然后你就能讀到服務(wù)器上的遠(yuǎn)程共享,再通過(guò)遠(yuǎn)程共享,竊取你這臺(tái)服務(wù)器的賬戶。
4、應(yīng)用漏洞
圖12 應(yīng)用漏洞TOP10
應(yīng)用漏洞實(shí)際上就和日常運(yùn)維有很大關(guān)系了,比較危險(xiǎn)的也是前3名,補(bǔ)丁,默認(rèn)密碼,權(quán)限設(shè)置。#p#
例一:默認(rèn)密碼
圖13 默認(rèn)密碼
這里的SAP和DDIC是超級(jí)管理員,TMSADM是用來(lái)做通信管理的,SAPCPIC這個(gè)說(shuō)過(guò)了,是rfc遠(yuǎn)程調(diào)用的,EARLYWATCH類似與日志審計(jì)賬戶。他們都有自己的初始密碼,除了超級(jí)管理員的密碼可能被改,其他被改的可能性不大。
5、前端漏洞
圖14 前端漏洞TOP10
例:未加密
圖15 缺少加密
sap怎么傳輸密碼的呢,他有一個(gè)自己的協(xié)議叫DIAG,把數(shù)據(jù)包走diag傳過(guò)去,因?yàn)樗X(jué)得diag是私有格式,所以認(rèn)為很安全,密碼就是簡(jiǎn)單的壓縮一下傳過(guò)去,但是這是可以被解壓的,數(shù)據(jù)加密也是這樣。那怎么解決呢?SNC,sap的一個(gè)身份驗(yàn)證機(jī)制,4.0版本以上開(kāi)始提供。
webgui,這個(gè)對(duì)密碼用了base64編碼,簡(jiǎn)單的說(shuō),base64根本就不能算是個(gè)加密,它的主要作用也不是用來(lái)加密,它只能說(shuō),把密碼變成人類不可直接讀的文件,base64很容易破解。現(xiàn)在只有電子郵件才用它,因?yàn)樗鼙WC數(shù)據(jù)在很多傳遞過(guò)程中不會(huì)出錯(cuò)。所以這個(gè)密碼很容易就破解了,而且網(wǎng)上有很多工具。
RFC,這個(gè)我們說(shuō)過(guò)了,遠(yuǎn)程調(diào)用的函數(shù)庫(kù),他的密碼加密是異或運(yùn)算一個(gè)已知的值,你知道知道這個(gè)值,你就非常輕松的運(yùn)算出來(lái)明文,就算你不知道這個(gè)已知的值,如果他的密鑰空間不夠大,出現(xiàn)重復(fù),仍然可被破解。無(wú)線的密碼破解,其實(shí)也是和這個(gè)原理差不多,就是不斷抓包,抓到一定數(shù)量時(shí)候,他就會(huì)有重復(fù),然后破解。
Visual admin的控制臺(tái)密碼加密,用的是自己的專有算法,不過(guò)這個(gè)算法在08年前被破了,但是不好利用。
mobile的admin控制臺(tái):無(wú)加密。
【51CTO.com獨(dú)家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請(qǐng)注明原文出處及出處!】
【編輯推薦】
- 對(duì)項(xiàng)目管理在ERP實(shí)施中的應(yīng)用描述
- 中小企業(yè)ERP系統(tǒng)選型四個(gè)標(biāo)準(zhǔn)分析精簡(jiǎn)版
- 項(xiàng)目管理在ERP實(shí)施中的應(yīng)用 哪些方面需注意
- 選擇制造業(yè)ERP軟件哪些問(wèn)題你最好詢問(wèn)一下?