Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kolik webových útoků znáš...

1,860 views

Published on

Každý rok se objeví několik desítek nových typů útoků a hackovacích technik na webové aplikace. V loňském roce jich bylo popsáno 31, pojďme si některé nové i starší útoky představit.

Published in: Technology
  • Be the first to comment

Kolik webových útoků znáš...

  1. 1. Michal Špaček | www.michalspacek.cz | @spazef0rze Kolik webových útoků znáš, tolikrát jsi agentem Slajdy obsahují poznámky nejen pro ty, kteří na přednášce nebyli. The Matrix Reloaded © 2003 Warner Bros.
  2. 2. OWASP Top 10 The Open Web Application Security Project www.owasp.org http://hqscreen.com/comics-the-wasp-wallpaper-54781/ Organizace OWASP každé tři roky sestavuje hitparádu nejčastějších webových útoků, o kterých by měl mít ponětí každý, kdo se o webovou bezpečnost aspoň trochu zajímá. OWASP kromě této hitparády také ukazuje, jak se takovým útokům bránit, jejich web tedy stojí minimálně za prozkoumání.
  3. 3. OWASP Top 103 2007 1. Cross Site Scripting (XSS) ↑ 2. Injection Flaws (SQL Injection) ↑ 3. Malicious File Execution (RFI) ← První tři místa z Top 10 2007 vypadala takto. Útoky XSS i SQL Injection si od předchozího vydání v roce 2004 polepšily, Útok RFI (Remote File Inclusion) byl v hitparádě novinkou.
  4. 4. OWASP Top 103 2010 1. Injection (SQL, OS, LDAP) ↑ 2. Cross Site Scripting (XSS) ↓ 3. Broken Auth and Session Management ↑ V roce 2010 se pořadí na prvních třech příčkách trochu proházelo. SQL Injection a podobné útoky se dostávají do vedení, útok XSS si pohoršil a nově se v první trojce objevují útoky, které se dotýkají sessions (např, Session Hijacking, Session Fixation).
  5. 5. OWASP Top 103 2013 1. Injection (SQL, OS, LDAP) ↨ 2. Broken Auth and Session Management ↑ 3. Cross Site Scripting (XSS) ↓ Injection útoky (SQL Injection apod.) vedou hitparádu i v roce 2013, ale útoky týkající se sessions a přihlašování si vyměňují příčku s Cross Site Scriptingem. Žádná velká změna, nicméně opakování je matka moudrosti, pojďme si tedy SQL Injection a XSS znovu ukázat.
  6. 6. SQL Injection http://dilanwarnakulasooriya.wordpress.com/2012/01/05/sql-injections-and-webscarab/
  7. 7. SQL Injection „NT Web Technology Vulnerabilities“ Rain Forest Puppy (Jeff Forristal) Phrack Magazine 1998 http://www.phrack.org/issues/54/8.html phone.asp?name=rfp' select * from table1 -- Útok SQL Injection veřejně popsal Jeff Forristal vystupující pod přezdívkou Rain Forest Puppy (zkráceně rfpuppy apod.) v článku o webových zranitelnostech Windows NT pro Phrack Magazine již v roce 1998, tenkrát ještě jako bezejmenný útok.
  8. 8. ' OR 1=1; -- Útok spočívá v modifikaci SQL dotazů, které aplikace posílá databázovému serveru. Pokud aplikace z kamer měřících rychlost bude tento útok umožňovat, tak řidič vozu s touhle značkou pravděpodobně pokutu za rychlou jízdu v měřeném úseku nikdy nedostane.
  9. 9. SELECT jmeno, adresa FROM vozidla WHERE rz = '$prectena'; Kód zranitelné aplikace, která automaticky pošle pokutu tomu, kdo pod kamerami projel rychleji, než je povoleno, může vypadat zjednodušeně třeba takto. V proměnné $prectena je přečtená značka z auta (uživatelský vstup) a je jednoduše přímo vložena do SQL dotazu.
  10. 10. SELECT jmeno, adresa FROM vozidla WHERE rz = '1AM 1337'; 1AM 1337 Takto vypadá dotaz odeslaný z aplikace na databázový server, když pod kamerou rychle projede 1337 řidič vozu registrovaného v Praze. Za pár dní dostane poštou hezký pozdrav.
  11. 11. SELECT jmeno, adresa FROM vozidla WHERE rz = '' OR 1=1; --'; ' OR 1=1; -- V případě, že kamera přečte tuhle značku, pak pokutu dostanou všichni majitelé vozů, v lepším případě jenom ten první, ale rozhodně ne ten, kdo to auto řídil nebo vlastní. Podmínce 1=1 vyhoví všechny záznamy a zbytek dotazu je zakomentován (pomocí --).
  12. 12. Když aplikace pro práci s databází používá knihovnu, která umožňuje posílat více příkazů oddělených středníkem naráz, je možné čarovat. Pokud k tomu čaroděj má patřičná práva.
  13. 13. SELECT jmeno, adresa FROM vozidla WHERE rz = ?; ' OR 1=1; -- Prepared Statements Jak se správně bránit proti útoku SQL Injection? Už konečně zapomeňte na nějaké escapování a používejte raději prepared statements a vázání proměnných, které oddělují dotaz od dat (uživatelského vstupu), takže z těch dat není možné dotaz již zpětně ovlivnit.
  14. 14. Cross Site Scripting (XSS) „Script Injection“ David Ross, Microsoft, 1999 Veřejně: http://ha.ckers.org/cross-site-scripting.html <a href=”form.asp?id=<script src=’evilscript.js’></script>”>…<a> Cross Site Scripting poprvé popsal David Ross z Microsoftu v roce 1999 v jednom interním dokumentu a nazval ho Script Injection. V roce 2000 útok dostal nové jméno a upravený text Davida Rosse byl vydán veřejně. Dnes najdete jeho kopii na serveru ha.ckers.org.
  15. 15. Jedna z variant XSS vypadá například takto. To slovo Scripting v názvu je ale trochu zavádějící, do stránky je totiž možné vložit jakýkoliv kousek HTML kódu, třeba obrázek.
  16. 16. < → &lt; > → &gt; " → &quot; ' → &apos; & → &amp; Princip obrany proti XSS spočívá v převádění nebezpečných znaků na entity. Nejlepší je tuto práci přenechat nějakému šablonovacímu systému, který to bude dělat automaticky. Takovou ochranu je vhodné doplnit např. HTTP hlavičkou Content-Security-Policy.
  17. 17. 2013 … Webová bezpečnost ale není jenom o hitparádě OWASP Top 10, SQL Injection a XSS. Každý rok se objeví pár desítek nových webových hackovacích technik a typů útoků.
  18. 18. 2013 … 31 V roce 2013 jich bylo veřejně popsáno 31.
  19. 19. 2012 … 56 2011 … 51 2010 … 59 2009 … 82 V předchozích letech byla úroda dokonce ještě bohatší. Například v roce 2009 bylo veřejně popsáno 82 nových hackovacích technik a útoků proti webovým aplikacím.
  20. 20. Cross-Site Port Attack XSPA, 2012 Jeden z těch jednodušších na vysvětlení je třeba útok XSPA, který byl popsán v roce 2012.
  21. 21. Spočívá v tom, že některé servery (MySQL, SSH) zobrazují ihned po připojení nějaký pozdrav i přesto, že se k nim připojíte protokolem, kterému nerozumí. Útočník takto může maskovat svoji identitu a IP adresu nebo prozkoumávat služby, na které se jinak nepřipojí.
  22. 22. STOP! DEMO TIME!
  23. 23. Takto se dala zjistit verze nějakého SSH serveru pomocí XSPA. Na server scanme.nmap.org se ve skutečnosti připojil W3C validátor, který skryl útočníkovu adresu.
  24. 24. XML External Entities XXE, 2002 http://www.altova.com/list/xml-dev/200206/msg1000183549.html V roce 2013 se hodně hovořilo o útoku XXE, ačkoliv byl poprvé popsán již v roce 2002. Jeho popularitě pomohlo také to, že Facebook za nalezení zranitelnosti XXE na svých serverech vyplatil dosud největší odměnu za nalezení bezpečnostní chyby – $33500.
  25. 25. <?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY victim SYSTEM "http://…"> ]> <foo> &victim; </foo> Útok XXE spočívá ve zneužití vlastnosti XML, která dovoluje parseru načítat definice entit z lokálních ale i vzdálených souborů. Použití entity &victim; výše vyvolá požadavek na vzdálený server a skryje identitu útočníka nebo naopak prozradí IP adresu XML parseru.
  26. 26. <!ENTITY victim SYSTEM 'php://filter/read=convert.base64-encode/resource=/etc/passwd' > http://www.sensepost.com/blog/10178.html Při čtení lokálních i vzdálených souborů je třeba dávat pozor na to, aby jejich obsah bylo validní XML. Programovací jazyky nám k tomu naštěstí poskytují nástroje, kterými to lze zajistit. Na uvedené adrese je ukázka, jak lze XXE zneužít ke vzdálenému spuštění kódu.
  27. 27. Lucky 13 CBC-mode encryption v TLS Ochrana? RC4! V roce 2013 se hodně pozornosti věnovalo soukromí, odposlechům a také protokolu TLS. Bylo popsáno několik útoků, kromě již poměrně známého BREACH to byl např. útok Lucky 13, což je v podstatě timing side channel útok na samotnou TLS specifikaci. Jako jedno z řešení se nabízí přestat používat šifry v režimu CBC a přejít na algoritmus RC4. http://www.isg.rhul.ac.uk/tls/Lucky13.html
  28. 28. Zranitelnosti RC4 Získání části původních dat Ochrana? CBC-mode! (Viz Lucky 13) Fajn, jenže ti samí lidé nalezli problém i v RC4, díky kterému je možné získat část původních nezašifrovaných dat. Jedno z řešení je místo RC4 použít šifry v CBC režimu. http://www.isg.rhul.ac.uk/tls/
  29. 29. Řešení TLS 1.2 + AES-GCM Galois/Counter Mode Tohle kolečko RC4↔CBC má naštěstí pořádné řešení a tím je TLS 1.2 a nové AEAD šifry, jako např. AES-GCM, kterou podporují prohlížeče Chrome 31, Firefox 27, IE11 a novější.
  30. 30. Django Auth Denial-of-Service PBKDF2 Zajímavostí objevenou v roce 2013 je například to, že webový framework Django sice správně pro ukládání hesel používá PBKDF2, ale nijak neomezoval délku těch hesel a tak když mu někdo poslal heslo dlouhé milion znaků, tak ho Django ověřoval minutu a když to někdo udělal několikrát naráz, tak server jen ověřoval špatná hesla a přestal odpovídat. Django nastavilo horní limit délky hesla na 4096 znaků, ale asi by bohatě stačilo i 1024. https://www.djangoproject.com/weblog/2013/sep/15/security/
  31. 31. Autocomplete CSS Hack Pomocí automatického doplňování formulářů a skrytých polí je možné od uživatele bez jeho vědomí vytáhnout mnohem více dat, např. jeho adresu a jméno při zadávání e-mailu. Zkuste si to třeba v Chrome. I tenhle jednoduchý útok byl popsán v roce 2013. https://yoast.com/research/autocompletetype.php
  32. 32. Michal Špaček www.michalspacek.cz @spazef0rze https://blog.whitehatsec.com/ top-10-web-hacking-techniques-2013/ Všechny útoky zveřejněné v roce 2013 a odkazy na seznamy z předchozích let najdete na:

×