SlideShare a Scribd company logo
1 of 34
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.
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í.
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.
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).
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.
SQL Injection
http://dilanwarnakulasooriya.wordpress.com/2012/01/05/sql-injections-and-webscarab/
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.
' 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.
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.
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.
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í --).
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.
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.
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.
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.
< → &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.
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ů.
2013 … 31
V roce 2013 jich bylo veřejně popsáno 31.
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.
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.
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í.
STOP! DEMO TIME!
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.
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.
<?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.
<!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.
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
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/
Ř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ší.
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/
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
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:

More Related Content

What's hot

Poučte se z cizích chyb
Poučte se z cizích chybPoučte se z cizích chyb
Poučte se z cizích chybMichal Špaček
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)Michal Špaček
 
WebTop100 Technické chyby, výkon a bezpečnost
WebTop100 Technické chyby, výkon a bezpečnostWebTop100 Technické chyby, výkon a bezpečnost
WebTop100 Technické chyby, výkon a bezpečnostMichal Špaček
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingMichal Špaček
 
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Michal Špaček
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníMichal Špaček
 
Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Michal Špaček
 
Bezpečnost na webu
Bezpečnost na webuBezpečnost na webu
Bezpečnost na webuMiloš Janda
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všudeMichal Špaček
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchMichal Špaček
 
Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)wcsk
 
WordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security czWordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security czpeter_sucuri
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůVladimír Smitka
 
HTTPS zdarma a pro všechny - LinuxDays 2015
HTTPS zdarma a pro všechny - LinuxDays 2015HTTPS zdarma a pro všechny - LinuxDays 2015
HTTPS zdarma a pro všechny - LinuxDays 2015tomashala
 

What's hot (20)

Poučte se z cizích chyb
Poučte se z cizích chybPoučte se z cizích chyb
Poučte se z cizích chyb
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)
 
Hashování hesel
Hashování heselHashování hesel
Hashování hesel
 
WebTop100 Technické chyby, výkon a bezpečnost
WebTop100 Technické chyby, výkon a bezpečnostWebTop100 Technické chyby, výkon a bezpečnost
WebTop100 Technické chyby, výkon a bezpečnost
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketing
 
Zabezpečení Slevomatu
Zabezpečení SlevomatuZabezpečení Slevomatu
Zabezpečení Slevomatu
 
Přechod na HTTPS
Přechod na HTTPSPřechod na HTTPS
Přechod na HTTPS
 
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
 
Hlava není na hesla
Hlava není na heslaHlava není na hesla
Hlava není na hesla
 
Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)
 
Bezpečnost na webu
Bezpečnost na webuBezpečnost na webu
Bezpečnost na webu
 
Zapomeňte vaše hesla
Zapomeňte vaše heslaZapomeňte vaše hesla
Zapomeňte vaše hesla
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všude
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeních
 
Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)
 
WordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security czWordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security cz
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webů
 
HTTPS zdarma a pro všechny - LinuxDays 2015
HTTPS zdarma a pro všechny - LinuxDays 2015HTTPS zdarma a pro všechny - LinuxDays 2015
HTTPS zdarma a pro všechny - LinuxDays 2015
 
Total Cost of Pwnership
Total Cost of PwnershipTotal Cost of Pwnership
Total Cost of Pwnership
 

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

Nejčastější webové zranitelnosti
Nejčastější webové zranitelnostiNejčastější webové zranitelnosti
Nejčastější webové zranitelnosticCuMiNn
 
OCHRANA PŘED POKROČILÝMI FORMAMI MALWARE
OCHRANA PŘED POKROČILÝMI FORMAMI MALWAREOCHRANA PŘED POKROČILÝMI FORMAMI MALWARE
OCHRANA PŘED POKROČILÝMI FORMAMI MALWAREAlena Zalejská
 
Ochrana proti Zero Day útokům typu WannaCry a Petya
Ochrana proti Zero Day útokům typu WannaCry a PetyaOchrana proti Zero Day útokům typu WannaCry a Petya
Ochrana proti Zero Day útokům typu WannaCry a PetyaMarketingArrowECS_CZ
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)Michal Taborsky
 
5was 100524062135-phpapp02
5was 100524062135-phpapp025was 100524062135-phpapp02
5was 100524062135-phpapp02simon680
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceVladimír Smitka
 
McAfee Adaptive threat intelligence i ve virtuálním prostředí
McAfee Adaptive threat intelligence i ve virtuálním prostředí McAfee Adaptive threat intelligence i ve virtuálním prostředí
McAfee Adaptive threat intelligence i ve virtuálním prostředí MarketingArrowECS_CZ
 
Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Kuba Břečka
 
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]Vítězslav Šimon
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyVladimír Smitka
 
Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita Jaroslav Jacjuk
 
Symantec Advanced Threat Protection
Symantec Advanced Threat ProtectionSymantec Advanced Threat Protection
Symantec Advanced Threat ProtectionMarketingArrowECS_CZ
 
Malware Houdiny
Malware HoudinyMalware Houdiny
Malware HoudinyCESNET
 

Similar to Kolik webových útoků znáš... (20)

Nejčastější webové zranitelnosti
Nejčastější webové zranitelnostiNejčastější webové zranitelnosti
Nejčastější webové zranitelnosti
 
OCHRANA PŘED POKROČILÝMI FORMAMI MALWARE
OCHRANA PŘED POKROČILÝMI FORMAMI MALWAREOCHRANA PŘED POKROČILÝMI FORMAMI MALWARE
OCHRANA PŘED POKROČILÝMI FORMAMI MALWARE
 
Ochrana proti Zero Day útokům typu WannaCry a Petya
Ochrana proti Zero Day útokům typu WannaCry a PetyaOchrana proti Zero Day útokům typu WannaCry a Petya
Ochrana proti Zero Day útokům typu WannaCry a Petya
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)
 
5was 100524062135-phpapp02
5was 100524062135-phpapp025was 100524062135-phpapp02
5was 100524062135-phpapp02
 
Web Application Scanning (WAS)
Web Application Scanning (WAS)Web Application Scanning (WAS)
Web Application Scanning (WAS)
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konference
 
McAfee Adaptive threat intelligence i ve virtuálním prostředí
McAfee Adaptive threat intelligence i ve virtuálním prostředí McAfee Adaptive threat intelligence i ve virtuálním prostředí
McAfee Adaptive threat intelligence i ve virtuálním prostředí
 
Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
2010 Web Technologie 1
2010 Web Technologie 12010 Web Technologie 1
2010 Web Technologie 1
 
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
ASP.NET MVC 3 and SQL Server interoperability overview [CZ]
 
QualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WASQualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WAS
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránky
 
Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita
 
TNPW2-2011-08
TNPW2-2011-08TNPW2-2011-08
TNPW2-2011-08
 
Symantec Advanced Threat Protection
Symantec Advanced Threat ProtectionSymantec Advanced Threat Protection
Symantec Advanced Threat Protection
 
Malware Houdiny
Malware HoudinyMalware Houdiny
Malware Houdiny
 
WAS 2.0 (2011)
WAS 2.0 (2011)WAS 2.0 (2011)
WAS 2.0 (2011)
 

More from Michal Špaček

Lámání a ukládání hesel
Lámání a ukládání heselLámání a ukládání hesel
Lámání a ukládání heselMichal Špaček
 
Fantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v OpeřeFantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v OpeřeMichal Špaček
 
Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseMichal Špaček
 
Disclosing password hashing policies
Disclosing password hashing policiesDisclosing password hashing policies
Disclosing password hashing policiesMichal Špaček
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in ITMichal Špaček
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionMichal Špaček
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyMichal Špaček
 
The problem with the real world
The problem with the real worldThe problem with the real world
The problem with the real worldMichal Špaček
 
Defense in Depth Web Inkognito 12/2013
Defense in Depth Web Inkognito 12/2013Defense in Depth Web Inkognito 12/2013
Defense in Depth Web Inkognito 12/2013Michal Špaček
 
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013Michal Špaček
 

More from Michal Špaček (11)

Lámání a ukládání hesel
Lámání a ukládání heselLámání a ukládání hesel
Lámání a ukládání hesel
 
Fantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v OpeřeFantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v Opeře
 
Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of Defense
 
Disclosing password hashing policies
Disclosing password hashing policiesDisclosing password hashing policies
Disclosing password hashing policies
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in IT
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English version
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and why
 
HTTP/2
HTTP/2HTTP/2
HTTP/2
 
The problem with the real world
The problem with the real worldThe problem with the real world
The problem with the real world
 
Defense in Depth Web Inkognito 12/2013
Defense in Depth Web Inkognito 12/2013Defense in Depth Web Inkognito 12/2013
Defense in Depth Web Inkognito 12/2013
 
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
 

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

  • 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. 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. 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. 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. 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.
  • 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. ' 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. 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. 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. 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. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17.
  • 18. < → &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.
  • 19. 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ů.
  • 20. 2013 … 31 V roce 2013 jich bylo veřejně popsáno 31.
  • 21. 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.
  • 22. 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.
  • 23. 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í.
  • 25. 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.
  • 26. 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.
  • 27. <?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.
  • 28. <!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.
  • 29. 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
  • 30. 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/
  • 31. Ř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ší.
  • 32. 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/
  • 33. 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