巫 冬
(四川職業(yè)技術(shù)學(xué)院 計算機科學(xué)系,四川 遂寧 629000)
在web 應(yīng)用保護(hù)的實踐中,滲透測試的重要性不斷提升。作為一種模擬惡意黑客攻擊的評估方法,滲透測試可用于計算機網(wǎng)絡(luò)系統(tǒng)安全評估,例如系統(tǒng)漏洞、技術(shù)缺陷、弱電均可通過評估得以明確[1]。為保證滲透測試技術(shù)較好服務(wù)于web 應(yīng)用,正是本文圍繞基于web 安全的滲透測試技術(shù)開展具體研究的原因所在。
所謂滲透測試,指的是通過模擬攻擊者思維及方法對系統(tǒng)安全進(jìn)行的主動分析,通過分析即可明確系統(tǒng)可能存在的技術(shù)缺陷、可能被人利用的安全漏洞以及任何弱點。相較于常用的評估手段,基于web 安全的滲透測試需基于攻擊者角度展開,并靈活運用已有的漏洞發(fā)掘手法及相關(guān)安全漏洞。[2]
通過滲透測試,可全面檢測和評估系統(tǒng)安全,并在攻擊者找到漏洞前對其進(jìn)行修復(fù),由此可以避免信息外泄等安全事件的出現(xiàn)。在基于滲透測試的安全問題識別過程中,系統(tǒng)的安全狀況可得到明確展示,相關(guān)單位結(jié)合評估結(jié)果落實針對性的操作規(guī)劃,攻擊及誤用的威脅可得到較好控制。作為前瞻性的防御措施,滲透測試可實現(xiàn)更具意義的安全防護(hù),滿足系統(tǒng)的安全需要。
滲透測試可細(xì)分為白盒測試與黑盒測試,如圖1 所示。
圖1 滲透測試框圖
此外,滲透測試還可以基于目標(biāo)分為四類,即圍繞操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用程序、網(wǎng)絡(luò)設(shè)備分別開展的滲透測試,四類滲透測試各自具備一定特點。[3]
圖2 滲透測試手段框圖
圖3 基本流程圖
圖4 環(huán)節(jié)要點圖
在一次完整的滲透測試中,基本流程可概括為:“確定目標(biāo)→信息收集→漏洞探索→漏洞利用→內(nèi)網(wǎng)轉(zhuǎn)發(fā)→內(nèi)網(wǎng)滲透→痕跡清除→撰寫滲透測試報告”,具體流程要點如下。
在具體的信息收集中,可根據(jù)網(wǎng)站的URL 明確其相關(guān)信息,具體的信息收集可圍繞Google Hacking、主機掃描、整站分析、端口掃描、后臺目錄及敏感目錄、網(wǎng)站漏洞掃描、dns 域名信息收集、C 段和旁站掃描展開。以網(wǎng)站敏感目錄和文件的掃描為例,需掃描網(wǎng)站目錄結(jié)構(gòu),明確是否存在敏感文件泄漏,或是否可以遍歷目錄;而在網(wǎng)站漏洞掃描中,需合理應(yīng)用Nessus、AWVS 等掃描器,最終完成漏洞探測。
漏洞探測需基于足夠的信息展開,明確網(wǎng)站是否存在web 漏洞,圍繞SQL 注入、XSS 跨站腳本、CSRF跨站請求偽造、越權(quán)訪問漏洞、文件解析漏洞、XXE 漏洞等進(jìn)行針對性探測,并合理利用Nessus、AppScan、AWVS、Owasp-Zap 等工具[4]。以SQL 注入的判斷為例,SQL 注入的步驟可簡單概括為:“SQL 注入判斷→尋找注入點→判斷數(shù)據(jù)庫類型→實施注入并提升權(quán)限”,服務(wù)器變量、Cookie、用戶輸入等需要在SQL 注入攻擊過程中得到充分利用。以GET 注入漏洞為例,主要環(huán)節(jié)包括判斷整型參數(shù)、判斷字符串型參數(shù),針對性的判斷直接影響滲透測試的推進(jìn)[5]。
在探測到網(wǎng)站的漏洞后,便需要針對性利用漏洞,但基于單一的漏洞往往很難獲取網(wǎng)站webshell,因此滲透測試需結(jié)合多個漏洞以獲得webshell,SQL 注入、抓包改包工具、XSS 跨站腳本等工具需得到充分利用[6]。在獲得webshell 后,需進(jìn)行提權(quán),如SUID 提權(quán)(Linux),系統(tǒng)溢出漏洞提權(quán)、第三方軟件提權(quán)、數(shù)據(jù)庫提權(quán)。以數(shù)據(jù)庫提權(quán)為例,可利用MySQL 數(shù)據(jù)庫、SQL Server 等實現(xiàn)提權(quán)。
在獲取Webshell 后,如滲透測試還需要進(jìn)一步探測內(nèi)網(wǎng)主機信息,便需要開展內(nèi)網(wǎng)轉(zhuǎn)發(fā)。滲透測試過程不能直接與內(nèi)網(wǎng)主機進(jìn)行通信,因此需借助webshell 網(wǎng)站的服務(wù)器,如結(jié)合proxychains 代理鏈的reGeorg、EW、Ssocks,Netsh、LCX 也需要在其中發(fā)揮關(guān)鍵作用[7]。
在實現(xiàn)與內(nèi)網(wǎng)主機的通信后,即可進(jìn)一步開展內(nèi)網(wǎng)滲透,為探測在線主機,需進(jìn)行內(nèi)網(wǎng)主機的掃描,掃描可采用nmap,明確其開放的端口、使用的操作系統(tǒng)等信息。Windows 系統(tǒng)屬于內(nèi)網(wǎng)用戶使用最多的系統(tǒng),Windows7 則屬于其中代表,由此開展的內(nèi)網(wǎng)滲透可圍繞MS17_010 等漏洞展開,如存在這一漏洞,即可應(yīng)用Metasploit 完成內(nèi)網(wǎng)滲透,由此找到域控服務(wù)器獲取權(quán)限,即可最終實現(xiàn)所有用戶主機的登錄。在Metasploit 的具體應(yīng)用中,具體流程可概括為:“進(jìn)入框架→使用search 命令→查找漏洞→使用use 模塊→查看模塊信息→攻擊載荷設(shè)置→查看需配置參數(shù)→設(shè)置參數(shù)→攻擊→進(jìn)入后滲透階段”。
在完成滲透測試目標(biāo)后,必須清除痕跡,逐步掩蓋網(wǎng)絡(luò)痕跡和清除日志。在網(wǎng)絡(luò)痕跡的掩蓋過程中,可使用代理或多層代理來實現(xiàn)真實IP 地址掩蓋,也可以運用ProxyChains 等代理鏈工具。在日志的清除中,不同系統(tǒng)存在不同的日志清除方式,Linux 系統(tǒng)需刪除“/var/log”下文件,Windows 系統(tǒng)則需要刪除Log 文件或安裝Clearlogs 工具進(jìn)行清理。
在滲透測試完成后,測試人員需結(jié)合測試成果進(jìn)行滲透測試報告的撰寫,明確系統(tǒng)存在的漏洞和修補漏洞的方法,客戶根據(jù)滲透測試報告針對性修復(fù)漏洞,web 安全由此得到較好保障。
綜上所述,基于web 安全的滲透測試技術(shù)具備較高實用價值。在此基礎(chǔ)上,本文涉及的基本流程、各環(huán)節(jié)要點、信息收集、漏洞探索、漏洞利用、內(nèi)網(wǎng)轉(zhuǎn)發(fā)、內(nèi)網(wǎng)滲透、痕跡清除、撰寫滲透測試報告等內(nèi)容,提供了可行性較高的滲透測試技術(shù)運用路徑。為更好保證web 安全,各類新型技術(shù)的應(yīng)用必須得到重點關(guān)注,如近年來廣受業(yè)界關(guān)注的網(wǎng)絡(luò)安全漏洞實時偵測技術(shù)。