Google 於今年 (2010 年) 3 月中推出了一個自行開發的 Web 應用程式安全掃描工具,稱之為 Skipfish。Skipfish 與其他 Google 的工具有所不同,並不是直接透過瀏覽器加以操作,而是必須自行下載並編譯才可以執行。為了效能的考量,Skipfish 以 C 語言開發,同時支援 Linux、FreeBSD、MacOS X 與 Windows (必須安裝 cygwin) 的環境。
這類工具中比較著名的包含 open source (GPL) 的工具 Nikto,此外也有許多付費的工具可供選擇,而 Skipfish 則提供了另一個免費的選擇。不過根據 Skipfish 的說明,Skipfish 與其他工具並不是相互重疊的選項,而是補足其他工具不足之處,所以對於其他工具已經實現的功能在 Skipfish 中是缺席的。舉例來說,Skipfish 並沒有採用已知弱點資料庫的方式來找出一些已公布的安全漏洞。
如果你熟悉 *nix 下的編譯過程,編譯 Skipfish 並不會是一件困難的工作,唯一需要特別注意的是所需的函式庫是否已經完整安裝,其中尤其是 libidn 這個函式庫 (在 Fedora 的環境下,所需安裝的 RPM 套件名稱為 libidn-devel-*)。編譯成功之後會出現一個名為 skipfish 的執行檔,但是在開始使用 Skipfish 進行掃描前,還需要額外進行一個動作,那就是從 dictionaries 目錄下的四個 wl 檔案中挑選一個並將它複製到與 skipfish 執行檔同一層的目錄,檔名則為 skipfish.wl。準備好之後,就可以透過
./skipfish –o output_dir url
這個指令開始進行掃描。其中 output_dir 表示放置掃描結果的目錄名稱,而 url 則是掃描的起始網頁。如果有需要,skipfish 命令列也可支援輸入多個 url,如此一來 skipfish 就會一一加以掃描。skipfish 支援相當多的命令列參數,多是用來控制掃描的行為,詳細的說明就請有需要的讀者們自行參考了。
在 Skipfish 的線上說明文件中明確列出 Skipfish 所能檢查出的安全問題,在這裡我就不一一贅述了。使用 Skipfish 進行掃描時,(在預設情形下) 必須花費相當多的時間才能完成,而且在解讀報告時需要有相當的功力才有辦法知道問題所在。因為雖然 Skipfish 會列出問題點完整的 HTTP 請求與回應,但是對於問題本身並沒有進一步的解釋,同時對於建議的解決方案也是付之厥如,因此一般使用者來說在使用上確實是相當的不便。
我以 skipfish 的預設參數掃瞄一個僅安裝 wordpress 這個套件的網站,總共花了數個多小時才掃描完畢。這是在本機進行掃描的情況下,如果透過網路進行遠端的掃描,時間將會更久。掃描結果會以網頁的形式儲存於執行時所指定的目錄,因此不需要特定的工具就可以研讀結果。
頁面一開始顯示摘要資訊,包含掃描所花費的時間以及各類問題的總數等。
點開可以看到各個問題的詳細資訊,包含網址、 HTTP 請求與回應。
以這樣的速度,在大部分的情況下是不能順利運作的。好在 Skipfish 提供了許多參數可以控制掃描的行為,所以這次我在網站中加入一個具有 XSS (Cross-site Scripting) 漏洞的 PHP 程式碼,並利用 –LVJ 的參數進行掃描。雖然掃描的時間有所減少,但是仍舊需要一段不算短的時間才能完成。因此我改用 dictionaries/extensions-only.wl 當作 skipfish.wl,再次進行掃描時僅花費不到一分鐘就可以完成。
利用 –LVJ 的參數,並採用 dictionaries/extensions-only.wl,可以將掃描時間縮短到一分鐘之內。
Skipfish 目前在使用上並不是那麼友善,不過這似乎是這類工具很難避免的問題。有興趣的讀者可以花點時間研究看看,不過切記千萬不要對沒有取得授權的網站進行掃描,以免衍生法律上的問題。此外,即使是用 Skipfish 來掃描已經獲得授權的網站時也必須多加小心,因為在預設的情況下 Skipfish 會對網站做大量的存取,可能會因此造成網站因為負擔過重而影響原有的服務。
相關連結:
沒有留言:
張貼留言