46
"><script>alert(42);</script> Magyar Attila @athoshun ELTE, 2011. 12. 01.

Script alert 42

Embed Size (px)

Citation preview

Page 1: Script alert 42

"><script>alert(42);</script>

Magyar Attila @athoshun

ELTE, 2011. 12. 01.

Page 2: Script alert 42

"><script>alert(42);</script>

Információbiztonság általában Webes biztonság

Üzemeltetés Fejlesztés

További játszanivaló

Page 3: Script alert 42

Disclaimer

Nem script-kiddie képző!!!

Page 4: Script alert 42

Információbiztonság általában

Confidentality Integrity Availability Authenticity Non-repudiation Tudatos kockázatvállalás Leggyengébb láncszem

Page 5: Script alert 42

WWW

Page 6: Script alert 42

P0WN3D!

Page 7: Script alert 42

A kommunikáció támadása: MITM

Page 8: Script alert 42

HTTPS

HTTP over SSL/TLS

Page 9: Script alert 42

A kiszolgáló támadása

Page 10: Script alert 42

Üzemeltetés

Buffer overflow, 0-day exploit DEP, ASLR CVE (http://cve.mitre.org/)

DoS, dDoS Router, tűzfal, IDS

WAF

Page 11: Script alert 42

Demó: debug mód

Page 12: Script alert 42

Debug mód

Az éles rendszer ne a kimenetben teregesse ki a fejlesztőknek szóló hibaüzeneteket!

Page 13: Script alert 42

Demó: input validáció

Page 14: Script alert 42

Input validáció

Az adat a felhasználótól érkezik

Page 15: Script alert 42

Input validáció

Az adat a felhasználótól AZ ÖRDÖGTŐL érkezik

Page 16: Script alert 42

Demó: file inclusion

Page 17: Script alert 42

File inclusion

GET /?page=../logs/access.log HTTP/1.1

$page = 'pages/' . $_GET['page'];if (!is_file($page)) $page = 'pages/default.php';

include $page;// include 'pages/../logs/access.log'

Page 18: Script alert 42

Demó: file inclusion vs. user agent

Page 19: Script alert 42

File inclusion

GET /?page=../logs/access.log HTTP/1.1

$page = 'pages/' . $_GET['page'];if (!is_file($page)) $page = 'pages/default.php';

include $page;// include 'pages/../logs/access.log'

Page 20: Script alert 42

File inclusion

Front Controller, routing, keretrendszerek, stb. A kereket már feltalálták!

Page 21: Script alert 42

Demó: file feltöltés

Page 22: Script alert 42

File feltöltés

Nagyon veszélyes! Validáció tartalom alapján, a HTTP kérés

hamisítható! EXIF fejlécben meglepetés?

Kovertáljunk! (Ésszel!) Bütykölt kép file 100000x100000-es mérettel a

fejlécben? Bütykölt kép file exploittal?

Page 23: Script alert 42

Demó: SQLi

Page 24: Script alert 42

SQLi

mysql_query( "SELECT * FROM users WHERE" . " name='$name' AND password='$password';");

// $name = "admin"// $password = "a' OR '1'='1"//// SELECT * FROM users WHERE// name='admin' AND password='a' OR '1'='1';

Page 25: Script alert 42

SQLi

Prepared statement! (SQL quote-olás/escape-elés)

$stmt = $pdo->prepare( "SELECT * FROM users" . " WHERE name=:name AND password=:password;");

$stmt->bindParam(':name', $name);$stmt->bindParam(':password', $password);

Page 26: Script alert 42

SQLi :-D

Page 27: Script alert 42

Demó: SQLi, UNION

Page 28: Script alert 42

SQLi, UNION

http://vulnshop.localhost:8085/?page=product.php&id=42

/?page=product.php&id=' UNION SELECT 111,CONCAT(name,':',password),333,444 FROM users WHERE name='admin';--

Page 29: Script alert 42

Jelszavak tárolása

Ellenőrzéshez elég a jelszó egy hash-e (kriptográfiai hash, pl. SHA-1)

Születésnap-paradoxon Rainbow table Saltolás!

$hash = sha1($password . $salt); $hash = sha1($password . $name . $salt)

Page 30: Script alert 42

A felhasználó támadása

Page 31: Script alert 42

Demó: CSRF

Page 32: Script alert 42

CSRF

Alice-nek van élő munkamenet cookie-ja Bob webshopjától

Page 33: Script alert 42

CSRF

Alice-nek van élő munkamenet cookie-ja Bob webshopjától

Alice pl. egy facebook üzenetben lévő linket követve megnyitja Mallory weboldalát

Page 34: Script alert 42

CSRF

Alice-nek van élő munkamenet cookie-ja Bob webshopjától

Alice pl. egy facebook üzenetben lévő linket követve megnyitja Mallory weboldalát

Mallory JavaScriptjei a cookie-t same origin policy miatt nem látják :-)

Page 35: Script alert 42

CSRF

Alice-nek van élő munkamenet cookie-ja Bob webshopjától

Alice pl. egy facebook üzenetben lévő linket követve megnyitja Mallory weboldalát

Mallory JavaScriptjei a cookie-t same origin policy miatt nem látják, AJAX sem megy :-)

De űrlapot POST-olni tudnak Bob webshopjának! :-( A böngészőnek a cél domainhez tartozó cookie-kat

is küldenie kell Bob webshopja érvényes munkamenet cookie-val

érvényes POST kérést kap Alice böngészőjétől

Page 36: Script alert 42

CSRF token

Követeljünk meg egy azonosítót minden HTTP kérésben a session cookie-n kívül is, a kérés törzsében!

Pl. minden formban egy „kellőképpen” véletlenszerűen generált token, amit a szerveroldal a munkamenetben is tárol

Egy HTTP kérés feldolgozása a token ellenőrzésével kezdődik

Mallory JavaScriptjei nem tudják a CSRF tokent megszerezni, a same origin policy miatt :-)

Page 37: Script alert 42

Demó: XSS

Page 38: Script alert 42

XSS

A beinjektált HTML/JS kóddal a támadó (szinte) bármit megtehet, amit az oldalt betöltő felhasználó

Böngészők XSS filterei nem sokat érnek A view rétegben a view rétegnek megfelelő

quote-olás kell! htmlspecialchars(), htmlentities() urlencode() json_encode() ...

Page 39: Script alert 42

XSS: BeEF

http://beefproject.com Ha már benn van a vállalati intranetben egy

XSS, idő kérdése, míg egy kliens ugróponttá válik

Page 40: Script alert 42

Eszköztár

Ami támadásra jó, az jó tesztelésre is: netcat tcpdump, Wireshark nmap JohnTheRipper Nessus, OpenVAS Metasploit BeEF BackTrack Linux

Page 41: Script alert 42

Olvasnivaló

OWASP: https://www.owasp.org OWASP Top10

BuheraBlog: http://buhera.blog.hu BalaBit OpenAcademy 2011. májusi előadása:

http://youtu.be/CoCItL3cMPU

Hacktivity: https://hacktivity.com Wargame: http://www.hackthissite.org/ GIYF: Google Is Your Friend :-)

Page 42: Script alert 42

Ami kimaradt

Spam (CAPTCHA) Clickjacking Apache/mod_rewrite és társai REST, egyéb API megvalósítások

Miért kezdődik a GMail minden AJAX válasza így? while(1); ###START###

Social engineering Böngésző pluginek, böngésző bugok ...

Page 43: Script alert 42

Példakódok, diák

Kód: https://github.com/attilammagyar Diák: http://www.slideshare.net/athoshun

Page 44: Script alert 42

„We only have to be lucky once. You will have to be lucky always.” (IRA)

Page 45: Script alert 42

?

Page 46: Script alert 42

Köszönöm