Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking...

21
Az ASP.NET és a biztonság, avagy bízhatunk-e egy 10 éves platformban?

description

Ethical hacking the ASP.NET platform: session fixation, hacking the session and the authentication cookies, peeking into the viewstate, bypassing an event handler, clicking disabled and hidden buttons.

Transcript of Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking...

Page 1: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

Az ASP.NET és a biztonság, avagy bízhatunk-e egy 10 éves platformban?

Page 2: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

2

Bemutatkozás

Balássy GyörgyMSDN Kompetencia Központ

Microsoft regionális igazgató

ASP.NET MVP, MCTS

[email protected]

http://balassygyorgy.wordpress.com

Page 3: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

3

Platformszolgáltatások

• Állapotkezelés

• Hitelesítés

• Eseményvezérelt programozás

• Állapotmegőrzés

• …

• …

Page 4: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

4

Állapotkezelés

• SessionStateModule

– Session ID cookie-ban vagy URL-ben

– Független a hitelesítéstől!

Page 5: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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);

}

Page 6: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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

Page 7: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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' };

Page 8: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

8

Állapotkezelés hack #3 (folyt.)

• Session fixation: Működik!

• Védekezés:

– Egyedi session modul

– Egyedi előtét modul

Page 9: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

9

Űrlap alapú hitelesítés

• FormsAuthenticationModule

– Ticket cookie-ban vagy URL-ben

• Tárolás provider alapú

Page 10: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

10

Hitelesítés hack #1, #2

• Fejtsük vissza a cookie-t!

• Írjuk át a cookie-t!

• Nem működik!

Page 11: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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

Page 12: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

12

ViewState

• Űrlapok állapotának megőrzése

• Változás típusú események elsütése

Page 13: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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

Page 14: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

14

ViewState hack #2

• Hallgassuk le és küldjük vissza!

• Működik!

– Nem köti semmi felhasználóhoz

• Védekezés

Page 15: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

15

ViewState hack #3, #4

• Írjunk bele a ViewState-be!

• Állítsuk össze előre!

• Nem működik!

– HMACSHA256

– Szerver oldali titokkal

Page 16: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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?

Page 17: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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

Page 18: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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ó

Page 19: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

19

Összefoglalás

• Ne higgy vakon!

• Ne félj átírni, kiegészíteni a platform

szolgáltatásait!

Page 20: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

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)

Page 21: Az ASP.NET és a biztonság - avagy bízhatunk-e egy 10 éves platformban (Ethical Hacking konferencia 2010)

Köszönöm a figyelmet!