Script alert 42

1,637 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,637
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Script alert 42

  1. 1. "><script>alert(42);</script> Magyar Attila @athoshun ELTE, 2011. 12. 01.
  2. 2. "><script>alert(42);</script> Információbiztonság általában Webes biztonság  Üzemeltetés  Fejlesztés További játszanivaló
  3. 3. Disclaimer Nem script-kiddie képző!!!
  4. 4. Információbiztonság általában Confidentality Integrity Availability Authenticity Non-repudiation Tudatos kockázatvállalás Leggyengébb láncszem
  5. 5. WWW
  6. 6. P0WN3D!
  7. 7. A kommunikáció támadása: MITM
  8. 8. HTTPS HTTP over SSL/TLS
  9. 9. A kiszolgáló támadása
  10. 10. Üzemeltetés Buffer overflow, 0-day exploit  DEP, ASLR  CVE (http://cve.mitre.org/) DoS, dDoS  Router, tűzfal, IDS WAF
  11. 11. Demó: debug mód
  12. 12. Debug mód Az éles rendszer ne a kimenetben teregesse ki a fejlesztőknek szóló hibaüzeneteket!
  13. 13. Demó: input validáció
  14. 14. Input validáció Az adat a felhasználótól érkezik
  15. 15. Input validáció Az adat a felhasználótól AZ ÖRDÖGTŐL érkezik
  16. 16. Demó: file inclusion
  17. 17. 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
  18. 18. Demó: file inclusion vs. user agent
  19. 19. 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
  20. 20. File inclusion Front Controller, routing, keretrendszerek, stb. A kereket már feltalálták!
  21. 21. Demó: file feltöltés
  22. 22. 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?
  23. 23. Demó: SQLi
  24. 24. SQLimysql_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;
  25. 25. 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);
  26. 26. SQLi :-D
  27. 27. Demó: SQLi, UNION
  28. 28. 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;--
  29. 29. 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)
  30. 30. A felhasználó támadása
  31. 31. Demó: CSRF
  32. 32. CSRF Alice-nek van élő munkamenet cookie-ja Bob webshopjától
  33. 33. 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
  34. 34. 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 :-)
  35. 35. 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
  36. 36. 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 :-)
  37. 37. Demó: XSS
  38. 38. 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()  ...
  39. 39. 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
  40. 40. Eszköztár Ami támadásra jó, az jó tesztelésre is:  netcat  tcpdump, Wireshark  nmap  JohnTheRipper  Nessus, OpenVAS  Metasploit  BeEF  BackTrack Linux
  41. 41. 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 :-)
  42. 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 ...
  43. 43. Példakódok, diák Kód: https://github.com/attilammagyar Diák: http://www.slideshare.net/athoshun
  44. 44.  „We only have to be lucky once. You will have to be lucky always.” (IRA)
  45. 45. ?
  46. 46. Köszönöm

×