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

Script alert 42

May 06, 2015

Download

Technology

Attila Magyar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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