Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
2013.11.27.
1
Weboldalak biztonsága
Kertész Gábor
Óbudai Egyetem Alba Regia Egyetemi Központ
http://arek.uni-obuda.hu/~kerteszg
Mi a web?
• Gyakori tévedés: az internet és a web nem ugyanaz!
• Internet: világméretű hálózat
• Web: egy alkalmazás az interneten
• Tipikus használati formája: a böngészőn keresztül
2013.11.27.
2
Kis történelem
• 1991: Tim Berners-Lee, CERN
• Kutatók együttműködését segítő rendszer létrehozásának ötlete
– Hypertext
– Browser
– Server
2013.11.27.
3
2013.11.27.
4
Statikus oldalak
• A HTML kód a háttérben változatlan
• A tartalom módosításához a forrásfájlok szerkesztése szükséges
• Felhasználói interakció gyakorlatilag nincs
Statikus oldalak biztonsága
• Tömören: biztonságos
• A fájlok csak olvashatóak a weben keresztül
• A módosításhoz a kiszolgálóra való bejelentkezés szükséges
• A kiszolgáló operációs rendszere, fájlkiszolgálója, webkiszolgálója azonban mindig tartalmazhat hibát, amellyel hozzáférést biztosíthat jogosulatlanoknak
2013.11.27.
5
Dinamikus oldalak
• A webkiszolgáló megkapja a kérést, kikeresi a tárhelyén a kiszolgálandó dokumentumot
• A dokumentum azonban értelmezendő utasításokat tartalmazhat
• Ezt a programot futtatva áll elő a kiszolgálandó tartalom
• A böngésző és a felhasználó számára ez láthatatlan
PHP
• Personal Home Page Tools
• Szerver oldali általános scriptnyelv
2013.11.27.
6
Űrlapok feldolgozása
Adatbázisok a háttérben
• Felhasználói űrlapok direkt tárolása
• Tartalmak betöltése az adatbázisból
• Weblap online adminisztrációja
• Ki fér hozzá?
2013.11.27.
7
Dinamikus oldalak biztonságossága
• Tömören: biztonságos, ha a fejlesztő tudja a dolgát
• A program forrásfájljai nem elérhetőek a webről: mindig csak a futtatás eredményét kapja meg a böngésző, azaz a HTML oldalt
• Különlegesség, hogy a kiszolgáló szoftverei ezúttal az adatbázis kiszolgáló és az értelmező program is, bennük is lehet hiba
• Persze a programozó hibázhat, és hagyhat rést… de erről majd később
Hitelesítés, munkafolyam követés
• A web a tervezéséből adódóan olyan rendszer, amely nem követi, hogy kivel mi történt eddig
• TBL statikus dokumentum-kiszolgálásra fejlesztette ki, az autentikáció olyan funkció, amit utólag kellett beletenni
• Megoldás böngésző oldalról: süti – Apró szöveges állomány, amely minden kéréssel elküldődik a
kiszolgálónak, a feldolgozónyelv eléri a tartalmát.
• Szerver oldali megoldás: session – A süti elvére épül, azonban a böngészőben csak egy azonosító kerül
tárolásra, és ez az azonosító van továbbítva a szervernek. A szerveren az azonosítóhoz változók, értékek társíthatóak.
2013.11.27.
8
Ki a hiteles felhasználó?
• Adatbázis alapú hitelesítés, a webalkalmazás saját logikája alapján
• Hitelesítés a kiszolgáló saját felhasználói fiókjai alapján (HTTP protokoll sajátja)
A hitelesítés biztonságos?
• Süti: önmagában különleges megoldás, a tartalmak a számítógépen vannak tárolva. Mindenki, aki a számítógépet használja, potenciálisan hozzáférhet az állományokhoz… nem érdemes jelszavakat, felhasználói információkat tárolni benne.
• Session: alapjaiban biztonságosnak hihető, hiszen az adatok a kiszolgálón tároltak. De! Az azonosítót a böngésző küldi, és sütiben tárolja: sütilopás, sessionlopás
2013.11.27.
9
Dinamikus kód a böngészőben
• JavaScript
• Brendan Eich nevű fiatalember alkotta meg a 90-es évek közepén, mindössze 10 nap alatt!
• Ártalmas kódok, gyors halál, majd 2002 körül újra feltűnt
• A mai weboldalak nem tudnak létezni nélküle
• AJAX
• Web 2.0
Web 2.0
• Tim O’Reilly tollából
• Olyan alkalmazások, ahol a tartalmakat a felhasználó szolgáltatja, nem a webszerkesztő. Technikai ismeretekre nincs szükség
• Facebook, Youtube, Wikipedia, Twitter, Tumblr, Blogok, Amazon, eBay, stbstb
2013.11.27.
10
JavaScript kódok biztonsága
• Tömören: kicsit sem biztonságos!
• A kódok a HTML forrásában vannak, komolyabb technikai tudás nélkül is olvashatóak ezek
• Kis ügyeskedéssel módosíthatóak…
• Ha hitelesítés, vagy tartalom validálása van a kliens-oldalon végezve, akkor kellemetlen tapasztalataink lehetnek
• A böngészők különféle szinteken támogatják a nyelvet, lehet, hogy nem ugyanazt a viselkedést produkálja(!)
2013.11.27.
11
Támadási, betörési módok
• Hálózat hiányosságaira alapozott
• Ember-alapú módszerek
• Technológia hibáját kihasználó módszer
• A szolgáltatás elérését korlátozó módszerek
• Programozó hibájából eredő veszélyek
Hálózat hiányosságaira alapozott
• Man in the middle
– A vonal lehallgatása, a bejelentkezési információk ellopása
– A vonal lehallgatása, az átmenő utasítások, és a visszaadott oldalak módosítása
• Megoldás:
– Titkosítás, digitális aláírás, csomagok ellenőrző számmal
2013.11.27.
12
Ember-alapú módszerek
• Social engineering
– Emberek bizalmára alapozott információszerzés
– E-mail jelszó a szolgáltatótól
• Shoulder Surfing
– Dumpster Diving
• Ál-oldalak
– Az eredetivel megegyező kinézetű, de más viselkedésű oldalak, amelyek esetleg tárolják a belépési infokat
• Phishing
– Megtévesztő e-mail címről küldött üzenetek, amelyek vagy hivatkozásra kattintást , vagy választ várnak
Technológia hibáját kihasználó módszer
• Exploit
– Egy biztonsági rés hibáját kiaknázó program
– Vírus, trójai faló
– Gyakori hibák helye az operációs rendszer, a kiszolgáló vagy az adatbázis
• Megoldás
– Patch, hivatalos frissítés, javítás
• JavaScript-beli hiba
– Rosszindulatú kódok jogosulatlanul elérhetnek privát információkat
– Böngészőfrissítés szükséges!
2013.11.27.
13
A szolgáltatás elérését korlátozó módszerek
• Pingflood – A kiszolgálót egy adott típusú kéréssel leterheli az ügyfél, aki
képtelen lesz felelni, és leszakad a hálózatról
• DOS – Denial Of Service, szolgáltatásmegtagadás
– Kiszolgáló terhelése többféle kéréssel, netán általános de gyakori kérésekkel, hogy nehezebben legyen kiszűrhető
• Distributed DOS – Elosztott szolgáltatásmegtagadás
– Sok gép által, együttesen indított támadás
– Botnet
– Nagyon elterjedt, még a nagyok is nehezen „élik túl”
• És persze az emberi tényező: a szerver áramellátásának vagy a kapcsolatának szabotálása
Programozó hibájából eredő veszélyek
• SQL Injection
– Adatbázis utasítások módosítása a beviteli űrlapon keresztül
– SQL utasítás módosítása, és a viselkedés alapjaiban megváltozik
2013.11.27.
14
Programozó hibájából eredő veszélyek
• XSS
– Cross Site Scripting
– Beviteli mezőn bevitt tartalom valójában JavaScript kód, amely betöltéskor lefut
– Védekezés? Ha a programozó nem tette meg, és a felhasználó belefut, akkor nehézkes
• NoScript
Webes biztonság
• A támadások általánosságban összetettek, több módszert alkalmaznak
• Hazai kötődésű mintapélda: chat.hu jelszólopás XSS-résen keresztül, ál-oldallal http://www.youtube.com/watch?v=sXsX0hqnLA0
2013.11.27.
15
Köszönöm a figyelmet!
E-mail: [email protected]
Web: http://arek.uni-obuda.hu/~kerteszg