徐紹飛 龔家瑜,2 楊亞萍
(1.上海計算機軟件技術開發(fā)中心 上海 201112)(2.上海產(chǎn)業(yè)技術研究院 上海 201206)
隨著信息技術的快速發(fā)展,國內(nèi)越來越多的醫(yī)院正加速實施信息化平臺、HIS系統(tǒng)等的整體信息化建設,以提高醫(yī)院的服務水平與核心競爭力。但在信息化建設的同時,越來越多網(wǎng)絡攻擊、網(wǎng)絡入侵行為,諸如網(wǎng)頁篡改、病人信息泄露等事故發(fā)生的頻率也不斷上升,造成的損失難以估量。如何在信息化建設過程中和后期系統(tǒng)運行維護過程中及時發(fā)現(xiàn)問題、規(guī)避風險、保證信息系統(tǒng)運行安全,也是信息化建設的重要保障。傳統(tǒng)安全防護措施均為被動防御,無法及時發(fā)現(xiàn)系統(tǒng)中的安全隱患,而漏洞掃描工具深度又不足,無法全面地、細致地、針對性地評估系統(tǒng)安全隱患。因此,可采用滲透測試方法對現(xiàn)階段醫(yī)療行業(yè)的Web應用程序進行系統(tǒng)安全評估。
滲透測試是通過模擬黑客的攻擊方法和漏洞發(fā)掘技術來評估計算機系統(tǒng)安全的一種評估方法,該方法通過從攻擊者角度發(fā)現(xiàn)分析系統(tǒng)的缺陷及漏洞,進而嘗試利用某些漏洞對信息系統(tǒng)實現(xiàn)主動攻擊的過程,評估系統(tǒng)存在的可能安全風險問題[1]。相較于傳統(tǒng)的安全防護措施,滲透測試具有以下優(yōu)點:1)針對性強,由于滲透測試是模擬黑客攻擊過程,可在測試過程中及時評估系統(tǒng)安全防護情況,在測試結(jié)束后又可全面評估系統(tǒng)總體安全狀況;2)覆蓋面廣,由于滲透測試采用黑客攻擊思路,對系統(tǒng)各個方面的漏洞均能較好覆蓋。
本文主要依據(jù)開放式Web應用程序安全項目(Open Web Application Security Project,OWASP)的OWASP TOP 10安全風險列表中的問題對醫(yī)療行業(yè)Web應用程序進行滲透測試,以三家醫(yī)院的Web應用程序為實例,采用工具掃描、代碼審查、數(shù)據(jù)抓包、人工 POC 等方法,利用 Appscan、AWVS、sqlmap、NMAP、Burpsuite、fiddler、CSRFTester等常用工具配合人工滲透的方式給出相應的實施實例,分析醫(yī)療行業(yè)Web應用程序是否存在常見的安全風險。
在Web應用程序滲透測試過程中,將整個測試流程分為以下五個階段[2]:準備階段、前攻擊階段、模擬攻擊階段、后攻擊階段、后續(xù)階段。具體流程如圖1所示。
圖1 Web應用程序滲透測試常規(guī)流程
滲透測試不同于黑客入侵,其目的是依據(jù)用戶需求發(fā)現(xiàn)系統(tǒng)中的安全風險,因此需要獲得客戶或相關部門認可后,方可在規(guī)定時間內(nèi)進行實施。該階段主要包括客戶委托授權、測試需求分析、制定滲透測試方案等內(nèi)容。
該階段主要進行信息收集和分析工作,即通常所說的“踩點”階段[3]。測試人員采用端口掃描,搜索引擎信息收集、企業(yè)備案查詢、GitHub源碼查詢、旁站查詢、必應查詢、社工庫查詢、C段查詢等各種方式,嘗試收集Web應用程序相關的各類信息,包括:域名、IP、Web基本信息、中間件信息、端口信息、編寫語言、網(wǎng)站目錄結(jié)構、關鍵和敏感目錄、開發(fā)維護人員信息等內(nèi)容。這類內(nèi)容經(jīng)分析篩選后,為后續(xù)模擬攻擊階段提供了信息基礎。
該階段主要利用前一階段收集到的相關信息,通過自動化工具或人工POC等方式對Web應用程序?qū)嵤┕簦瑖L試發(fā)現(xiàn)可被利用的漏洞。在此,主要依據(jù)OWASP給出的OWASP TOP 10安全風險列表作為攻擊的主要目標。需要注意的是,由于Web應用程序仍然是依托于網(wǎng)絡環(huán)境和操作系統(tǒng)上,滲透測試過程中可能同時發(fā)現(xiàn)網(wǎng)絡、操作系統(tǒng)等的安全漏洞,在此階段同時擴大攻擊范圍,嘗試漏洞是否被利用。
該階段利用前一階段發(fā)現(xiàn)的能被攻擊者利用的漏洞,嘗試口令破解、用戶提權、后門植入等長期潛伏攻擊。由于該階段是整個模擬攻擊階段具體實施過程中的最后階段,因此在滲透測試具體實施完成后,需要清除所有的攻擊后門。
該階段主要包括結(jié)果分析和匯總,對整個Web應用程序滲透測試的結(jié)果進行分析和匯總,形成相應的報表、總結(jié)或報告,并針對問題提供相應的解決方案。
OWASP組織的OWASP TOP 10主要依據(jù)缺陷風險評估的基礎理論和模型,對Web應用程序安全風險的威脅代理、攻擊向量、安全漏洞、技術影響、業(yè)務影響等方面進行綜合考量,通過風險的可利用性、普遍性、可檢測性、影響程度和影響后果等指標對風險進行定性綜合評估,從而總結(jié)了Web應用程序可能的、常見的、危險的10類安全隱患,主要包括:注入、失效的身份認證和會話管理、跨站腳本(XSS)、不安全的對象直接引用、安全配置錯誤、敏感信息泄露、功能級訪問控制缺失、跨站請求偽造(CSRF)、使用含有已知漏洞的組件、未驗證的重定向和轉(zhuǎn)發(fā)。
注入攻擊類漏洞,包括SQL注入、OS注入和LDAP注入等漏洞。攻擊者將不可信數(shù)據(jù)作為命令或者查詢語句的一部分發(fā)送給解釋器,由于未進行相應的輸入過濾,解釋器被攻擊者惡意構造的數(shù)據(jù)欺騙,導致解釋器執(zhí)行計劃外的命令或者未被授權時訪問數(shù)據(jù)。
失效的身份認證和會話管理漏洞是指身份認證和會話管理相關的應用程序功能未得到正確的實現(xiàn),導致攻擊者破壞密碼、密匙、會話或攻擊其他的漏洞去冒充其他用戶的身份。此類漏洞主要產(chǎn)生的原因包括:1)用戶鑒別信息沒有使用加密保護;2)用戶鑒別信息和會話ID傳輸過程中未進行加密保護;3)用戶鑒別信息可被暴力猜測;4)會話ID管理不當,會話ID暴露在URL中、沒有會話超時。
跨站腳本攻擊是攻擊者利用網(wǎng)站漏洞,通過在網(wǎng)站鏈接中插入惡意代碼,在用戶訪問該鏈接時即可獲取用戶信息的一種攻擊方法,主要分為反射型XSS、存儲型XSS、DOM型XSS等。
不安全的直接對象引用是指開發(fā)人員暴露一個對內(nèi)部實現(xiàn)對象的引用時,例如,一個文件、目錄或者數(shù)據(jù)庫密匙,就會產(chǎn)生一個不安全的直接對象引用。在沒有訪問控制檢測或其他保護時,攻擊者會操控這些引用去訪問未授權數(shù)據(jù)。
安全配置錯誤漏洞是由于某些應用程序、框架、應用程序服務器、WEB服務器、數(shù)據(jù)庫服務器默認值不安全而導致的問題。
敏感信息泄露漏洞是指弱保護的重要數(shù)據(jù),如用戶名、口令、銀行卡號、銀行卡密碼、姓名、身份證號、手機號、郵箱、醫(yī)??ㄌ?、醫(yī)療記錄、個人詳細信息等敏感數(shù)據(jù)被竊取,進而導致其他攻擊行為。
功能級訪問控制缺失漏洞是指應用程序功能級訪問控制缺失,未在每個功能被訪問時在服務器端執(zhí)行相同的訪問控制檢查策略,進而導致攻擊者能夠偽造請求以在未經(jīng)適當授權時訪問功能。
跨站請求偽造攻擊是指攻擊者將偽造的HTTP請求(包括會話、cookie和其他認證信息等)發(fā)送到Web應用程序。由于Web應用程序存漏洞,偽造的請求會被Web應用程序認為是用戶的合法請求,進而造成對Web應用程序的攻擊。
使用含有已知漏洞的組件是指Web應用程序使用帶有已知漏洞的組件,會導致該漏洞被利用,進而導致一系列的攻擊和影響成為可能。
未驗證的重定向和轉(zhuǎn)發(fā)漏洞是指Web應用程序?qū)⒂脩糁囟ㄏ蚝娃D(zhuǎn)發(fā)到其他網(wǎng)頁和網(wǎng)站未沒有得到適當驗證,攻擊者可以重定向受害用戶到釣魚軟件或惡意網(wǎng)站,或使用轉(zhuǎn)發(fā)去訪問未授權的頁面。
本章主要依據(jù)OWASP TOP 10安全風險列表中的問題對醫(yī)療行業(yè)Web應用程序進行滲透測試,主要關注第3章中所述的模擬攻擊階段,采用工具掃描、代碼審查、數(shù)據(jù)抓包、人工POC等方法,利用Appscan、AWVS、sqlmap、NMAP、Burpsuite、fiddler、CSRFTester等常用工具[3]配合人工滲透的方式給出相應的實施實例,分析三家醫(yī)院的Web應用程序是否存在常見的安全風險。
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析[5],通過Appscan、AWVS等工具掃描后發(fā)現(xiàn)某URL(http://example/noticeDetail.jsp?noticeID=)的 noticeID 參數(shù)存在SQL注入點,利用sqlmap工具對注入點進行攻擊,構造如 1‘or’1‘=’1等的SQL注入語句,發(fā)現(xiàn)存在SQL注入漏洞,可獲取該醫(yī)院系統(tǒng)的相關數(shù)據(jù)庫名,如圖2所示。
圖2 某醫(yī)院網(wǎng)站SQL注入漏洞導致數(shù)據(jù)庫名泄露
進而還可以獲取指定數(shù)據(jù)庫中的表名、用戶名、用戶口令(哈希值),利用密碼字典可以對數(shù)據(jù)庫用戶口令進行猜解,如圖3所示。
圖3 某醫(yī)院網(wǎng)站后臺數(shù)據(jù)庫用戶口令哈希值
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析[6],發(fā)現(xiàn)在找回密碼功能中,用戶名、口令、短信驗證碼等未進行加密保護,通過Burpsuite、fiddler等工具對找回密碼過程發(fā)送的HTTP請求進行抓包,可獲取發(fā)送的短信驗證碼明文。通過該明文的短信驗證碼進行驗證,可修改管理員口令,進而獲取進入系統(tǒng)后臺的權限,如圖4所示。
同時,通過Appscan、AWVS工具掃描網(wǎng)站后發(fā)現(xiàn)網(wǎng)站管理后臺存在弱口令(口令可被暴力猜解),可通過弱口令(admin)直接登錄網(wǎng)站管理后臺,如圖5所示。
圖4 某醫(yī)院網(wǎng)站找回密碼中用戶名、口令、短信驗證碼未加密
圖5 某醫(yī)院網(wǎng)站管理后臺弱口令
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析[7],通過Appscan、AWVS工具進行掃描,發(fā)現(xiàn)網(wǎng)站存在跨站腳本攻擊漏洞[4],通過構造腳本語句http://example/news.aspx? ClassId=30%27%22()%26%25%3Cacx%3E%3CScRiPt%20%3Ealert(975682)%3C/ScRiPt%3E執(zhí)行了JavaScript彈出式的警告框alart(975682),如圖6所示。
圖6 某醫(yī)院網(wǎng)站存在跨站腳本攻擊漏洞
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析,通過Appscan、AWVS工具掃描后發(fā)現(xiàn)網(wǎng)站部分URL存在越權訪問漏洞,通過直接修改URL中的tel參數(shù),可以遍歷注冊病人檢查報告,如圖7所示。
圖7 某醫(yī)院網(wǎng)站存在不安全的直接對象引用
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析,發(fā)現(xiàn)其服務器(已獲取權限)中web.config明文存儲了SQL數(shù)據(jù)庫的sa賬戶連接信息,如圖8所示。
圖8 某醫(yī)院網(wǎng)站web.config中明文存儲數(shù)據(jù)庫連接信息
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析,4.2節(jié)中所述漏洞導致用戶名、口令、短信驗證碼未加密傳輸也屬于敏感信息泄露漏洞。此類漏洞也較為常見,通過BurpSuite、fiddler工具進行數(shù)據(jù)抓包,能夠直觀地發(fā)現(xiàn)傳輸過程中是否存在敏感信息泄露漏洞,進而與其他漏洞結(jié)合利用,實現(xiàn)對Web應用程序的攻擊。又如,通過社工庫可以搜索可能的QQ、手機號、郵箱等的用戶名和口令。利用該類漏洞,可以便于對Web應用程序進行直接或間接的攻擊。
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析,通過Appscan、AWVS工具掃描后發(fā)現(xiàn)管理后臺URL存在越權訪問漏洞,可以未經(jīng)認證訪問管理后臺,并可添加后臺用戶,進而侵入后臺系統(tǒng)。
圖9 某醫(yī)院網(wǎng)站管理后臺越權訪問
進而利用任意文件上傳等漏洞[8],通過上傳webshell腳本,實現(xiàn)服務器提權,對應用服務器進行越權訪問,如圖10所示。
隨著實踐項目的推進,不難發(fā)現(xiàn)會有低年級學生在領導力方面脫穎而出,也會有高年級學生導師開始渾水摸魚。因此,朋輩導師要及時發(fā)現(xiàn)并進行合理引導,取其精華,去其糟粕,不斷提升團隊的管控能力。強化實踐進程的監(jiān)控和管理,能夠確保團隊朝著預期的方向推進。
圖10 某醫(yī)院網(wǎng)站管理后臺越權訪問
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析[9],管理后臺創(chuàng)建test用戶時,利用CSRFTester工具偽造請求,創(chuàng)建fly用戶,如圖11所示。
圖11 某醫(yī)院網(wǎng)站管理后臺CSRF漏洞
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析[10],主要通過獲取的信息與CVE等漏洞庫中的已知庫文件、框架和其它軟件模塊的漏洞進行比對。“心臟滴血”漏洞就是OpenSSL組件漏洞,諸如IIS Apache、Nginx等文件名解析漏洞、Struts2框架任意代碼執(zhí)行漏洞、中間件的源代碼泄漏漏洞等均是常見的組件漏洞。
嘗試對某醫(yī)院網(wǎng)站進行該類漏洞分析,通過Appscan、AWVS等工具進行掃描后發(fā)現(xiàn)網(wǎng)站存在重定向,對重定向進行分析,發(fā)現(xiàn)網(wǎng)站重定向時未進行redirectUrl限制,可能進入釣魚網(wǎng)站和惡意網(wǎng)站等,如圖12所示。
圖12 某醫(yī)院網(wǎng)站未驗證的重定向漏洞
作為對象的三家醫(yī)院滲透測試發(fā)現(xiàn)的漏洞數(shù)量如表1所示。
表1 滲透測試結(jié)果匯總
通過表1和滲透測試的結(jié)果可以分析發(fā)現(xiàn),作為對象的三家醫(yī)院普遍存在OWASP TOP 10的安全漏洞,其中以注入、失效的身份認證和會話管理和敏感信息泄露這三類問題漏洞數(shù)量較多,對系統(tǒng)的安全運行影響程度較大。注入類漏洞導致了數(shù)據(jù)庫信息泄露;失效的身份認證和會話管理導致明文的用戶身份鑒別信息被攻擊者惡意獲取,進而侵入系統(tǒng);敏感信息泄露直接導致攻擊者收集信息、攻擊系統(tǒng)更加便捷,甚至直接通過泄露的敏感信息侵入系統(tǒng)。
5.2.1 注入
主要防范措施有:1)對用戶輸入進行校驗,過濾非法輸入;2)參數(shù)化查詢或直接使用存儲過程進行數(shù)據(jù)查詢存??;3)應用程序使用所需最小權限與數(shù)據(jù)庫連接;4)重要數(shù)據(jù)采用加密算法存儲;5)嚴格限定輸入類型、輸入邊界。
5.2.2 失效的身份認證和會話管理
5.2.3 跨站腳本(XSS)
主要防范措施有[2]:1)對用戶輸入進行校驗,過濾非法輸入;2)瀏覽器關閉JavaScript;3)對輸入數(shù)據(jù)進行基于HTML上下文(主體、屬性、JavaS-cript、CSS或URL)的解碼和轉(zhuǎn)義;4)使用內(nèi)容安全策略(CSP)抵御跨站腳本攻擊。
5.2.4 不安全的直接對象引用
主要防范措施有:1)使用非直接的對象引用;2)訪問控制功能,即對每一個來自于不信任的源的直接對象引用都必須包含訪問控制檢查,從而確信該用戶對該對象擁有訪問權。
5.2.5 安全配置錯誤
主要防范措施有:1)配置所有的安全機制,如口令復雜度、會話時間、并發(fā)會話數(shù)和開發(fā)框架、中間件等安全配置;2)關閉所有不必要的功能,如端口、服務、默認用戶、頁面等;3)為用戶分配最小的角色權限。
5.2.6 敏感信息泄露
主要防范措施有:1)敏感信息加密存儲;2)敏感信息加密傳輸;3)采用強加密算法;4)加密密鑰的恰當管理機制;5)傳輸敏感數(shù)據(jù)時,瀏覽器進行安全校驗。
5.2.7 功能級訪問控制缺失
主要防范措施有:1)確保用戶無法直接訪問敏感目錄、URL;2)完善服務器端的身份認證機制;3)服務器端采用多因素對傳遞的參數(shù)進行校驗。
5.2.8 跨站請求偽造(CSRF)
主要防范措施有:1)HTTP請求附加Token值驗證;2)HTTP header的 Referer驗證;3)自定義HTTP header驗證;4)圖形驗證碼。
5.2.9 使用含有已知漏洞的組件
主要防范措施有:1)及時更新組件至安全版本;2)建立組件使用的安全策略和相應配置;3)在適當情況下增加對組件的安全封裝和定制,去除不需要的、脆弱的功能。
5.2.10 未驗證的重定向和轉(zhuǎn)發(fā)
主要防范措施有:1)盡量避免使用重定向和轉(zhuǎn)發(fā);2)重定向和轉(zhuǎn)發(fā)盡可能不涉及用戶參數(shù);3)每個參數(shù)都必須進行驗證以確保它的合法性和正確性,或在服務器端提供用戶參數(shù)轉(zhuǎn)化為目標頁面的映射機制。
本文主要針對醫(yī)療行業(yè)Web應用程序進行了基于OWASP TOP 10常見安全風險的滲透測試分析和實施,給出了響應實例,并分析了測試結(jié)果,最后給出了相應類型漏洞的常規(guī)防范措施。實際情況中,每一類漏洞或風險對應的情況和被利用的方式錯綜復雜,需要滲透測試人員時刻跟蹤業(yè)界最新動態(tài)。后續(xù)工作將主要集中在以下方面:一是考慮引入不同風險評估模型對漏洞進行重新歸類和風險評估;二是針對漏洞發(fā)生情況,采用基于場景模擬的測試方法,針對如登錄、支付、修改權限等重要功能模塊進行針對性滲透測試;三是為主要漏洞尋找行之有效的解決方案,發(fā)現(xiàn)和彌補系統(tǒng)漏洞,保障系統(tǒng)的安全穩(wěn)定運行。