1 Web Application Security Hacking Your Way In! Peter Schuler & Julien Rentrop 12 Agenda Injection Cross Site Scripting Session Hijacking Cross Site R...
• HTML5 features maken meer mogelijk − Bijv. XSS triggeren via autofocus
• Voorkomen − Escapen voor renderen
− Voor juiste context escapen ◦ HTML, JavaScript, CSS, URL
− Invoer validatie ◦ White listing, strong typing, limiteren lengte
13
Agenda
• Injection
• Cross Site Scripting • Session Hijacking • Cross Site Request Forgery
14
Hoe werken HTTP Sessions
HTTP GET
HTTP OK
HTTP Protocol = Stateless protocol 15
Hoe werken HTTP Sessions
HTTP Protocol = Stateless protocol 16
Hoe werken HTTP Sessions
IRL Moeten we communiceren met meerdere clients 17
Hoe werken HTTP Sessions
Client sessies krijgen ieder een uniek cookie/id.
18
Hoe werken HTTP Sessions
• Wat is een cookie eigenlijk? • Een cookie is een HTTP server Header: HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Expires=Wed, 09 Jun 2021 10:18:14 GMT
• De client stuurt deze data bij ieder verzoek mee: GET /spec.html HTTP/1.1 Host: www.example.org Cookie: JSESSIONID=5A53044AA6CB36363D3; name=value
• Een cookie is dus plain text data. 19
• Wat is een cookie nu eigenlijk? • Een cookie is een HTTP Header vanaf de server: HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Plain text HTTP Expires=Wed, 09 Jun 2021 10:18:14 GMT
verkeer kan je sniffen!
• De client stuurt deze data bij ieder verzoek mee: GET /spec.html HTTP/1.1 Host: www.example.org Cookie: SESSIONID=5A53044AA6CB36363D3; name=value
• Een cookie is dus plain text data. 20
Demo 4: Session Hijacking
21
Hoe raak je cookies kwijt? • Onbeveiligd HTTP verkeer. Bv. FireSheep. • Via XSS en Javascript: document.cookie. • Via Trojans en Virussen die specifiek jacht maken op actieve sessions. • Social Engineering. • Andere optie: Session Fixation.
• Aanvaller lokt slachtoffer met URL rewriting: • http://......page/;JSESSIONID=FFB683DF13 22
Hoe helpt het HTTP protocol?
• Moderne browers helpen met nieuwe opties voor cookies: − HttpOnly schermt het cookie af van Javascript. − Secure alleen meegestuurd met SSL verbindingen.
HTTP/1.1 200 OK Content-type: text/html Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Secure; HttpOnly 23
Session Hijacking: Wat kan je zelf doen? 1. Bescherm je session altijd met HTTPS. 2. Bescherm je session met HttpOnly en Secure. 3. Geef je session cookie een andere naam. 4. Schakel URL rewriting uit met tracking mode. 5. Reset je Session bij iedere inlog poging. •
Gebruik je nog oude technologie? Geen nood. − De middleware kan je ook helpen. − Bijvoorbeeld: Tomcat ondersteunt Secure en HttpOnly al vanaf versie 5.5 in de context.xml. 24
Agenda
• Injection
• Cross Site Scripting • Session Hijacking • Cross Site Request Forgery
25
Hoe werkt Cross Site Request Forgery?
www.linkedIn.com
server
+
peter **********
26
Hoe werkt Cross Site Request Forgery?
www.linkedIn.com
server
+
27
Hoe werkt Cross Site Request Forgery?
www.linkedIn.com
evilSite.org
server
+
28
Demo 5: CSRF
29
Demo 5: CSRF • Hoe werkte deze aanval? • In de HTML:
• Openen van de pagina trigger het ophalen van het image en daarmee de aanval. • Een CSRF aanval kan overal verstop zijn: – In een iFrame. – Een eigen hidden HTML form. – Etc etc.. 30
CSRF Aanval
• Een CSRF aanval kan overal vandaan komen: − Een HTML bestand van de lokale disk. − Een email.
• Goede combinatie met XSS. − XSS in de doel website. − XSS in een willekeurige andere site.
•
Bekend voorbeeld is de Sammy Worm 31
CSRF Voorkomen
• De oplossing is simpel:
• Autoriseer niet de browser, maar de pagina om verzoeken te versturen. •
Geef ieder request een random token.
•
Controleer het token bij ieder verzoek .
•
Gebruik hiervoor b.v. ServletFilter. 32
Technologie helpt!
• Example: − ASP.net: AntiForgeryToken − PHP: Niet out of the box, optie OWASP CSRFGuard − Java: Niet out of the box, afhankelijk framework of libraries zoals OWASP CSRFGuard
33
Tot slot • Bedankt! • www.OWASP.org bevat veel informatie over deze en andere aanvallen. • Voor vragen: