WEB安全性測試
目錄
1.SQL Injection(SQL注入)1
2.Cross-site scritping(XSS):(跨站點腳本攻擊)3
3.CSRF:(跨站點偽造請求)6
4.Email Header Injection(郵件標頭注入)6
5.Directory Traversal(目錄遍歷)7
6.exposed error messages(錯誤信息)7
1.SQL Injection(SQL注入)
(1)如何進行SQL注入測試?
·首先找到帶有參數傳遞的URL頁面,如 搜索頁面,登錄頁面,提交評論頁面等等.
注1:對 於未明顯標識在URL中傳遞參數的,可以通過查看HTML源代碼中的"FORM"標籤來辨別是否還有參數傳遞.在 和的標籤中間的每一個參數傳遞都有可能被利用.
注2:當你找不到有輸入行為的頁面時,可以嘗試找一些帶有某些參數的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=10
·其次,在URL參數或表單中加入某些特殊的SQL語句或SQL片斷,如在登錄頁面的URL中輸入HTTP://DOMAIN /INDEX.ASP?USERNAME=HI" OR 1=1--
(2)如何預防SQL注入?
從應用程序的角度來講,我們要做以下三項工作:
·轉義敏感字元及字元串(SQL的敏感字元包括「exec」,」xp_」,」sp_」,」declare」,」Union」,」cmd」,」+」,」//」,」..」,」;」,」『」,」--」,」%」,」0x」,」>
·屏蔽出錯信息:阻止攻擊者知道攻擊的結果
·在服務端正式處理之前提交數據的合法性(合法性檢查主要包括三 項:數據類型,數據長度,敏感字元的校驗)進行檢查等。最根本的解決手段,在確認客戶端的輸入合法之前,服務端拒絕進行關鍵性的處理操作.
從測試人員的角度來講,在程序開發前(即需求階段),我們就應該有意識的將安全性檢查應用到需求測試中,例如對一個表單需求進行檢查時,我們一般檢驗以下幾項安全性問題:
·需求中應說明表單中某一FIELD的類型,長度,以及取值範圍(主要作用就是禁止輸入敏感字元)
·需求中應說明如果超出表單規定的類型,長度,以及取值範圍的,應用程序應給出不包含任何代碼或資料庫信息的錯誤提示.
當然在執行測試的過程中,我們也需求對上述兩項內容進行測試.
2.Cross-site scritping(XSS):(跨站點腳本攻擊)
(1)如何進行XSS測試?
·首先,找到帶有參數傳遞的URL,如登錄頁面,搜索頁面,提交評論,發表留言頁面等等。
·其次,在頁面參數中輸入如下語句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)來進行測試:
注:其它的XSS測試語句
·最後,當用戶瀏覽時便會彈出一個警告框,內容顯示的是瀏覽者當前的cookie串,這就說明該網站存在XSS漏洞。
·試想如果我們注入的不是以上這個簡單的測試代碼,而是一段經常精心設計的惡意腳本,當用戶瀏覽此帖時,cookie信息就可能成功的被 攻擊者獲取。此時瀏覽者的帳號就很容易被攻擊者掌控了。
(2)如何預防XSS漏洞?
從應用程序的角度來講,要進行以下幾項預防:
·對Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等語句或腳本進行轉義.
·在服務端正式處理之前提交數據的合法性(合法性檢查主要包括三項:數據類型,數據長度,敏感字元的校驗)進行檢查等。最根本的解決手段,在確認客戶端的輸入合法之前,服務端拒絕進行關鍵性的處理操作.
從測試人員的角度來講,要從需求檢查和執行測試過程兩個階段來完成XSS檢查:
·在需求檢查過程中對各輸入項或輸出項進行類型、長度以及取值範圍進行驗證,著重驗證是否對HTML或腳本代碼進行了轉義。
·執行測試過程中也應對上述項進行檢查。
3.CSRF:(跨站點偽造請求)
CSRF儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。
XSS是利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。
XSS也好,CSRF也好,它的目的在於竊取用戶的信息,如SESSION和COOKIES(關於SESSION和COOKIES的介紹請參見我的另一篇BLOG:http://www.51testing.com/?49689/action_viewspace_itemid_74885.html),
(1)如何進行CSRF測試?
關於這個主題本人也正在研究,目前主要通過安全性測試工具來進行檢查。
(2)如何預防CSRF漏洞?
·請參見http://www.hanguofeng.cn/archives/security/preventing-csrf
請參見http://getahead.org/blog/joe/2007/01/01/csrf_attacks_or_how_to_avoid_exposing_your_gmail_contacts.html
4.Email Header Injection(郵件標頭注入)
Email Header Injection:如果表單用於發送email,表單中可能包括「subject」輸入項(郵件標題),我們要驗證subject中應能escape掉「
」標識。
Subject: hello
如果允許用戶使用這樣的subject,那他可能會給利用這個缺陷通過我們的平台給其它用戶發送垃圾郵件。
5.Directory Traversal(目錄遍歷)
(1)如何進行目錄遍歷測試?
·目錄遍歷產生的原因是:程序中沒有過濾用戶輸入的「../」和「./」之類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷伺服器上的任意文件。
·測試方法:在URL中輸入一定數量的「../」和「./」,驗證系統是否ESCAPE掉了這些目錄跳轉符。
(2)如何預防目錄遍歷?
·限制Web應用在伺服器上的運行
·進行嚴格的輸入驗證,控制用戶輸入非法路徑
6.exposed error messages(錯誤信息)
(1)如何進行測試?
·首先找到一些錯誤頁面,比如404,或500頁面。
·驗證在調試未開通過的情況下,是否給出了友好的錯誤提示信息比如「你訪問的頁面不存 在」等,而並非曝露一些程序代碼。
(2)如何預防?
·測試人員在進行需求檢查時,應該對出錯信息進行詳細查,比如是否給出了出錯信息,是否給出了正確的出錯信息。


TAG:軟體測試工具 |