■ 上海 陳峻
編者按: 對網(wǎng)絡(luò)安全的防護工作需要系統(tǒng)有序進行,否則將會被攻擊者有機可乘,本文是筆者單位針對自身情況建立的系統(tǒng)性的網(wǎng)站安全防護,實現(xiàn)了標準化和流程化工作。
長期以來,在對各類目標網(wǎng)站系統(tǒng)進行日常滲透測試的過程中,筆者單位安全部門的各位同事往往處于守口相傳、各自為政的狀態(tài)。因此大家產(chǎn)生和提交的報告,時常也是參差不齊、因人而異。
近期,我們在內(nèi)部對此進行了“專項整治”。大家在一起經(jīng)過集思廣益和反復(fù)討論,整理出了一整套關(guān)鍵性檢測要點與方法的集合。
作為階段性交付成果,這是一張既參考了業(yè)界常用實踐工具,又融合了部門過往經(jīng)驗總結(jié)的“體檢項目表”。如圖1所示,它一份較為全面的、且具備標準化和流程化的遞進式清單。下面我們根據(jù)此表來進行詳細解讀。
1.通過使用Wget或一些在線工具對目標網(wǎng)站上的robots.txt文件進行檢索和分析,重點考察以下內(nèi)容。(1)Disallow:是否羅列了不允許外部用戶登錄的頁面。
(2)Allow:是否僅允許sitemap.xml。
(3)Crawl-Delay:是 否明確了允許訪問目錄數(shù)量,包括子目錄。
2.通過請求非法/無效的頁面,審查后臺應(yīng)用、組件或數(shù)據(jù)庫所反饋的錯誤代碼,以及所包含的軟件名稱、或版本之類的詳細信息。
3.使用代碼審查工具,查找頁面上那些為了存儲信息而隱藏的字段、被注釋掉但尚存的信息、以及默認標識性的內(nèi)容。
4.使 用Viewdns.info和Whois之類工具,對目標網(wǎng)站進行反向 IP、NS、MX、DNS的查詢,針對DNS域的傳送(DNS zone Transfer)、以及基于Web的DNS進行搜索,檢查是否能夠獲取網(wǎng)站相關(guān)信息。
5.運用指紋之類的工具對目標網(wǎng)站進行各種掃描。例如:
(1)使用 Nmap(Zenmap)來判斷后臺在線的活躍主機,推測相應(yīng)的操作系統(tǒng)與網(wǎng)絡(luò)服務(wù)的種類。
(2)使用Amap來偵測對應(yīng)的應(yīng)用類型。
(3)使用Nessus來掃描和分析系統(tǒng)上敞開的端口漏洞。
6.掃描外部防火墻上是否開啟了數(shù)據(jù)庫服務(wù)端口。如已開啟,則可利用經(jīng)典的SQL查詢分析器(如Isqlw.exe)和數(shù)據(jù)庫命令行工具(如 Osql.exe),同數(shù)據(jù)庫的偵聽端口(TNS)建立連接,進而發(fā)送控制命令。
圖1 網(wǎng)站安全的“體檢項目表”
1.通過自查的方式,確認是否存在曾用于測試用途、備份目的、以及過時無用的文件,以免泄露網(wǎng)站的任何特有信息。
2.鑒于JSP和ASP之類的文件擴展名,不但能夠被識別出目標應(yīng)用程序所使用的技術(shù),而且可能暴露與該應(yīng)用相連接的其他系統(tǒng)特征。因此,可以使用curl和Wget等工具,來進行有針對性的檢測。
3.檢查是否已對目標網(wǎng)站的管理后臺(Console)、以及管理接口進行了安全加固。
1.使 用John the Ripper(針對 Unix/Linux)、L0phtcrack(針對 Windows)和Hydra之類的暴力破解工具、以及其他“撞庫”工具,對賬號與密碼進行如下測試:
(1)枚舉與遍歷各種賬號,特別是那些常見的默認與測試性賬號。
(2)檢查各類賬號在系統(tǒng)及數(shù)據(jù)庫中的唯一性。
(3)考察用戶界面,是否存在默認顯示上一次登錄賬號信息的漏洞。
(4)測試對各種(特別是已禁用)賬號的恢復(fù)功能。
(5)檢查密碼的設(shè)定規(guī)則與復(fù)雜程度。
(6)核驗“忘記密碼”和“記住密碼”兩種不同的流程與機制。
(7)測試是否有密碼輸入出錯次數(shù)的限制,以及能否以鎖定的方式抵御密碼猜測的攻擊。
1.使用Kali Linux之類的集成工具,測試目標網(wǎng)站如下的基本認證與授權(quán)服務(wù):
(1)是否配置并啟用了包括驗證碼(Captcha)、外發(fā)短信等服務(wù)在內(nèi)的多因素認證(MFA)方式。
(2)是否啟用了SSL和TLS之類的安全信道協(xié)議,能否對傳輸信息以及證書提供加密保護。
(3)檢查證書的分發(fā)與交換過程是否安全。
(4)是否存在認證機制被繞過的可能,以及在認證失效之后是否會出現(xiàn)安全防范的缺失(即 :fail-open,應(yīng)滿足fail-secure的邏輯)。
(5)檢查認證交互的邏輯與功能,確保用戶不能采用特權(quán)提升的方式修改自己在網(wǎng)站內(nèi)部的特權(quán)與角色。
在用戶與目標網(wǎng)站進行相互驗證的過程中,雙方會用到令牌(token)、并建立會話(session),因此有必要通過 JWT、SessionUtil、以 及Cookie Editor等工具進行如下方面的檢查:
(1)通過編寫專有程序,對令牌的可預(yù)測性、傳輸中的安全性、以及日志中可能留下的泄密信息進行獲取與檢查。
(2)在用戶關(guān)閉瀏覽器、更新密碼、或出現(xiàn)違規(guī)事件的情況下,分別對會話ID的產(chǎn)生、是否有哈希的執(zhí)行、保持時長的設(shè)定、存儲的環(huán)境、以及終止的條件進行檢驗。
(3)對cookie實 施 反向工程,進而嘗試通過篡改cookie的屬性來劫持目標會話。
1.針對常見的開源框架與平臺,進行如下滲透測試:
(1)使 用 struts-scan來掃描Struts2。
(2)檢查Spring MVC的過濾器與攔截器的相關(guān)代碼。
(3)對 ThinkPHP進 行g(shù)etshell等相關(guān)測試。
(4)利用WPScan來掃描Wordpress的潛在漏洞。
2.針對不同的中間件與應(yīng)用,進行如下核查:
(1)IIS:WebDAV是否已禁用,或是否已配有權(quán)限驗證。
(2)WebLogic:是否刪除了遠程部署文件、并限制了登錄IP地址。
(3)Jboss:是否存在反序列化漏洞,是否關(guān)閉了控制管理頁面、以及Servlet調(diào)用。
(4)Tomcat:是否刪除了遠程部署頁面,以及關(guān)閉了控制管理臺。
3.使用AppScan和AWVS之類的工具,對目標網(wǎng)站上所有與用戶交互有關(guān)的功能,包括:留言、登入、下單、退出、退貨、以及付款等操作,進行真實業(yè)務(wù)邏輯的極端測試。
4.使 用TamperIE和Webscarab,以代理的方式截獲并修改Web請求、調(diào)試會話、模擬產(chǎn)生注入攻擊,以確定目標應(yīng)用的切入點。
1.運用測試程序,通過操縱產(chǎn)生特殊的應(yīng)用輸入?yún)?shù),觀察目標系統(tǒng)在各種惡意攻擊下的狀態(tài),并檢驗后臺應(yīng)用的輸出與后續(xù)行為。如果應(yīng)用程序?qū)斎霐?shù)據(jù)的過濾或驗證不到位,那么我們就能發(fā)現(xiàn)并判定網(wǎng)站自身存在的各種漏洞。下面是需要模擬和測試的攻擊類型:
(1)使用OWASP ZAP和Burpsuite Proxy,通過截斷代理和主動掃描,來查找目標應(yīng)用的安全漏洞。
(2)使用WFuzz之類的工具,通過隨機產(chǎn)生的數(shù)據(jù),進行模糊輸入測試(Fuzz testing)。
(3)使用Sqlmap之類的工具,通過創(chuàng)建和拼裝SQL語句,利用數(shù)據(jù)庫管理系統(tǒng)(DBMS)在驗證上的脆弱性,進行SQL注入測試。
(4)同理,檢查后臺應(yīng)用對于LDAP查詢語句的過濾、以及正則替換等LDAP類注入攻擊的防御能力。
(5)運用DVWA等工具,通過在正常輸入中夾雜調(diào)用命令、函數(shù)或代碼,以模擬產(chǎn)生命令注入(Command injection)、路 徑 遍 歷(Path traversal)、文件包含(File Inclusion)、以 及郵件頭注入(SMTP header injection)攻擊。
(6)通過模擬緩存污染和密碼重置的攻擊方式,來對HTTP host頭進行漏洞測試。
(7)使用Metasploit之類的框架(MSF),對目標網(wǎng)站所用到的第三方應(yīng)用、以及操作系統(tǒng)上那些未及時更新補丁的漏洞,開展以獲取Webshell為目的的攻擊。
(8)通過發(fā)送變形的SOAP消息請求,以插入可執(zhí)行代碼的方式篡改后臺數(shù)據(jù)庫,從而測試XML注入。
(9)使 用 Beef-XSS和XSSer等工具,來發(fā)起對目標網(wǎng)站構(gòu)造的重定向式跨站腳本攻擊(XSS)。
(10)使用BurpSuite生成某個CSRF類型的PoC,或直接利用CSRFTester抓取瀏覽器中訪問過的目標網(wǎng)站鏈接、及相關(guān)的表單信息。通過修改,進而提交偽造的客戶端請求。倘若網(wǎng)站服務(wù)器成功接受,則說明存在著CSRF漏洞。
(11)試著對目標網(wǎng)站發(fā)送經(jīng)過特殊構(gòu)造的、符合XPath語法的查詢請求,以獲取目標網(wǎng)站所使用的XML文檔數(shù)據(jù)及結(jié)構(gòu),進而繞過認證機制實現(xiàn)提權(quán)。
(12)利用動態(tài)和靜態(tài)應(yīng)用安全測試(DAST/SAST)工具,查找并定位目標網(wǎng)站潛在的緩沖區(qū)溢出(buffer overflow),進而定位泄露敏感與控制信息的風(fēng)險。
上面和大家逐條探究的這張“體檢項目表”。雖談不上疏而不漏毫不留死角,且并未用到那些高深莫測的滲透技巧,但是它的確能夠在一定程度上,消除我們過去全憑單打獨斗和個人經(jīng)驗主義的窘境。如今,整個部門都能夠針對各種不同類型的目標網(wǎng)站,有條不紊地開展系統(tǒng)性、且較為精準的滲透測試了。