OWASP top 10的安全威脅中的CrossSite Scripting(跨站腳本攻擊),允許攻擊者通過瀏覽器往網站注入惡意腳本。這種漏洞經常出現在web應用中需要用戶輸入的地方,如果網站有XSS漏 洞,攻擊者就可以通過這種漏洞向瀏覽網站的用戶發送惡意腳本,同時也可以利用該漏洞偷取sessionid,用來劫持用戶帳戶的會話。
所以網站開發者必須針對這種攻擊進行適當的測試,必須過濾網站的每個輸入及輸出。為了使漏洞檢測更容易,也可以使用各種掃描器,有很多自動或手動工 具可以幫我們查找這些漏洞。X5S就是一款用來測試XSS漏洞的工具,它是Fiddler的一個插件,是一個WebDebugging Proxy。
X5S是專門幫助滲透測試人員查找網站的XSS漏洞的。這里需要先說明的是,該工具不是自動化工具,只是列出哪里可能存在XSS漏洞,所以要使用該 工具,讀者需要了解XSS,知道什么樣的編碼可能導致產生XSS漏洞。該工具只針對有經驗的滲透測試人員,因為他們知道如何利用編碼漏洞插入惡意腳本。
在本文中,我們可以看到如何使用包含x5s插件的Fiddler,以及如何找到網站中的漏洞。
Fiddler:Fiddler是一款流行的Webdebugging proxy工具,可以監視與記錄用戶PC與網站之間的流量,即可以通過log文件審查流量,也可以調試基於Java和.NET的HTTP相關的應用程序。當然,Fiddler對所有用戶免費。
Fiddler也支持與瀏覽器相結合,使其更易使用。支持的瀏覽器包括IE、GoogleChrome、Safari、MozillaFirefox、Opera等。
圖1Fiddler截圖顯示了左側的流量日志
讀者可以從這里下載Fiddler。在Fiddler中,可以找到許多標簽,用來分析流量與包的行為。本文不涉及如何分析流量的知識,主要是演示得用X5S挖掘XSS漏洞。
X5S:X5S是Fiddler中的一個插件,使用fiddler的包記錄技術,並通過在每個請求中添加一條序文(Preamble),來找出包中的哪些請求可能存在XSS漏洞。但用戶需要了解XSS和encoding編碼知識,因為所有和XSS相關的工作都要手動完成。 基本上X5S就是去檢測需要用戶輸入的地方有沒有被正確編碼。有時Unicode字符轉換可能bypass一些安全過濾,所以也會檢測這種字符轉換。
該插件會查看URL中的請求和響應,之后嘗試注入XSSpayloads來確定是否存在XSS漏洞。如果讀者知道如何運行某處的代碼,就會發現挖掘XSS漏洞還是挺容易的。
另外,讀者需要知道的是,該工具基本上只能檢測反射型XSS問題,不能檢測基於DOM的XSS漏洞,也不能檢測存儲型XSS,因為這種漏洞的數據不會在請求和響應的參數中出現。要想檢測這兩種漏洞,讀者需要用額外的工具。
要想使用X5S挖掘Web應用程序中的XSS漏洞,可以從以下連接下載X5S並安裝,安裝之前記得確保已經安裝了Fiddler:
安裝完后,啟動Fiddler,就可以看到X5S標簽了,如下圖所示:
圖2Fiddler中的X5S標簽
可以看到X5S標簽已經添加到Fiddler中了。如果讀者在自己的Fiddler中看不到Watcher標簽,不必擔心,watcher只是fiddler的另一個插件,用來進行XSS測試。本文只對X5S感興趣,只討論該插件。
配置
在開始挖掘XSS漏洞之前,我們需要對X5S進行適當配置。首先是進入Fiddler,打開X5S標簽,選擇頂部的enable復選框,之后在 Preamble文本框輸入XSS。這里可以輸入任意單詞,但要確保不是常見的詞,X5S會用該選項注入請求的每個參數中。接下來選擇 “EnableDomain Name Targeting”前面的復選框,並添加域名,這里可以添加所有想要測試的域名,而且可以添加多個,完全取決於用戶。
另外別忘了選中“Request”和“Responses”前面的復選框,並在“AutoInjection Options”下選中所有復選框。
圖3X5s配置
下面進行測試用例配置
測試用例配置
X5S的標簽下面還有三個子標簽,單擊第二個“TestCase Configuration”。
在該標簽下可以配置X5S的測試用例,即探測字符,包含三種類型:
可轉換測試用例:探測字符可能是大寫的、小寫的、以及轉換為其它形式。 傳統測試用例: XSS注入使用的字符。這些注入字符包括”、’、<和>。讀者應該已經知道,如果不經過適當過濾,這些字符可能是引起XSS漏洞的主要問題所在。 超長UTF-8測試用例:這種測試用例會注入non-shortestUTF-8編碼或傳統測試用例,例如ASCII字符<的UTF-8格式為0x3C。
選擇想要測試的字符。這里可以選擇任意多個,或直接全選。之后就可以開始XSS攻擊,挖掘注入點了。
圖4X5S測試用例配置
為了演示效果,這里我添加了一個包含XSS漏洞的域名。但為了安全起見,本文把網站的域名隱藏了。
下面開始一個頁面一個頁面地測試所有forms,並在Result標簽查看掃描結果。如果顯示搜索結果,說明網站可能存在XSS漏洞。單擊其中的任意一條掃描結果,可以在下面的文本區域查看細節描述。
圖5X5S fiddler中的XSS掃描結果
選擇某條結果,下面的文本區域就會顯示細節描述,如加上XSS字符后是如何發現preamble的。查看細節描述並分析,描述中的紅字部分,顯示了頁面中preamble的信息。
下一步要做的就是查找疑似包含漏洞的URL。Fiddler左側記錄了之前訪問過的URL,我們要做的就是找出包含漏洞的URL請求。查看記錄,找到用灰色高亮的請求地址。
如下圖所示,為了安全起見,這里把URL信息隱藏了。
圖6包含可疑preamble信息的URL請求
可以看到紅框內的URL用亮灰色高亮顯示了。右擊該條記錄,選擇copy下的“JustURL”,拷貝該請求URL。
圖7 拷貝請求URL
打開瀏覽器,將該地址拷貝到瀏覽器,並用自己的XSS payloads替換地址中的preamble字符。讀者可以使用以下XSS payloads:
<script>alert(1)</script> “><script>alert(1)</script> </style><script>alert(1)</script> “)</script><script>alert(1)</script> “><img src=”a” onerror=”prompt”>
這種情況下有很多XSS payloads可用,上文中的這些payloads如果顯示一個Javascript警告框並顯示1,就說明執行成功了。因為在payloads中插入 了alert(1),彈出了對話框就表示網站執行了我們的自定義腳本,也就是說該站存在XSS漏洞。
圖8 用Fiddler與X5S找到XSS漏洞
下面測試是否能在alert對話框中顯示cookies,只需要將alert(1)替換成alert(document.cookie)即可。
如果在alert對話框中顯示了cookies,那說明這是一個比較嚴重的漏洞,攻擊者可以利用該漏洞劫持用戶的sessions以劫持用戶帳戶,可能對用戶或網站造成損害。
這是利用X5S查找網站反射型XSS漏洞的最簡單演示,顯示了X5S對滲透測試人員的重要性。
為什么滲透測試人員不使用該工具
許多滲透測試人員不推薦該工具,唯一的原因是當今已經有很多集成了各種掃描技術的掃描工具,這些掃描器可以爬行(crawl)網站的所有URL並列出發現的所有漏洞,大部分掃描器都很棒。而該工具只能檢測反射型XSS漏洞。
同時該工具花費的時間也比較長,因為我們必須手動檢測每個URL,有可能錯過某個包含XSS漏洞的頁面,就沒辦法對這個頁面進行檢測了,因此也有可能在浪費了大量時間后因軟件的局限性沒有發現漏洞。
但是我們發現仍有許多滲透測試人員經常使用這個工具,這完全取決於測試人員自己的選擇。不過我仍建議讀者試試這個工具,如果用得順手,可以繼續用該 工具查找WEB應用程序中的XSS漏洞。作為初學者,讀者可以使用該工具提高關於XSS payloads的相關知識,有時我們可能要花費數小時才能exploit某個可疑的漏洞。
總結:
X5S是一個很不錯的Fiddler插件,可以用作查找XSS漏洞的滲透測試工具。不過只有理解了XSS的基本原理,以及存在多少種方法注入 Javascript代碼之后再使用該工具。如果用戶不擅長手工XSS測試,該工具無疑只是個雞肋。但對專業XSS測試人員,使用該工具可能是查找web 應用的XSS漏洞的最快方式。通過本文的示例可知,該工具找到了所有可能存在XSS漏洞的可疑熱點(hotspots),用戶只需要測試這些熱點,並確認 哪里可以執行外部腳本,如果可以注入就表示成功了。否則就繼續測試,直到測試完所有的XSS payloads。只有有經驗的滲透測試人員能確認某個可疑網站是否存在XSS漏洞,因為他們能更好地理解web應用的輸出和注入的payloads的行 為反饋。
我們已經知道使用這個工具之前需要有相當的經驗,同時也需要很多時間去打開每個URL檢測其中的所有forms,來檢測XSS漏洞是否存在,是一個 很費時間的過程。而這些東西在自動漏洞掃描器中都是自動完成了,使該工具只有少數研究者和測試人員使用,但其仍可作為一個不錯的開端。
原文地址:http://resources.infosecinstitute.com/using-x5s-with-fiddler-to-find-xss-vulnerabilities/