◆李維峰
Web應用程序滲透測試淺析
◆李維峰
(中國飛行試驗研究院 陜西 710089)
滲透測試是在Web應用程序中查找漏洞的最佳方法,這也是大多數Web應用程序使用最廣泛的安全測試策略。所謂Web應用程序滲透測試就是通過模擬從內部或外部發起的攻擊,嘗試訪問系統中的敏感數據。滲透測試使用戶可以確定整個Web應用程序及其各個組件(包括源代碼,數據庫和后端網絡)的任何安全漏洞,這可以幫助開發人員確定已確定的漏洞和威脅的優先級,并提出緩解策略。
滲透測試;Web應用程序;漏洞
時至今日我們所做的幾乎所有事情都可以通過互聯網完成。從購物到銀行業務再到日常交易,大多數都可以數字方式完成。并且我們只通過幾個Web應用程序就可以完成所有這些在線活動。Web應用程序的普及引入了另一種攻擊媒介,惡意第三方可以利用這些攻擊手段來謀取個人利益。由于Web應用程序通常會存儲或發送敏感數據,因此始終確保這些應用程序(尤其是那些公開暴露于萬維網的應用程序)的安全至關重要。簡而言之,滲透測試是一種預防性控制措施,可讓您分析系統現有安全層的整體狀態。
以下是對Web應用程序進行的滲透測試的共同目標:
(1)識別未知漏洞;
(2)檢查現有安全策略的有效性;
(3)測試公開的組件,包括防火墻,路由器和DNS;
(4)確定最容易受到攻擊的路線;
(5)尋找可能導致數據泄露的漏洞。
如果考慮到當前的互聯網使用情況,您會發現移動互聯網的使用量急劇增加,這意味著移動攻擊的可能性直接增加。當用戶使用移動設備訪問網站或應用程序時,他們更容易受到攻擊。因此,滲透測試在軟件開發生命周期中起著至關重要的作用,有助于構建用戶可以使用的安全系統,避免黑客攻擊或數據泄露。
一般可以通過兩種方式對Web應用程序進行滲透測試:內部滲透測試和外部滲透測試[1]。讓我們來看看如何設計和實施這兩種攻擊:
顧名思義,內部滲透測試是通過局域網在組織內部實施的滲透測試,針對在內部網絡上托管的Web應用程序。這可以幫助組織識別防火墻以內可能存在的問題。因為,常常會出現一種最嚴重的誤解,認為攻擊只會發生在外部,所以開發人員經常忽略或不重視內部的滲透測試。下面列舉了一些可能發生內部攻擊的情況:
(1)對組織心懷不滿的員工,已辭職但仍可以訪問內部安全策略和密碼的員工,合同乙方或其他的惡意員工攻擊;
(2)社會工程學攻擊;
(3)網絡釣魚攻擊;
(4)使用用戶權限的攻擊。
滲透測試就是為了嘗試在沒有有效憑據的情況下訪問環境并確定可能的攻擊途徑。
與內部滲透測試不同,外部滲透測試著重于從組織外部發起攻擊,以測試Internet上托管的Web應用程序。滲透測試人員沒有關于組織所實現的內部系統安全的信息。只需為他們提供目標系統的IP地址即可模擬外部攻擊。由于沒有提供其他信息,測試人員需要搜索公共網頁以獲取有關目標主機的更多信息,對其進行滲透和破壞。外部滲透測試包括測試組織的防火墻,服務器和IDS。
Web應用程序滲透測試著重于環境和攻擊過程,而不是應用程序本身。這涉及收集有關目標Web應用程序的信息,弄清楚它所在網絡的情況,并猜測可能的注入點。以下是滲透測試所涉及的步驟:
滲透測試的第一步是偵察或信息收集階段。此步驟為測試人員提供了可用于識別和利用Web應用程序中的漏洞的信息。被動偵察意味著收集可在Internet上輕松獲得的信息,而無須直接與目標系統聯系。這主要是使用Google完成的,從子域,鏈接,以前的版本等開始。而主動偵察意味著直接探測目標系統以獲得輸出。以下是用于主動偵察的方法的一些示例:
(1)Nmap指紋:您可以使用Nmap網絡掃描儀來獲取有關Web應用程序的腳本語言,服務器操作系統,服務器軟件和版本,打開的端口以及當前正在運行的服務的信息。
(2)Shodan網絡掃描儀:該工具可以幫助您獲取有關Web應用的公共可用其他信息,包括地理位置,使用的服務器軟件,打開的端口號等。
(3)DNS正反向查詢:此方法使您可以將最近發現的子域與其各自的IP地址相關聯。您也可以使用Burp Suite自動執行此過程。
(4)DNS區域轉移:您可以使用nslookup命令來查找正在使用的DNS服務器。另一種選擇是使用DNS服務器標識網站,然后使用dig命令嘗試進行DNS區域傳輸。
(5)識別相關的外部站點:信息收集階段的這一部分非常重要,因為外部網站和目標網站之間會產生流量。使用Burp Suite可以輕松地完成此步驟。
(6)分析HEAD和OPTION請求:從HEAD和OPTIONS HTTP請求生成的響應顯示了Web服務器軟件及其版本,以及其他更有價值的數據。您可以在訪問目標網站時使用Burp Suite的攔截功能來獲取此信息。
(7)錯誤頁面中的數據:錯誤頁面提供了比您預期更多的信息。通過修改目標網站的URL并強制執行404 Not Found錯誤,您將能夠知道服務器和網站運行所在的版本。
(8)檢查源代碼:檢查源代碼可以幫助您找到有用的信息,您可以使用這些信息來查明某些漏洞。它可以幫助您確定應用運行的環境以及其他相關信息。
(9)記錄所有數據:在獲得所有這些信息之后,組織和記錄您的發現很重要,您以后可以將其用作進一步研究或發現要利用的漏洞的基準。
這一步是實施真正的攻擊。在此階段,您將根據偵察階段收集的信息實施攻擊。您可以使用多種工具來進行攻擊,而這正是數據收集起著重要作用的地方。您收集的信息將幫助您根據之前進行的研究來縮小所需工具的范圍。
讓我們看一下當今業界用于Web應用程序的頂級滲透工具:
(1)Nmap
Nmap或Network Mapper不僅僅是一種掃描和偵察工具。它用于網絡發現和安全審核。除了在目標網站上提供基本信息外,它還包括腳本模塊,該模塊可用于發現漏洞和后門檢測以及利用的執行。
(2)Wireshark
Wireshark是目前最流行的網絡協議分析器之一,它可以促進對協議的深入檢查,以及實時業務捕獲和捕獲文件的脫機分析??梢允褂肵ML,PostScript,CSV或純文本格式導出數據,以進行文檔編輯和進一步分析。
(3)Metasploit
該滲透測試工具實際上是一個框架,而不是特定的應用程序。您可以使用它來創建用于特定任務的自定義工具。您可以使用Metasploit進行以下操作:選擇并配置目標攻擊、選擇并配置要使用的有效負載、選擇并配置編碼架構、執行漏洞利用代碼。
(4)Nessus
此漏洞掃描程序可幫助測試人員識別漏洞,配置問題,甚至可以發現Web應用程序中是否存在惡意軟件。但是,該工具并非設計用于執行漏洞利用,而是在進行偵察時提供了很大的幫助。
(5)Burp Suite
我們之前提到過Burp Suite兩次,這是因為該工具是用于測試Web應用程序安全性的多平臺平臺。它具有可用于測試過程的每個階段的幾種工具,包括偵聽代理,可感知應用程序的蜘蛛,高級Web應用程序掃描器,入侵者工具,中繼器工具和音序器工具。
在數據收集和執行攻擊之后,下一步是編寫Web應用程序滲透測試報告。為您的報告創建簡潔的結構,并確保所有結果都得到數據的支持。堅持使用哪種方法,并詳細描述該過程。除了寫下成功的漏洞利用程序之外,您還需要根據它們的關鍵程度對其進行分類,以幫助開發人員優先專注于處理更嚴重的漏洞利用程序。
Web應用程序為終端用戶提供了很多便利和價值,但這些便利是要付出一定代價的。大多數系統都公開暴露在互聯網上,那些愿意進行一些研究的人可以隨時使用這些數據。由于使用率的增長和技術的發展,Web應用程序更容易受到黑客攻擊。因此,對于處理敏感信息的Web應用程序,應該進行滲透測試。
[1]Ihor Feoktistov.guide to web application penetration testing[EB/OL].https://relevant.software/blog/penetration-testing-for-web-applications/,2018-12-7.