Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking...
-
Upload
gyoergy-balassy -
Category
Software
-
view
99 -
download
2
description
Transcript of Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking...
Az ASP.NET és a biztonság, avagy bízhatunk-e egy 10 éves platformban?
2
Bemutatkozás
Balássy GyörgyMSDN Kompetencia Központ
Microsoft regionális igazgató
ASP.NET MVP, MCTS
http://balassygyorgy.wordpress.com
3
Platformszolgáltatások
• Állapotkezelés
• Hitelesítés
• Eseményvezérelt programozás
• Állapotmegőrzés
• …
• …
4
Állapotkezelés
• SessionStateModule
– Session ID cookie-ban vagy URL-ben
– Független a hitelesítéstől!
5
Állapotkezelés hack #1
• Tippeljük meg a SessionID-t!
– Nem működik!
internal static string Create(ref RandomNumberGenerator randgen) { if (randgen == null) { randgen = new RNGCryptoServiceProvider();
} byte[] data = new byte[15];randgen.GetBytes(data);return Encode(data);
}
6
Állapotkezelés hack #2
• Szerezzük meg, küldjük vissza!
– XSS nem jó: HttpOnly
• Lehallgatással: Működik!
– Nincs titkosítva
• Védekezés:
– SessionID IP címhez, UserAgenthez kötése
– Egyedi session modul fejlesztése
– Egyedi előtét modul fejlesztése
7
Állapotkezelés hack #3
• Vegyük rá az áldozatot, hogy az általunk
adott SessionID-t használja.
private static string Encode(byte[] buffer){char[] chArray = new char[0x18];// ...
}
s_encoding = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm','n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5' };
8
Állapotkezelés hack #3 (folyt.)
• Session fixation: Működik!
• Védekezés:
– Egyedi session modul
– Egyedi előtét modul
9
Űrlap alapú hitelesítés
• FormsAuthenticationModule
– Ticket cookie-ban vagy URL-ben
• Tárolás provider alapú
10
Hitelesítés hack #1, #2
• Fejtsük vissza a cookie-t!
• Írjuk át a cookie-t!
• Nem működik!
11
Hitelesítés hack #3
• Hallgassuk le és küldjük vissza!
– XSS nem jó: HttpOnly
• Lehallgatással: működik!
– Nincs benne
eredet információ
• Védekezés
– Cookie manuálisan
– UserData beállítása
12
ViewState
• Űrlapok állapotának megőrzése
• Változás típusú események elsütése
13
ViewState hack #1
• Nézzünk bele a ViewState-be!
• Működik!
– Csak Base64
– Látszanak benne a rejtett vezérlők is
• Védekezés: titkosítás
– FormView, ListView, GridView, DetailsView
megteszi automatikusan
14
ViewState hack #2
• Hallgassuk le és küldjük vissza!
• Működik!
– Nem köti semmi felhasználóhoz
• Védekezés
15
ViewState hack #3, #4
• Írjunk bele a ViewState-be!
• Állítsuk össze előre!
• Nem működik!
– HMACSHA256
– Szerver oldali titokkal
16
ViewState hack #5
• Kapcsoljunk ki egy eseménykezelőt!
– Vegyük rá a szervert, hogy számunkra
kedvező ViewState-et állítson elő
• Működik!
– ViewState nem kötődik konkrét HTTP kérés-
válaszhoz
• Védekezés?
17
Eseménykezelés hack
• Nyomjunk meg egy kikapcsolt gombot!
• Működik!
– Enabled=false lehet rá POSTolni
– Visible=false event validation exception
• Hamisítsuk meg az __EVENTVALIDATION
mezőt is
18
One click támadás
• Vásároljunk más nevében!
• Működik!
– Perzisztens authN cookie visszaküldhető
– ViewState ismeretében gomb megnyomható
19
Összefoglalás
• Ne higgy vakon!
• Ne félj átírni, kiegészíteni a platform
szolgáltatásait!
20
ESET-rejtvénykérdés
• Milyen titkosítás van gyárilag a ViewState-
adatokon?
• Q: Feltörhetetlen!
• K: 3DES
• U: semmilyen
• Z: AES (leánykori nevén: Rijndael)
Köszönöm a figyelmet!