首頁 | 安全文章 | 安全工具 | Exploits | 本站原創 | 關于我們 | 網站地圖 | 安全論壇
  當前位置:主頁>安全文章>文章資料>網絡安全>文章內容
檢查 Web 應用安全的幾款開源免費工具
來源:vfocus.net 作者:lzy.je 發布時間:2009-11-06  

文/lzy.je

這幾天應工作的需要,一直在調查、研究一些開源、免費的 Web 應用安全缺陷檢測軟件。經過試用,感覺這方面的工具很多,但和 Rational AppScan 這種商用軟件相比都不夠強大、全面(當然,可比性也不大),各個工具都覆蓋了一些方面的問題,但又都不全面,可能這也就是開源社區“產品”的特點和優勢吧,呵呵。在這里把覺得比較好的三款工具實踐過程在這里做個簡單記錄、分享。

這里要說的三個工具分別是:

Google Ratproxy (1.54 beta,Apache 2.0 協議)
Nikto (2.03,GPL 協議)
Wapiti (2.0.0-beta,GPL 協議)

拿到的版本都是最新的,不過那也都是 2008 下半年 release 的了。呵呵,既開源又免費,能理解。
Google Ratproxy

Google Ratproxy 是 Google 信息安全技術團隊所研發的程序安全缺陷檢測工具,開發者是 MIchal Zalewski ,于 2008 年 Google 將其列入 code.google.com,之前它一直在內部使用。Ratproxy 能夠分析諸如跨站腳本攻擊、檢測偽裝的跨站請求,以及其它潛在的信息泄露安全缺陷等。它是 c 語言開發的,支持的平臺有 Windows(cygwin)、Mac OS/X、*nux 系統。支持的協議有 HTTP/HTTPS 1.0/1.1。比較亮點的是,它允許配置成 No risk of disruptions 模式,即不會向服務器提交高攻擊性的測試請求,這適用于生產系統環境。Ratproxy 實際上是一個代理程序,在測試過程中,它將位于客戶端與服務器之間,因此它是一種被動方式的測試工具,通過截獲用戶的瀏覽行為(提交的請求),將其改造后提交到服務器,當服務器返回響應后,它會從中分析獲得潛在的應用安全缺陷。可見,這種被動的設計讓 Ratproxy 優缺各半,一方面測試范圍比較容易界定,想測試哪個子系統/模塊就人肉訪問哪些功能,而另一方面,如果要求覆蓋的范圍比較全的話,恐怕需要爬蟲類程序的輔助 Explore。 使用前首先要編譯 Ratproxy,它沒有 configure 過程,直接 make 就好了。在公司我用的是 Ubuntu(gcc 4.3.2)環境,家里也用 cygwin(手工裝的 gcc 4.3.3) 編譯過。為了提高測試效果,Ratproxy 允許配置一些選項,這個就不詳細羅列了,可以參見網站提供的文檔。在這里我使用了如下參數來啟動它。
Shell代碼

./ratproxy -v . -w test1.log -d demo.testfire.net -XCl2efxiscmg -p 9090

這樣會在 localhost:9090 上開放 ratproxy 代理,-XCl2efxiscmg 參數限定了測試的選項,-d demo.testfire.net 參數限定了測試的網站域,并在當前目錄中生成名為 test1.log 的測試日志。如果處在需要嵌套代理的網絡環境中,可以使用類似于 -P proxyhost.com:8080 選項來配置它。接下一來就可以在配置了 localhost:9090 代理服務器的瀏覽器中,開始手動訪問被測 Web 應用了,ratproxy 會自動在后臺完成測試,并將結果存入預定的 test1.log 日志中。在完成測試后,使用如下工具來生成 html 格式的安全測試報告。

Shell代碼

./ratproxy-report.sh test1.log > ratproxy_report.html

1

從生成的結果中可以掌握 Web 應用中潛在的如下幾類安全缺陷:
POST query with no XSRF protection
Confirmed XSS vectors
Bad caching headers
Ambiguous HTTP content headers
Cookie issuer with no XSRF protection
HTTP errors
Bad or no charset declared for renderable file
XSS candidates
Request splitting candidates
GET query with no XSRF protection
All Flash applications
All POST requests
All cookie setting URLs
當然,上面的分方式不太規范,不過這些分類項都可以與 WASC 威脅分類能對應上。慢慢看吧,不過有一些測得的項目真只是 candidate 而已。試用后總體覺得該工具還是相對不錯的,性價比較高,但結果的覆蓋率不太理想,而且被動的 Explore 方式讓覆蓋率較高的測試不容易完成。

Nikto

Nikto 也是一款開放源代碼的、功能強大的 Web 應用安全測試驗證工具。它也是采用黑盒的方式來測試 Web 應用,與上面的 Google Ratproxy 不同的是,Nikto 采用主動測試方式,抓網過程不需要人為參與,據文檔說它可以針對 230 多種服務器,識別出 2600 多種有潛在危險的文件、cgi 程序和其他安全問題。它可以掃描指定主機中的特定目錄、cookie 及特定 cgi 漏洞。Nikto 底層使用的是 Whiske 庫,但據說要比 Whisker 更新的頻繁。Nikto 是由 Perl 語言開發的,支持的平臺也很廣泛,安裝 perl vm 是可以了,包括 Windows、Mac OS/X 和 *nux系統。支持的協議有 HTTP/HTTPS 1.0/1.1,HTTPS 要求安裝 ssl 庫。Nikto 包括了一個可以更新的測試用例庫,可以由用戶手動更新。

Shell代碼

perl nikto.pl -host demo.testfire.net -mutate 1234 -Tuning 0123456789abg -C all

其中 -mutate 1234 -Tuning 0123456789abg -C all 選項都是為了提高測試結果質量。具體的可以參考文檔。生成的日志如下。

Log代碼

- ***** SSL support not available (see docs for SSL install instructions) *****
- Nikto v2.10/2.10
--------------------------------------------------------------------------
+ Target IP:          65.61.137.117
+ Target Hostname:    demo.testfire.net
+ Target Port:        80
+ Using Mutation:     Test all files with all root directories
+ Using Mutation:     Guess for password file names
+ Using Mutation:     Enumerate user names via Apache (/~user type requests)
+ Using Mutation:     Enumerate user names via cgiwrap (/cgi-bin/cgiwrap/~user t
ype requests)
+ Start Time:         2009-02-23 12:59:06
---------------------------------------------------------------------------
+ Server: Microsoft-IIS/6.0
+ OSVDB-0: Retrieved X-Powered-By header: ASP.NET
+ OSVDB-630: IIS may reveal its internal IP in the Location header via a request
to the /images directory. The value is "http://192.168.1.117/images/".
+ OSVDB-0: Allowed HTTP Methods: OPTIONS, TRACE, GET, HEAD, POST
+ OSVDB-877: HTTP method ('Allow' Header): 'TRACE' is typically only used for de
bugging and should be disabled. This message does not mean the server is vulnera
ble to XST.
+ OSVDB-0: Public HTTP Methods: OPTIONS, TRACE, GET, HEAD, POST
+ OSVDB-877: HTTP method ('Public' Header): 'TRACE' is typically only used for d
ebugging and should be disabled. This message does not mean the server is vulner
able to XST.
+ 1 host(s) tested

測得的潛在缺陷是以 OSVDB 的編號提供的,通過這可編號,可以通過 http://www.osvdb.org/ 來查詢得到詳細說明,osvdb 提供了一種安全缺陷分類方式。

試用 Nikto 覺得比上面的 Google Ratproxy 遜色不少,結果基本不能滿足需求,覆蓋率較低,但覺得其易用性較好,很容易上手使用,而且容易、方便。可以搭配 ratproxy 來做補充。

Wapiti

最后要說的就是 Wapiti 了。它的工作方式與 nikto 類似,也采用黑盒的方式主動的對被測 Web 應用進行掃描,尋找其中潛在的安全缺陷,但不像 nikto 提供測試用例庫,而是實現了內置的匹配算法。具說可以識別文件處理錯誤、SQL、LDAP 及 CRLF 類注入攻擊,跨站腳本攻擊、檢查潛在的命令執行。wapiti 是由 python 語言開發的,因此支持的平臺也很廣泛,安裝 python vm 是可以了,包括 Windows、Mac OS/X 和 *nux系統。支持的協議有 HTTP/HTTPS 1.0/1.1,HTTPS 要求安裝 ssl 庫。支持生成多種格式的安全測試驗證報告。通過如下命令啟動 wapiti 測試過程。

Shell代碼

python wapiti.py http://demo.testfire.net/

很簡單吧,但需要說明的是,如果你測試的 Web 應用需要登錄操作(覆蓋到那些登錄后才啟用的功能),可能需要預先設置 cookie,wapiti 提供了 getcookie.py 腳本來輔助完成。在這里 demo.testfire.net 一些功能也是有登錄保護的,因此需要通過如下方式來為 wapiti.py 測試腳本來準備 cookie。
Shell代碼

python getcookie.py cookies.txt http://demo.testfire.net/bank/login.aspx

通過給出必要的登錄用戶/密碼(jsmith/demo1234)來生成 cookie 并保存在 cookies.txt 中。

Shell代碼

lswww will be far less effective without tidy
please install libtidy ( http://tidy.sourceforge.net/ ),
ctypes ( http://starship.python.net/crew/theller/ctypes/ )
and uTidylib ( http://utidylib.berlios.de/ )
Please enter values for the folling form :
url = http://demo.testfire.net/bank/login.aspx
btnSubmit (Login) :
passw (on) : demo1234
uid (on) : jsmith
0 : <Cookie ASP.NET_SessionId=bj2w3d55k4bgzlbvqrvdbq45 for demo.testfire.net/>
1 : <Cookie amCreditOffer=CardType=Gold&Limit=10000&Interest=7.9 for demo.testfi
re.net/>
2 : <Cookie amSessionId=23514510510 for demo.testfire.net/>
3 : <Cookie amUserId=100116014 for demo.testfire.net/>
4 : <Cookie amUserInfo=UserName=anNtaXRo&Password=ZGVtbzEyMzQ= for demo.testfire
.net/>

通過新的參數來使用 cookie。

Shell代碼

python wapiti.py http://demo.testfire.net/ -c cookies.txt -x http://demo.testfire.net/bank/logout.aspx

由于 http://demo.testfire.net/bank/logout.aspx 指出的“退出”操作會使 cookie 失效,所以使用 -x 從測試中排除了該 url。測試完成后 wapiti 會自動生成報告,不需要其它操作。

2

從生成的結果中可以掌握 Web 應用中潛在的如下幾類安全缺陷:

SQL Injection
File Handling
Cross Site Scripting
CRLF
Commands execution

覺得這種分類也比較原始,還是建議參考 WASC 提供的威脅分類。

實際上從上面的結果來看,三個工具都能獲得一些潛在的 Web 安全缺陷,但又都不完整。如果真要用這些開源、免費的安全測試工具的話,建議還是認真分析,結合使用,多多迭代吧。另外,所有的結果報告只是強調了應予關切的領域,并不一定表明實際的缺陷,所采集的數據和獲得的結果應提供給具有良好理解的安全專家來分析、使用,并獲得最終結論。因此,Web 應用的安全缺陷防治,到底來還是對本質原理的掌握。


 
[推薦] [評論(0條)] [返回頂部] [打印本頁] [關閉窗口]  
匿名評論
評論內容:(不能超過250字,需審核后才會公布,請自覺遵守互聯網相關政策法規。
 §最新評論:
  熱點文章
·一句話木馬
·samcrypt.lib簡介
·教你輕松查看QQ空間加密后的好友
·web sniffer 在線嗅探/online ht
·SPIKE與Peach Fuzzer相關知識
·Cisco PIX525 配置備忘
·用Iptables+Fedora做ADSL 路由器
·asp,php,aspx一句話集合
·Md5(base64)加密與解密實戰
·NT下動態切換進程分析筆記
·風險評估中的滲透測試
·QQ2009正式版SP4文本信息和文件
  相關文章
· 抵抗DDoS防火墻更新換代
·Soc運營中心的一次病毒處理
·【翻譯】 Metasploit:重現犯罪
·關于流量,木馬,插件,網馬賺錢
·一臺肉雞能創造多少價值?為您講
·Default Logins and Passwords f
·Md5(base64)加密與解密實戰
·QQ2009正式版SP4文本信息和文件
·來自IT的警匪片 賬號盜竊答案的
·利用Sniffer進行DOS攻擊流量分析
·系統監控:蜜罐分析技術
·Finding vulnerabilities in PHP
  推薦廣告
CopyRight © 2002-2020 VFocuS.Net All Rights Reserved
期本期特码