安全測試 -web

安全測試 -手工測試 

  手工測試方法-來自 http://www.51testing.com/html/83/n-201383.html

 

這裏先說一下手動測試的兩個出發點,所謂知己知彼,百戰不殆,安全測試也要從正反兩個方面出發來考慮。一是從己方也就是系統安全本身出發,確保其安全機制正確執行了它們的功能;還有就是從敵方也就是***者的角度出發,專門針對模擬***者的測試用例。綜合這兩點,總結了一些方法,由於閱讀的資料和相關經驗有限,可能不夠全面,希望能在將來慢慢補充。

  首先是“輸入校驗”,輸入是***者與系統最直接的接觸方式,據統計,對於一個web應用,輸入校驗做的好能阻止90%~95%的***。那麼應該怎樣做好輸入校驗呢?可以參考以下幾個步驟:

  1、找到web應用所有能夠接受用戶輸入的地方,也就是找到所有輸入點;

  2、逐個檢查每個輸入點,確認它們的相應的輸入規則和邊界。這裏最好從合法輸入入手,因爲你不可能窮舉出所有非法輸入,但是可以列出所有合法輸入;

  3、重點關注隱藏域的輸入點,比如cookie和URL參數;

  4、驗證來自數據庫的信息,這點比較容易被忽視,因爲一般都認爲來自數據庫的信息可信度是很高的,這也是爲什麼數據庫容易成爲***點;

  5、不光要在客戶端進行校驗,還要在服務器端進行校驗,因爲客戶端可能會被惡意更改導致危險數據進入系統內部;

  6、注意隱藏異常信息,不要讓這些信息成爲***者的切入點。

  做完輸入校驗之後,系統相對來說已經比較安全了,然後再對一些常見的安全點進行測試,從網上總結出瞭如下一些測試點,可以根據需要選擇測試:

  1、目錄設置:每個目錄下應該有index.html或main.html頁面,這樣就不會顯示該目錄下的所有內容。選中一幅圖片,單擊鼠標右鍵,看是否找到該圖片所在的路徑。若能找到,在瀏覽器地址欄中手工輸入該路徑,看是否發現該站點的信息。

  2、SSL:站點使用SSL進行安全傳送。進入一個SSL站點是因爲瀏覽器出現了警告消息,而且在地址欄中的HTTP變成HTTPS。開發部門使用了 SSL,測試人員需要確定是否有相應的替代頁面。當用戶進入或離開安全站點的時候,請確認有相應的提示信息。是否有連接時間限制?超過限制時間後出現什麼情況?

  3、登錄:驗證系統阻止非法的用戶名/口令登錄,而能夠通過有效登錄。用戶登錄是否有次數限制?是否限制從某些IP地址登錄?如果允許登錄失敗的次數爲 3,你在第三次登錄的時候輸入正確的用戶名和口令,能通過驗證嗎?口令選擇有規則限制嗎?  是否可以不登陸而直接瀏覽某個頁面?是否有超時的限制,用戶登陸後在一定時間內(例如15分鐘)沒有點擊任何頁面,是否需要重新登陸才能正常使用。

  4、日誌文件:在後臺,要注意驗證服務器日誌工作正常。日誌是否記所有的事務處理?是否有惡意操作失敗記錄

手工注入的方法       http://www.jb51.net/hack/39731.html

  1、加入單引號 ’提交, 
結果:如果出現錯誤提示,則該網站可能就存在注入漏洞。 

2、數字型判斷是否有注入; 語句:and 1=1 ;and 1=2 (經典)、' and '1'=1(字符型) 
結果:分別返回不同的頁面,說明存在注入漏洞. 
分析:and 的意思是“和”如果沒有過濾我們的語句,and 1=1就會被代入SQL查詢語句進行查詢, 如果and前後的兩條語句都是真的話就不會出錯,但如果前後語句有一個爲假的話,程序就會暴錯。 也就表明程序有注入漏洞 


防注入解決辦法: 
1>使用or 2>1 ; or 1>2來進行判斷 
結果:分別返回不同的頁面,說明存在注入漏洞. 
分析:or注入只要求前後兩個語句只要有一個正確就爲真,如果前後兩個語句都是正確的,反而爲假。 記住:or注入時,or後面的語句如果是正確的,則返回錯誤頁面!如果是錯誤,則返回正確頁面 ,說明存在注入點。 

2> 使用xor 1=1; xor 1=2 
結果:分別返回不同的頁面,說明存在注入漏洞. 
分析:xor 代表着異或,意思即連接的表達式僅有一個爲真的時候才爲真。 記住:xor注入時,xor後面的語句如果是正確的,則返回錯誤頁面積,如果是錯誤,則返回正確 頁面,說明存在注入點。 

3>把and 1=1轉換成URL編碼形式後在提交 and 1=1 URL編碼:%41%4E%44%20%%31%3D%31 

4>使用-1;-0 
分析:如果返回的頁面和前面不同,是另一則新聞,則表示有注入漏洞,是數字型的注入漏洞;在 URL地址後面加上 -0,URL變成 news.asp?id=123-0,返回的頁面和前面的頁面相同,加上-1,返回錯誤頁面,則也表示存在注入漏洞. 

3、字符型判斷是否有注入: 
語句:' and '1'=1;' and '1=2(經典) 
結果:分別返回不同的頁面,說明存在注入漏洞. 
分析:加入' and '1'=1返回正確頁面,加入' and '1=2返回錯誤頁面,說明有注入漏同。 

防注入解決辦法: 
在URL的地址後面加上'%2B'(字符型) 
分析:URL地址變爲:news.asp?id=123'%2B',返回的頁面和1同;加 上'2%2B'asdf,URL地址變爲:news.asp?id=123'%2Basdf,返回的頁面和1 不同,或者說未發現該條記錄,或者錯誤,則表示存在注入點,是文本型的。 

搜索型判斷是否有注入: 
簡單的判斷搜索型注入漏洞存在不存在的辦法是先搜索',如果出錯,說明90%存在這個漏洞。然後搜索%,如果正常返回,說明95%有洞了。 
說明:加入如"&"、"["、"]"、"%"、"$"、"@"等特殊字符,都可以實現,如果出現錯誤,說明有問題。 
操作: 搜索一個關鍵字,比如2006吧,正常返回所有2006相關的信息,再搜索2006%'and 1=1 and '%'='和 2006%'and 1=2 and '%'=',存在異同的話,就是100%有洞了。關鍵字%' and 1=1 and '%'='% 關鍵字%' and 1=2 and '%'='% 將and 1=1 換成注入語句就可以了 

判斷數據庫類型: 
and user>0 
例如:showdetail.asp?id=49 ;and user>0 如果是ACCESS數據庫,那麼返回的錯誤裏一般會有"Microsoft JET Database"關鍵定,如果是MSSQL數 據庫的話返回的錯誤提示裏一般會含有"SQL Server"關鍵了. 

猜表名 and exists (select * from 表名) 
說明:意思與上面一樣,只是用的語名不一樣。 

猜列名 and (select count(列名) from 表名)>0 
說明:如果我們輸入的列名猜解正確否反回正常頁面 

猜長度 and (select top 1 len(username) from admin)>0 
說明:如果我們輸入的最後一位數據返回錯誤,而錯誤前一位數字返回正確,說明我所猜解的長度 爲正確。 

猜內容 and (select top 1 asc(mid(username,1,1)) from admin)>50 ascii碼1-128 
說明:如果我們輸入的最後一位數據返回錯誤,而錯誤前一位數字返回正確,說明我所猜解的數字正確。(可以使用折半法猜內容) 
折半法:最小值與最大值差的一半,比如輸入50返正確,輸入100返回錯誤,折半後輸入75。 
兩種常見爆庫 
1、%5c 
2、conn.asp 

%5c暴庫 把二級目錄中間的/換成%5c EY: otherweb ... s.asp?BigClassName=職 責範圍&BigClassType=1 如果你能看到:’E:\ahttc040901 \otherweb\dz\database\iXuEr_Studio.asa’不是一 個有效的 路徑。 確定路徑名稱拼寫是否正確, 以及是否 連接到文件存放的服務器。 這樣的就是數據庫了。下載時用FLASHGET換成.MDB格式的就行 . 
conn.asp暴庫 這個也是比較老的漏洞,利用價值不大 


常見的:'or'='or'萬能密碼登陸 
’or’=’or’這是一個可以連接SQL的語名句.可以直接進入後臺。我收集了一下。類似的還有 : ’or’’=’ " or "a"="a ’) or (’a’=’a ") or ("a"="a or 1=1-- ’ or ’ a’=’a 一個很老的利用方法,主要用於一些比較老的網站。 

聯合查詢注入(union查詢) 
操作步驟: 
1>在正常語句後臺加入 and 1=2 union select * form 表名,其中*號代表字段數量,從1一直追加 (and 1=2 union select 1,2,3,4 form 表名)如果字段數正確就會有暴錯 
2>在頁面顯示數字的地方用真實得到的字段名代替,如:username,password. 
3>在頁面字段值處暴出真實的數據庫字段值。 



查找後臺地址,找到後臺用得到的用戶管理員的帳戶與密碼進行登陸. 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章