◆劉春慧
?
信息系統(tǒng)應(yīng)用安全測(cè)試的有效方法與案例研究
◆劉春慧
(上海欣能信息科技發(fā)展有限公司 上海 200025)
當(dāng)前信息安全不容樂(lè)觀,“大安全”態(tài)勢(shì)越來(lái)越明顯,信息系統(tǒng)的安全需求越來(lái)越高,對(duì)軟件測(cè)試人員也提出了更高的要求。本文結(jié)合安全測(cè)試的項(xiàng)目實(shí)踐,介紹了安全測(cè)試的重點(diǎn)內(nèi)容,總結(jié)了易發(fā)的安全測(cè)試隱患檢查項(xiàng)、安全(滲透)測(cè)試的一般步驟,并列舉典型案例進(jìn)行闡述,通過(guò)總結(jié)有效的測(cè)試方法,指導(dǎo)軟件測(cè)試人員完成應(yīng)用安全測(cè)試工作。本文成果可為相關(guān)應(yīng)用與研究提供參考。
信息系統(tǒng);應(yīng)用安全;安全測(cè)試;滲透測(cè)試;出廠測(cè)試
當(dāng)前,我們正處于信息技術(shù)高速發(fā)展的時(shí)代,“大云物移”應(yīng)用日漸深化,萬(wàn)物互聯(lián)態(tài)勢(shì)日益明顯。但是,國(guó)家互聯(lián)網(wǎng)應(yīng)急中心、中國(guó)信息安全評(píng)測(cè)中心等權(quán)威信息發(fā)布的年度綜述和安全態(tài)勢(shì)均體現(xiàn)出:云信息系統(tǒng)的高危漏洞比例、受攻擊頻次均居高不下,信息安全不容樂(lè)觀。正所謂,水上“波光瀲滟”,水下“暗流涌動(dòng)”。《中華人民共和國(guó)網(wǎng)絡(luò)安全法》于2017年6月正式頒布實(shí)施,進(jìn)一步推動(dòng)了各行業(yè)的網(wǎng)絡(luò)安全建設(shè),將信息安全的關(guān)注度推向了新的高度。
筆者所在的公司主要提供行業(yè)應(yīng)用軟件,主要行業(yè)用戶常規(guī)信息安全督查工作常抓不懈,相應(yīng)的考核力度也是非常大,這就要求我們必須重視軟件的安全研發(fā)和安全測(cè)試工作,提供安全可靠的應(yīng)用系統(tǒng)。近年來(lái),測(cè)試團(tuán)隊(duì)在多個(gè)項(xiàng)目進(jìn)行了安全測(cè)試,逐步探索積累,形成了一套有效的安全測(cè)試方法。一般而言,信息安全包括主機(jī)和網(wǎng)絡(luò)安全、數(shù)據(jù)庫(kù)安全、應(yīng)用安全。本文主要以應(yīng)用安全為研究對(duì)象,針對(duì)出廠測(cè)試這一環(huán)節(jié),分別從技術(shù)、管理上對(duì)應(yīng)用安全測(cè)試進(jìn)行闡述,研究整套有效的測(cè)試方法。
對(duì)支撐類軟件實(shí)行評(píng)估備案管理制度,包括操作系統(tǒng)、數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、實(shí)時(shí)庫(kù)、大數(shù)據(jù)平臺(tái)、云計(jì)算平臺(tái)、應(yīng)用服務(wù)、各種開(kāi)發(fā)編譯軟件、第三方開(kāi)發(fā)組件、瀏覽器軟件等非自主開(kāi)發(fā)的軟件。未完成備案的軟件不能在研發(fā)過(guò)程中引用。評(píng)估備案工作中最要的是技術(shù)評(píng)估,搭建評(píng)估環(huán)境和評(píng)估Demo,組織開(kāi)發(fā)、測(cè)試人員著重從安全性、性能、兼容性來(lái)評(píng)估,形成技術(shù)評(píng)估報(bào)告。
(1)環(huán)境隔離
測(cè)試過(guò)程中要經(jīng)常解決各種缺陷,如果連接現(xiàn)場(chǎng)生產(chǎn)環(huán)境,極有可能造成現(xiàn)場(chǎng)生產(chǎn)數(shù)據(jù)破壞、網(wǎng)絡(luò)及服務(wù)器高負(fù)荷運(yùn)行、甚至?xí)踩┒磦魅窘o現(xiàn)場(chǎng)環(huán)境,給信息系統(tǒng)的安全運(yùn)行帶來(lái)極大的安全隱患。所以嚴(yán)禁連接現(xiàn)場(chǎng)運(yùn)行環(huán)境進(jìn)行開(kāi)發(fā)、調(diào)試、測(cè)試工作,必須部署獨(dú)立的、與現(xiàn)場(chǎng)運(yùn)行環(huán)境隔離的測(cè)試環(huán)境。
(2)部署加固
測(cè)試服務(wù)器及客戶端,要按管理規(guī)范進(jìn)行相應(yīng)的加固處理。在部署、使用的過(guò)程中,不可隨意破壞原有的加固策略,這不僅破壞了主機(jī)的加固策略,而且也給應(yīng)用系統(tǒng)帶來(lái)了潛在的提權(quán)、開(kāi)端口、弱口令等隱患,如下是重點(diǎn)關(guān)注事項(xiàng):
①防火墻:不可隨意關(guān)閉已開(kāi)啟的防火墻。
②用戶權(quán)限:為應(yīng)用安裝的操作系統(tǒng)的用戶不可隨意提權(quán)。即使安裝應(yīng)用時(shí)需要提權(quán)、管理員賬戶等,安裝完成后,要恢復(fù)原有加固配置。
③弱口令:安裝應(yīng)用服務(wù)、中間件等設(shè)置強(qiáng)口令(8位以上,數(shù)字、字母、大小寫、特殊字符組合);尤其注意引入的第三方組件口令也需要設(shè)置強(qiáng)口令。
版本管理是給予源碼有序標(biāo)識(shí)、方便回溯和提交穩(wěn)定運(yùn)行版的基礎(chǔ)。在實(shí)際的研發(fā)過(guò)程中通常要測(cè)試若干個(gè)過(guò)程版本,一套通俗易讀、行之有效的版本體系,會(huì)給開(kāi)發(fā)、測(cè)試、發(fā)布帶來(lái)諸多便利,推薦采用源代碼過(guò)程版本號(hào)(以下稱源碼版本號(hào))與最終發(fā)布版本號(hào)(以下稱發(fā)布版本號(hào))相關(guān)聯(lián)的版本命名規(guī)則。
源代碼版本:應(yīng)用簡(jiǎn)稱+主版本號(hào)+副版本號(hào)+編譯批次+首次構(gòu)建日期。
發(fā)布版版本:應(yīng)用簡(jiǎn)稱+主版本號(hào)+副版本號(hào)+構(gòu)建日期。
若代碼標(biāo)簽號(hào)為:APP_Ver 1.0.001.12(11) Build 2017-06-09。
則版本號(hào)對(duì)應(yīng)為:APP_Ver 1.0.001.12 Build 2017-06-09。
應(yīng)用安全包含身份鑒別、訪問(wèn)控制、安全審計(jì)、剩余信息保護(hù)、通信完整性、通信保密性、抗抵賴、軟件容錯(cuò)、資源控制等方面內(nèi)容,這些在等級(jí)保護(hù)具體要求中都有詳細(xì)的對(duì)標(biāo)檢查項(xiàng)。本文從實(shí)戰(zhàn)角度,研究總結(jié)了易發(fā)的安全測(cè)試隱患檢查項(xiàng),安全(滲透)測(cè)試的一般步驟,并列舉幾個(gè)典型案例來(lái)進(jìn)一步分析闡述。
(1)配置類
配置類內(nèi)容包括:新支撐軟件引入、支撐軟件版本升級(jí);數(shù)據(jù)庫(kù)連接、用戶/密碼類公用關(guān)鍵信息非加密配置;源碼版本(含外包源碼)。
測(cè)試方法:對(duì)比檢查項(xiàng)目中《測(cè)試發(fā)布流轉(zhuǎn)單》、《支撐軟件配置清單》、配置庫(kù)中源碼的版本號(hào)。
(2)身份鑒別
身份鑒別內(nèi)容包括:簡(jiǎn)單密碼;多次登錄失敗未處理;通過(guò)萬(wàn)能密碼或繞過(guò)認(rèn)證登錄系統(tǒng)。
測(cè)試方法:設(shè)置長(zhǎng)度小于8位,或者大于8位但不符合規(guī)范的密碼(大小寫、數(shù)字字母混合、有特殊字符),測(cè)試是否成功設(shè)置并登錄成功;三次連續(xù)登錄失敗,測(cè)試是否退出程序或鎖定賬戶;與開(kāi)發(fā)溝通(有條件的話可以反編譯),檢查登錄處理機(jī)制;使用專業(yè)掃描滲透工具配合。
(3)訪問(wèn)控制
訪問(wèn)控制內(nèi)容包括:權(quán)限體系未采用“權(quán)限最小化”原則;權(quán)限存在特權(quán)或紊亂;關(guān)鍵業(yè)務(wù)未綁定IP。
測(cè)試方法:對(duì)一個(gè)單獨(dú)業(yè)務(wù)用戶賦予正常必須權(quán)限后,測(cè)試能否進(jìn)行非授權(quán)操作;使用系統(tǒng)管理員或其他管理類的賬戶登錄,測(cè)試業(yè)務(wù)功能;根據(jù)業(yè)務(wù)需求,測(cè)試必須綁定IP的功能是否只能在合規(guī)IP主機(jī)下完成。
(4)數(shù)據(jù)安全
數(shù)據(jù)安全內(nèi)容包括,敏感信息未加密存儲(chǔ);敏感信息未加密網(wǎng)絡(luò)傳輸;對(duì)外接口(Webservice、http、tcp等)未認(rèn)證,能夠直接調(diào)用。
測(cè)試方法:測(cè)試數(shù)據(jù)庫(kù)表、各類審計(jì)日志是否加密保存敏感信息;用fiddler之類的工具網(wǎng)絡(luò)抓包,測(cè)出有無(wú)敏感明文信息;使用專業(yè)的掃描工具。
(5)資源控制
資源控制內(nèi)容包括:登錄后長(zhǎng)時(shí)間無(wú)交互,未能自動(dòng)終止會(huì)話;未對(duì)最大并發(fā)連接數(shù)進(jìn)行限制;未限制單用戶的資源配額。
測(cè)試方法:登錄系統(tǒng),靜置15分鐘以上(或具體業(yè)務(wù)應(yīng)用系統(tǒng)需求的失效時(shí)間),測(cè)試系統(tǒng)的會(huì)話是否失效;利用LoadRunner之類的性能測(cè)試工具,測(cè)試最大并發(fā)連接數(shù);手動(dòng)操作某功能發(fā)起一個(gè)超大的數(shù)據(jù)請(qǐng)求,測(cè)試是否終止該請(qǐng)求的正常返回。
(6)安全審計(jì)
安全審計(jì)內(nèi)容包括:未提供安全審計(jì)日志、或者安全審計(jì)日志不全。
測(cè)試方法:結(jié)合業(yè)務(wù)需求,測(cè)試登錄、數(shù)據(jù)庫(kù)連接、業(yè)務(wù)CUD、關(guān)鍵信息獲取、服務(wù)切換、程序異常等安全審計(jì)日志是否完整,是否存在敏感信息。
(7)通用漏洞
通用漏洞內(nèi)容包括:SQL注入、SQL語(yǔ)句任意執(zhí)行、跨站腳本(XSS)、目錄遍歷、任意文件上傳、任意附件越權(quán)下載、服務(wù)器端請(qǐng)求偽造(SSRF)、跨站請(qǐng)求偽造(CSRF)、XML或JSON對(duì)象注入、第三方組件弱口令或缺省口令、遠(yuǎn)程代碼執(zhí)行、反序列化、開(kāi)發(fā)框架漏洞、開(kāi)啟未經(jīng)申請(qǐng)的端口等。
測(cè)試方法:使用專業(yè)的掃描工具、注入工具、專項(xiàng)工具。
(8)異常處理
異常處理內(nèi)容包括:異常信息處理不當(dāng),意圖暴露明顯(如用戶不存在、密碼錯(cuò)誤等);程序異常時(shí),暴露完整調(diào)用堆棧信息。
測(cè)試方法:查看系統(tǒng)提供交互功能的輸出信息;制造異常情況,測(cè)試異常拋出是否未經(jīng)過(guò)處理。
安全(滲透)測(cè)試,一般可按照“一概覽、二掃描、三針對(duì)、四恢復(fù)、五總結(jié)”的流程來(lái)發(fā)現(xiàn)可用漏洞并滲透到目標(biāo)系統(tǒng),如圖1所示。
圖1 應(yīng)用安全(滲透)測(cè)試的一般步驟
“一概覽”是對(duì)目標(biāo)系統(tǒng)人工訪問(wèn),結(jié)合可以查看的文件,大致了解編程語(yǔ)言和所用的框架;隨意輸入一些不可能存在的文件或路徑,查看服務(wù)器如何處理無(wú)效資源、異常處理情況;登錄一下,看看返回信息的處理是否專業(yè);與研發(fā)溝通,了解系統(tǒng)的實(shí)現(xiàn)框架、開(kāi)發(fā)語(yǔ)言、集成方式等。
“二掃描”是用多種掃描工具對(duì)目標(biāo)系統(tǒng)進(jìn)行掃描,包含開(kāi)放端口、系統(tǒng)漏洞、應(yīng)用系統(tǒng)漏洞等。每種工具都有其擅長(zhǎng)的領(lǐng)域,所以用多種工具綜合掃描,盡可能避免有遺漏。對(duì)一般的安全測(cè)試,到這一步可將漏洞結(jié)果反饋至研發(fā)人員整改即可;對(duì)進(jìn)一步的滲透測(cè)試,則需要分析、篩選掃描出來(lái)的漏洞,選擇有滲透價(jià)值的漏洞。
“三針對(duì)”是利用截包工具、重放工具、破解工具、專項(xiàng)滲透工具等對(duì)篩選出來(lái)的漏洞(特別是高危漏洞)進(jìn)行針對(duì)性的滲透;或者根據(jù)漏洞規(guī)則自編滲透腳本、滲透請(qǐng)求來(lái)滲透目標(biāo)系統(tǒng)。在此環(huán)節(jié)中,滲透測(cè)試人員需要盡可能地入侵系統(tǒng)中,獲得服務(wù)器或應(yīng)用系統(tǒng)的部分(或全部)訪問(wèn)控制權(quán)。
“四恢復(fù)”是對(duì)滲透過(guò)程中創(chuàng)建的用戶、上傳的文件、更改的文件及配置等所有變更要逐一恢復(fù)原樣,避免對(duì)系統(tǒng)產(chǎn)生次生危害。
“五總結(jié)”是對(duì)本次測(cè)試過(guò)程中方法、發(fā)現(xiàn)的問(wèn)題要記錄總結(jié),形成報(bào)告,匯報(bào)項(xiàng)目負(fù)責(zé)人,反饋研發(fā)人員,以利于問(wèn)題整改和經(jīng)驗(yàn)積累。
(1)XML對(duì)象注入漏洞
①第一步,用專業(yè)掃描工具對(duì)該系統(tǒng)進(jìn)行掃描,發(fā)現(xiàn)存在一個(gè)XML對(duì)象注入漏洞post ***.rpc.d?__rpc=true。
②第二步,用截包工具,截獲POST請(qǐng)求報(bào)文,附加遠(yuǎn)程調(diào)用(故意亂寫一個(gè)Bean調(diào)用,可導(dǎo)致服務(wù)端異常),并查詢服務(wù)器的用戶密碼文件,如圖2所示。
圖2 XML對(duì)象注入簡(jiǎn)化報(bào)文
調(diào)用之后,響應(yīng)報(bào)文不僅返回了服務(wù)端的堆棧調(diào)用異常信息,還成功將passwd文件內(nèi)容返回,如圖3所示。
圖3 XML對(duì)象注入后返回的簡(jiǎn)化內(nèi)容
③第三步,拿到passwd、以及服務(wù)器上的其它有用文件后,可以開(kāi)展一系列更深入的滲透攻擊。
(2)框架漏洞
某WEB系統(tǒng)訪問(wèn)網(wǎng)頁(yè)名稱是.action結(jié)尾,推斷應(yīng)該引用了struts框架。眾所周知,struts的部分版本存在S2-045漏洞,通過(guò)此漏洞可繞過(guò)主機(jī)系統(tǒng)權(quán)限,遠(yuǎn)程執(zhí)行命令,且可添加具有root權(quán)限的用戶,對(duì)系統(tǒng)執(zhí)行任意操作。
①第一步,使用struts漏洞專用檢測(cè)工具檢測(cè),果真發(fā)現(xiàn)存在S2-045漏洞。
②第二步,上傳滲透腳本。通過(guò)Struts S2-045的EXP先上傳普通小馬到網(wǎng)站根目錄。上傳成功后,再通過(guò)小馬上傳菜刀馬。
③第三步,通過(guò)菜刀連接,可以獲取服務(wù)器文件、命令執(zhí)行、連接遠(yuǎn)程數(shù)據(jù)庫(kù)等敏感信息。通過(guò)文件搜索,在服務(wù)器發(fā)現(xiàn)大量用戶的用戶數(shù)據(jù),至此該系統(tǒng)由于框架漏洞,初步滲透完成。
本文總結(jié)了多個(gè)系統(tǒng)的安全測(cè)試案例,探索了一整套有效的測(cè)試方法,實(shí)踐證明該方法有效、可推廣,也可作為軟件測(cè)試部門的安全測(cè)試工作規(guī)范。當(dāng)然,隨著信息化水平的不斷提高,系統(tǒng)集成復(fù)雜度也在不斷提升,軟件框架及開(kāi)發(fā)語(yǔ)言百花齊放、精彩紛呈,應(yīng)用安全也面臨新形勢(shì)、新問(wèn)題、新威脅,我們?cè)趹?yīng)用安全測(cè)試這一方向上還需要進(jìn)一步探索研究、補(bǔ)充完善。
[1]陳威,季佳育,王剛.如何做好信息系統(tǒng)上線前安全測(cè)試[J].華北電力技術(shù),2011.
[2]張艷玲,詹雄,房磊.國(guó)家電網(wǎng)公司信息安全督查工作提升實(shí)踐[J].電力信息與通訊技術(shù),2015.