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