轉自:http://www.51testing.com/html/97/n-202197.html
● 探測性用戶賬戶測試 法
衆所周知,在系統中往往會有默認賬戶或者很容易被猜到的常用賬戶,而且往往很多用戶會使用默認的密碼,同樣,有些應用系統的測試賬戶研發人員有時也會忘記刪除。這個問題事實上是一個漏洞,而這種漏洞往往是由於以下原因造成的:
◇ 沒有經驗的IT工程師,他們往往不會更改安裝的架構組件的缺省密碼;
◇ 編程人員在應用中留有後門以便測試,但在發佈時忘記刪除;
◇ 系統的管理員和用戶採用了很簡單的密碼;
◇ 系統有內嵌的,無法刪除的內部用戶名和密碼;
◇ ……
對於注入Cisco路由器或WebLogic等,他們都有一些默認的用戶名和密碼,我們可以直接嘗試,對於一些我們根本不瞭解的應用,我們可以做如下嘗試:
◇ 嘗試以下系統管理員的常用賬號——"admin", "administrator", "root", "system", "guest", "operator", "super","qa", "test ", "test1", "testing",針對用戶名和密碼組合嘗試,也可以嘗試諸如"password", "pass123", "password123", "admin",或guest"這些密碼。如果這些都無法成功,我們可以寫一些腳本來嘗試類似的用戶名和密碼組合。
◇ 管理員的密碼有時會與系統名字相關,如我們測試的應用系統叫“Obscurity”,那麼可以嘗試用戶名/密碼組合Obscurity/obscurity。
◇ 利用註冊頁面我們也可以猜測用戶名和密碼的格式和長度。
◇ 嘗試上述提到的所有用戶名和空密碼。
◇ 查看頁面的源文件,嘗試找到所有引用到用戶名和密碼的信息,比如"If username='admin' then starturl=/admin.asp else /index.asp"
◇ 尋找那些源文件中註釋中可能含有的用戶名和密碼信息;
◇ ……
● 強力測試(暴力測試)
任何一種技術,在不同的人手裏運用所達到的效果是不同的,正如暴力測試,也叫暴力破解,安全服務人員和測試人員利用這種技術來驗證是否存在漏洞,而攻擊者則利用其來尋找漏洞。
Web應用系統通常會有一些用戶認證方式,這些方式包括證書、指紋、一次性令牌等等,但更多的,往往是用戶名和密碼的組合,這就使得暴力破解成爲可能。
在對Web應用系統做暴力測試時,首先我們需要了解的是系統的認證機制,通常Web系統會採用以下兩種機制:
◇ HTTP認證——包含基本存取認證和數字存取認證。
◇ 基於HTML表單的認證。
我們下面對這些認證方式做一下簡單介紹:
基本存取認證
基本存取認證假設假定用戶會以用戶名和密碼的組合來表明自己的身份,當用戶瀏覽器使用這種機制訪問站點時,web服務器將會返回一個包含 “WWW-Authenticate”頭的401響應,且包含了一個“Basic”值,以及被保護的域名(例如,WWW-Authenticate: Basic realm=”wwwProtectedSite”)客戶端會彈出一個需要用戶輸入該域用戶名和密碼的提示框。然後,客戶端瀏覽器返回給服務器一個響應, 響應包含“Authorization”頭,還包含“Basic”值以及連接了用戶名,冒號,密碼的基於64位的編碼(例 如,Authorization: Basic b3dhc3A6cGFzc3dvcmQ=),但可惜的是,這個回覆只要被攻擊者監聽到就很容易被解碼。
我們來看一下這個過程:
1. 客戶端發送一個標準的HTTP請求
GET /members/docs/file.pdf HTTP/1.1 Host: target |
2. web服務器定位到訪問的這個資源是在一個受保護的目錄;
3. 服務器發送一個HTTP 401的認證請求;
HTTP/1.1 401 Authorization Required Date: Sat, 04 Nov 2006 12:52:40 GMT WWW-Authenticate: Basic realm="User Realm" Content-Length: 401 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 |
4. 瀏覽器彈出要求輸入用戶名和密碼的數據窗口;
5. 用戶輸入用戶名和密碼後,包含以下數據後再次提交;
GET /members/docs/file.pdf HTTP/1.1 Host: target Authorization: Basic b3dhc3A6cGFzc3dvcmQ= |
6. 服務器把客戶信息和存儲的信息進行比較;
7. 如果身份驗證正確,服務器發回被請求的內容,如果失敗,服務器將會返回HTTP。