◆閆雯罡 吳中超 張任川
Web站點(diǎn)滲透測試技術(shù)探究
◆閆雯罡 吳中超 張任川
(信息工程大學(xué) 河南 450002)
滲透測試在web安全研究與實(shí)踐中發(fā)揮著越來越重要的作用。本文概要介紹了web滲透測試的概念與標(biāo)準(zhǔn)流程,對(duì)滲透測試中常見的問題做了分析,并闡述了其成因、原理和危害等。
web安全;滲透測試;網(wǎng)絡(luò)安全
近年來,在web安全的研究與實(shí)踐過程中,滲透測試正占據(jù)著越來越重要的地位。滲透測試是通過模擬惡意黑客的攻擊方法,來評(píng)估計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的一種評(píng)估方法,包括對(duì)系統(tǒng)的任何弱點(diǎn)、技術(shù)缺陷或漏洞的主動(dòng)分析等。根據(jù)滲透測試人員對(duì)目標(biāo)系統(tǒng)的信息了解程度,可將滲透測試大致分為黑盒測試、白盒測試、灰盒測試。
PTES(PTES: Penetration Testing Execution Standard)滲透測試執(zhí)行標(biāo)準(zhǔn)是安全業(yè)界在滲透測試技術(shù)領(lǐng)域中正開發(fā)的一個(gè)新標(biāo)準(zhǔn),目標(biāo)是在對(duì)滲透測試進(jìn)行重新定義,新標(biāo)準(zhǔn)的核心理念是通過建立起進(jìn)行滲透測試所要求的基本準(zhǔn)則基線,來定義一次真正的滲透測試過程,并得到安全業(yè)界的廣泛認(rèn)同。
一次完整的滲透測試主要分為信息搜集、威脅建模、漏洞識(shí)別分析和滲透等階段,各階段主要任務(wù)如下:
通過搜索引擎、公共網(wǎng)站、DNS系統(tǒng)和whois數(shù)據(jù)庫等途徑,對(duì)目標(biāo)公司人員信息、網(wǎng)絡(luò)拓?fù)?、服?wù)器信息、賬號(hào)及代碼泄露等進(jìn)行公開資料收集和分類。對(duì)所收集的信息進(jìn)行歸納總結(jié),得出測試完整的信息藍(lán)圖,為后面的測試做準(zhǔn)備。
根據(jù)應(yīng)用的特征和元素,識(shí)別威脅目標(biāo);根據(jù)應(yīng)用的業(yè)務(wù)流程分解測試流程;評(píng)估網(wǎng)站應(yīng)用危險(xiǎn)級(jí)別、計(jì)劃滲透測試方案。
根據(jù)威脅建模結(jié)果,對(duì)測試目標(biāo)應(yīng)用的服務(wù)進(jìn)行測試以發(fā)現(xiàn)和定位可能存在的漏洞。同時(shí)根據(jù)漏洞利用技術(shù)的知識(shí)庫、公共信息和一些未公開的漏洞研究結(jié)果,歸納總結(jié)所有可能的攻擊途徑。對(duì)前面發(fā)現(xiàn)的所有可疑漏洞進(jìn)行手工檢查和研究并進(jìn)行利用,以嘗試對(duì)目標(biāo)系統(tǒng)進(jìn)行未授權(quán)訪問、修改,或者從目標(biāo)系統(tǒng)中獲取敏感信息,達(dá)到滲透測試的目的。
開放式Web應(yīng)用程序安全項(xiàng)目(OWASP,Open Web Application Security Project)組織所歸類的top10標(biāo)準(zhǔn)中,列舉了web應(yīng)用中最常見和危害最大的10類安全漏洞類型。該標(biāo)準(zhǔn)在2010、2013年先后發(fā)布了兩個(gè)版本,最新版本為2017年版,其中列舉的十大安全漏洞類型及與舊版對(duì)照如下圖1。
圖1 新、舊版十大安全漏洞類型
下面對(duì)近年危害較大的典型漏洞類型進(jìn)行說明:
數(shù)據(jù)庫查詢一般使用SQL語言。SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL注入就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。它可以通過在Web表單中輸入惡意SQL語句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語句。例如,某網(wǎng)站多處代碼均存在sql不規(guī)范查詢,可能導(dǎo)致注入攻擊,如圖2所示。
圖2 SQL不規(guī)范查詢導(dǎo)致的注入漏洞
對(duì)app中的SQL不規(guī)范查詢點(diǎn)進(jìn)行逐個(gè)注入嘗試,可獲取其中某應(yīng)用的數(shù)據(jù)庫內(nèi)容,如圖3所示。
圖3 獲取到的數(shù)據(jù)庫內(nèi)容
目錄遍歷是Http所存在的一個(gè)安全漏洞,它使得攻擊者能夠訪問受限制的目錄,并在服務(wù)器的根目錄以外執(zhí)行命令。這個(gè)漏洞可能存在于服務(wù)器軟件本身,也可能存在于應(yīng)用程序的代碼之中。
利用目錄遍歷漏洞,攻擊者能夠跳出服務(wù)器的預(yù)定目錄,從而訪問到文件系統(tǒng)的其他部分,譬如攻擊者就能夠看到一些受限制的文件,或者更危險(xiǎn)的,攻擊者能夠執(zhí)行一些造成整個(gè)系統(tǒng)崩潰的指令。如果目錄遍歷漏洞與文件下載相結(jié)合,可以導(dǎo)致任意文件下載漏洞,使得系統(tǒng)密碼、關(guān)鍵配置等文件被盜取。如果目錄遍歷漏洞與文件上傳相結(jié)合,可以導(dǎo)致任意文件上傳漏洞,使得攻擊者可上傳任意腳本,可能導(dǎo)致任意代碼執(zhí)行等。
例如,某app服務(wù)器中直接將用戶名稱拼接進(jìn)用戶文件夾路徑,且未對(duì)用戶名稱做合法性校驗(yàn)。我們可以發(fā)包手動(dòng)構(gòu)造一個(gè)名為../../../AAA的用戶,則通過路徑拼接與跳轉(zhuǎn)可以訪問本來無權(quán)限訪問的文件。以下圖4為手動(dòng)ajax發(fā)包內(nèi)容。
圖4 手動(dòng)ajax發(fā)包內(nèi)容
執(zhí)行完成后得到異常用戶名;訪問系統(tǒng)中規(guī)定的下載文件鏈Download.do?folderName=AAA&zipFileName=通過 zipFileName 進(jìn)行目錄跳轉(zhuǎn)從而實(shí)現(xiàn)任意文件讀。
zipFileName=../../../../../etc/passwd可以獲得記錄系統(tǒng)用戶密碼的關(guān)鍵文件/etc/passwd。
會(huì)話(Session)跟蹤是Web程序中常用的技術(shù),用來跟蹤用戶的整個(gè)會(huì)話。常用的會(huì)話跟蹤技術(shù)是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份,Session通過在服務(wù)器端記錄信息確定用戶身份。使用HTTP協(xié)議的數(shù)據(jù)不經(jīng)過任何加密就直接在網(wǎng)絡(luò)上傳播,有被截獲的可能。使用HTTP協(xié)議傳輸機(jī)密內(nèi)容是不合理的。如果不希望Cookie在HTTP等非安全協(xié)議中傳輸,可以設(shè)置Cookie的secure屬性為true。瀏覽器只會(huì)在HTTPS和SSL等安全協(xié)議中傳輸此類Cookie。如果Cookie中設(shè)置了HttpOnly屬性,那么通過js腳本將無法讀取到Cookie信息,這樣能有效防止XSS攻擊、竊取Cookie內(nèi)容,這樣就增加了Cookie的安全性。
例如,某APP與服務(wù)端通連過程中,Cookie未設(shè)置Httponly或secure選項(xiàng),如下圖5。
圖5 Cookie未設(shè)置Httponly導(dǎo)致的XSS攻擊
結(jié)合webview控件中對(duì)敏感字符過濾存在問題,導(dǎo)致XSS問題的出現(xiàn)。攻擊者可以獲取受害者cookie等敏感信息,達(dá)到仿冒登錄等目的。
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版。HTTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,依靠證書來驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。HTTPS可抵御重放攻擊,并可提供安全的通信信道加密。只要HTTPS部署正確并采用高強(qiáng)度加密算法,其加密信道在目前計(jì)算機(jī)處理能力下就無法被破解。
在實(shí)際部署中,https可能出現(xiàn)的常見問題包括:
(1)證書過期、或證書作用域不匹配等;
(2)HTTPS支持加密算法過弱(如DES/可出口算法等);
(3)站點(diǎn)同時(shí)支持HTTPS和HTTP兩個(gè)版本,導(dǎo)致HTTPS安全性形同虛設(shè)等;
(4)已公布的HTTPS算法實(shí)現(xiàn)問題的漏洞(如heartbleed等)。
例如,某APP應(yīng)用服務(wù)器支持的HTTPS版本為SSLv3/TLSv1,其中SSLv3版本過低,可能存在POODLE等攻擊,觸發(fā)“心臟滴血“漏洞導(dǎo)致信息泄露,如下圖6。
圖6 “心臟滴血”漏洞
且支持RC4加密方式,算法過弱,易被窮盡或彩虹表破解。
本文針對(duì)滲透測試中常見的安全問題,介紹了web站點(diǎn)可能面臨的潛在安全威脅,對(duì)各類常見和敏感的安全漏洞進(jìn)行了詳細(xì)的分析和實(shí)際的證明,講解了漏洞利用過程的原理和實(shí)例,并闡述了相關(guān)漏洞會(huì)造成的危害效果。
在未來的很長一段時(shí)間中,滲透測試都將是網(wǎng)站安全審計(jì)的主要形式之一。滲透測試執(zhí)行標(biāo)準(zhǔn)將會(huì)日趨完善, Web安全相關(guān)的最新研究成果也均會(huì)反映到滲透測試技術(shù)中,Web站點(diǎn)滲透測試相關(guān)技術(shù)的研究仍然大有可為。