Web Application Security; Hacking your way in!
-
Upload
pschuler -
Category
Technology
-
view
868 -
download
0
description
Transcript of Web Application Security; Hacking your way in!
![Page 1: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/1.jpg)
Web Application SecurityHacking Your Way In!
Julien RentropPeter Schuler
![Page 2: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/2.jpg)
Wie wij zijn
• Julien Rentrop• [email protected]• Java software engineer
• Peter Schuler• [email protected]• Zelfstandig Java Trainer
& Architect
![Page 3: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/3.jpg)
Agenda
• Injection• Cross Site Scripting• Session Hijacking• Cross Site Request Forgery
#1 OWASP top 10#2#3#5
Bezoek www.owasp.org voor meer informatie.
![Page 4: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/4.jpg)
Injection
"select * from Userwhere name = '" + name + "'"
• Injecteren commando’s in invoer parameters
Hans
![Page 5: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/5.jpg)
• Injecteren commando’s in invoer parameters
• Injection is niet alleen SQL– XML, XPath, LDAP, dynamic code eval, …
Injection
"select * from Userwhere name = '" + name + "'"
Hans' or '1'='1
![Page 6: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/6.jpg)
Demo 1: Injection
![Page 7: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/7.jpg)
Demo 1: Injection• Hoe zag de code er uit?
• Wat is de oplossing?
String jpql = "select p from Persoon p " +"where emailadres = '" + emailadrs + "' " +"and wachtwoord = '" + encodedww + "'";Query query = em.createQuery(jpql);
![Page 8: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/8.jpg)
Injection Voorkomen
• Parameter binding API’s
• Escaping• Invoer validatie
String jpql = "select p from Persoon p " +"where emailadres = :email " +"and wachtwoord = :pass";Query query = em.createQuery(jpql);query.setParameter("email", emailadres);query.setParameter("pass", encodedww);
![Page 9: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/9.jpg)
Agenda
• Injection• Cross Site Scripting• Session Hijacking• Cross Site Request Forgery
![Page 10: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/10.jpg)
Cross Site Scripting (XSS)
• Hoe werkt het?– Aanvaller plaatst eigen HTML/JS op site– Slachtoffer bezoekt site– Aanvaller heeft controle over site en de
browser.
![Page 11: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/11.jpg)
Reflected XSS
• Aanvaller lokt slachtoffer• Email met link, redirect, frame, url shortener, ..
http://bank.it/?name="><script>..</script>
..<input value=""><script>..</script>..
Aanvaller laat script via slachtoffer en server reflecteren.
![Page 12: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/12.jpg)
Demo 2: Cross Site Scripting• Hoe zag de code er uit?
<input type="text" name="emailadres" value="${param.emailadres}"/>
• Emailadres wordt rechtstreeks uit EL overgenomen.
![Page 13: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/13.jpg)
Stored XSS
POST name="><script>..</script>
Bezoekers krijgen opgeslagen script.
![Page 14: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/14.jpg)
Cross Site Scripting (XSS)
• HTML5 features maken meer mogelijk
• Voorkomen– Escapen voor renderen– Voor juiste context escapen
• HTML, JavaScript, CSS, URL– Invoer validatie
• White listing, strong typing, limiteren lengte
![Page 15: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/15.jpg)
Agenda
• Injection• Cross Site Scripting• Session Hijacking• Cross Site Request Forgery
![Page 16: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/16.jpg)
HTTP Sessions
HTTP GET
HTTP OK
HTTP Protocol = Stateless protocol
![Page 17: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/17.jpg)
HTTP Sessions
HTTP Protocol = Stateless protocol
![Page 18: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/18.jpg)
HTTP Sessions
IRL Moeten we communiceren met meerdere clients
![Page 19: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/19.jpg)
Session Cookies
Client sessies krijgen ieder een uniek cookie/id.
![Page 20: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/20.jpg)
Session Cookies• Wat is een cookie eigenlijk?
• Een cookie is een HTTP Header vanaf de server:
• De client stuurt deze data bij ieder verzoek mee:
HTTP/1.1 200 OKContent-type: text/htmlSet-Cookie: name=valueSet-Cookie: JSESSIONID=5A53044AA6CB36363D3; Expires=Wed, 09 Jun 2021 10:18:14 GMT
GET /spec.html HTTP/1.1Host: www.example.orgCookie: JSESSIONID=5A53044AA6CB36363D3; name=value
• Een cookie is dus plain text data.
![Page 21: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/21.jpg)
• Wat is een cookie nu eigenlijk?HTTP Sessions
• Een cookie is een HTTP Header vanaf de server:HTTP/1.1 200 OKContent-type: text/htmlSet-Cookie: name=valueSet-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.1Host: www.example.orgCookie: SESSIONID=5A53044AA6CB36363D3; name=value
• Een cookie is dus plain text data.
Plain text HTTP verkeer kan je sniffen!
![Page 22: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/22.jpg)
Demo 4: Session Hijacking
![Page 23: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/23.jpg)
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=FFB6583DF13
![Page 24: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/24.jpg)
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 OKContent-type: text/htmlSet-Cookie: JSESSIONID=5A53044AA6CB36363D3; Secure; HttpOnly
![Page 25: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/25.jpg)
Hoe helpt JEE6?
• Servlet 3.0 spec biedt hulp:– Ondersteuning voor HttpOnly en Secure.– Vergaande configuratie SessionCookie mogelijk.
• Applicatief en via de web.xml.
![Page 26: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/26.jpg)
Hoe helpt JEE6?
• Servlet 3.0 spec biedt hulp:– Ondersteuning voor HttpOnly en Secure.– Vergaande configuratie SessionCookie mogelijk.
• Applicatief en via de web.xml.
• Declaratief:<session-config> <session-timeout>30</session-timeout> <cookie-config> <name>id</name> <http-only>true</http-only> <secure>true</secure> </cookie-config> <tracking-mode>COOKIE</tracking-mode> <tracking-mode>URL</tracking-mode></session-config>
• cookie-config laat je de cookie setting instellen.• Tracking mode laat je URL rewriting uitschakelen!
![Page 27: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/27.jpg)
Hoe helpt JEE6?
• Servlet 3.0 spec biedt hulp:– Ondersteuning voor HttpOnly en Secure.– Vergaande configuratie SessionCookie mogelijk.
• Applicatief en via de web.xml.
• Declaratief:<session-config> <session-timeout>30</session-timeout> <cookie-config> <name>id</name> <http-only>true</http-only> <secure>true</secure> </cookie-config> <tracking-mode>COOKIE</tracking-mode> </session-config>
• cookie-config laat je de cookie setting instellen.• Tracking mode laat je URL rewriting uitschakelen!
ServletContext sContext = sce.getServletContext();
SessionCookieConfig sessionCookieConfig = sContext.getSessionCookieConfig();
sessionCookieConfig.setName("ID");sessionCookieConfig.setSecure(true);sessionCookieConfig.setHttpOnly(true);
• Bescherm je eigen cookies via Cookie class.• URL rewriting uitschakelen kan niet via code.
![Page 28: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/28.jpg)
Session Hijacking: Wat kan je zelf doen?
1. Bescherm je session met HttpOnly en Secure.2. Geef je session cookie een andere naam.3. Schakel URL rewriting uit met tracking mode.4. Reset je Session bij iedere inlog poging.
• Geen Servlet 3.0? Geen nood.– De middleware kan je ook helpen.– Tomcat ondersteunt Secure en HttpOnly al
vanaf versie 5.5 in de context.xml.
![Page 29: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/29.jpg)
Agenda
• Injection• Cross Site Scripting• Session Hijacking• Cross Site Request Forgery
![Page 30: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/30.jpg)
Cross Site Request Forgery
www.linkedIn.com ++server
peter
**********
![Page 31: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/31.jpg)
Cross Site Request Forgery
www.linkedIn.comwww.linkedIn.com ++server
![Page 32: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/32.jpg)
Cross Site Request Forgery
www.linkedIn.com +evilSite.orgevilSite.org server
![Page 33: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/33.jpg)
Demo 5: CSRF
![Page 34: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/34.jpg)
Demo 5: CSRF• Hoe werkte deze aanval?
<img src="https://loc.....sie/uitschrijven.do?cursistId=7&cursusSessieId=2" />
• Een CSRF aanval kan overal verstop zijn:– In een iFrame.– Een eigen hidden HTML form.– Een gekaapt HTML form.– Etc etc..
• In de HTML:
• Openen van de pagina activeerde het downloaden van het image en de aanval.
![Page 35: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/35.jpg)
CSRF Aanval
• Een CSRF request kan overal vandaan komen:– XSS in de doel website.– XSS in een willekeurige andere site.– Een email.
• Bekend voorbeeld is de Sammy Worm
![Page 36: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/36.jpg)
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.
![Page 37: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/37.jpg)
Frameworks helpen!
• Een aantal frameworks hebben ingebouwde bescherming tegen CSRF:
• Wicket middels een CryptedUrlWebRequestCodingStrategy.
• In JSF biedt de javax.faces.ViewState enige bescherming! Implementatie afhankelijk.
• Van JSF 2.1 meer mogelijkheden.
![Page 38: Web Application Security; Hacking your way in!](https://reader034.fdocuments.us/reader034/viewer/2022051816/546c3ba2b4af9f932c8b4ef6/html5/thumbnails/38.jpg)
Tot slot
• Bedankt!
• www.OWASP.org bevat veel informatie over deze en andere aanvallen.
• Voor vragen:• [email protected] • [email protected] .