O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

網站程式資安白箱與黑箱檢測處理經驗分享

20.701 visualizações

Publicada em

網路應用程式資安掃描,白箱檢測與黑箱檢測介紹,
弱點修補方式參考

漏洞修補範例程式
https://github.com/jiun-jeng/SampleSafeWebapp

不安全網站程式範例
https://github.com/jiun-jeng/SampleUnSafeWebapp

Publicada em: Tecnologia
  • Login to see the comments

網站程式資安白箱與黑箱檢測處理經驗分享

  1. 1. 網站程式資安白箱與黑箱檢測 處理經驗分享 凌網科技 鄭穎駿 jiun.9023510@gmail.com
  2. 2. 大綱 網站程式資安的重要性 常見網站程式弱點 白箱檢測 ◦ 介紹與操作說明 ◦ 實機檢測Demo ◦ 報告解讀與修補建議 黑箱檢測 ◦ 介紹與操作說明 ◦ 報告解讀與修補建議 結語 Q&A 1
  3. 3. 課程目標 希望與課者能透過本課程 ◦ 了解常見網站程式弱點 ◦ 了解白箱檢測軟體使用方式與報告解讀 ◦ 了解白箱檢測修補方式 ◦ 了解黑箱檢測軟體使用方式與報告解讀 ◦ 了解黑箱檢測修補方式 提供與課者資安修補參考程式 2
  4. 4. 網站程式資安的重要性 Heartland ◦ Date: March, 2008 ◦ Impact: 134 million credit cards exposed through SQL injection to install spyware on Heartland's data systems. Sony ◦ Date: April 20, 2011 ◦ Impact: 77 million PlayStation Network accounts hacked; Sony is said to have lost millions while the site was down for a month. ESTsoft ◦ Date: July-August, 2011 ◦ Impact: The personal information of 35 million South Koreans was exposed after hackers breached the security of a popular software provider. AOL ◦ Date: August 6, 2006 ◦ Impact: Data on more than 20 million web inquiries, from more than 650,000 users, including shopping and banking data were posted publicly on a web site. 3
  5. 5. 網站程式資安的重要性 網站資安漏洞造成 ◦ 商譽損失 ◦ 賠償問題 ◦ 網站停擺 隨著網際網路、線上交易的發展,網站 安全更受重視, 影響的層面也更大 4
  6. 6. 網站程式資安的重要性 網站資安牽涉軟體、硬體、人員管控等多個環節 本課程著墨於網站程式透過白箱與黑箱檢測尋找弱 點並進行修補 5圖片來源:http://www.elec-intro.com/EX/05-15-18/tech_large.jpg
  7. 7. 常見網站程式弱點 網頁應用程式弱點的最新消息發布及更新 ◦ OWASP (https://www.owasp.org) 開放社群,目前大多的檢測工具都已經將 OWASP Top 10 列為基本的檢測項目。 ◦ WASC (http://www.webappsec.org) 將網站的安全威脅進行分類,共分成 34 種威脅。 ◦ CWE/SANS (https://cwe.mitre.org) CWE/SANS Top 25 由 MITRE 和 SANS 合作,共同發布網 頁應用程式前25大的威脅。 6
  8. 8. 常見網站程式弱點 http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202013.pdf 7 指令注入 身分驗證功能缺失 跨站腳本攻擊 不安全的物件檔案參考 安全性設定疏失 機密資料外洩 未進行函式存取控管 跨站冒名請求 未驗證的導向 使用不安全元件
  9. 9. 常見網站程式弱點 http://projects.webappsec.org/f/WASS-SS-2008.pdf 8
  10. 10. 常見網站程式弱點 https://cwe.mitre.org/top25/#Guidance 9
  11. 11. 常見網站程式弱點 SQL Injection ◦ 惡意的 SQL 指令被插入於事先定義好的 SQL 指令中,並試圖改變執行的結果 攻擊情境 10
  12. 12. 常見網站程式弱點 攻擊情境 (用字串串接的方式處理外部參數 造成漏洞) 11 程式 預期 攻擊 攻擊
  13. 13. 常見網站程式弱點 SQL Injection弱點讓攻擊者可以執行任 意SQL指令 12
  14. 14. 常見網站程式弱點 Cross-Site Scripting(XSS) ◦ 允許攻擊者植入惡意javascript程式碼,並讓 瀏覽器執行的弱點,使用者可能於未察覺 的情況下被導往釣魚網站或被偷取資料 攻擊情境 13 惡意導向語法被存入內文, 前端使用者檢視內文時可能被導往釣魚網站
  15. 15. 常見網站程式弱點 白箱與黑箱檢測軟體可以 ◦ 自動掃描所有網站程式 ◦ 偵測常見網站程式弱點 ◦ 產生檢測報告,供網站開發人員進行確認與 修補網站弱點,以避免網站遭受駭客攻擊 14
  16. 16. 白箱檢測 源碼檢測 分析源碼行為以指出安全問題所在,如弱點 種類、攻擊路徑等 檢測的結果仍會有誤報 (False Positive) 及漏報 (False Negative) 的可能 ◦ 先利用檢測工具進行檢測,找出常見的潛 在弱點,再依工具分析結果,進一步進行 了解、確認、修改。 公司使用Armorize CodeSecure白箱檢測軟體 15
  17. 17. 白箱檢測 Armorize CodeSecure可檢測PHP 、Java 、 ASP、ASP.NET等語言開發之網站程式 功能列表參考 16 http://cloud- sharing.net/Armorize/document/CodeSecureSupportList421.pdf
  18. 18. 白箱檢測 依程式控制流程與資料控制流程來解析程式的進入點。 針對進入點檢測輸入參數是否來自不信任的資料來源且未經處 理,則標記參數為受汙染參數。 在流程中,下游函式若使用到受汙染參數且未經處理,則標記 函式為受汙染函式。 以此類推,直至檢視至末碼,末碼將會被標註為一個弱點 17
  19. 19. 白箱檢測-操作說明 Armorize CodeSecure 18 https://armorize.zendesk.com/entries/21620795- CodeSecure-5-0-x-Quick-Start-Guide-
  20. 20. 白箱檢測 弱點類型與(不信任的)資料來源類型中英對照 19
  21. 21. 白箱檢測-實機檢測Demo SampleUnSafeWebapp.zip 實機檢測Demo 20
  22. 22. 白箱檢測-報告解讀 SampleUnSafeWebapp_report.zip 21
  23. 23. 白箱檢測-報告解讀 檢測設定 22
  24. 24. 白箱檢測-報告解讀 弱點分佈總覽 23
  25. 25. 白箱檢測-報告解讀 由弱點索引可以快速連結到某弱點類型的脆弱描述句 24 弱點追蹤數總和
  26. 26. 白箱檢測-報告解讀 25
  27. 27. 白箱檢測-報告解讀 報告中可列出掃描時自動偵測到的全部進入點與解析檔案 26
  28. 28. 白箱檢測-報告解讀 弱點列表會依各不信任的資料來源、弱點類型排序 列出所有脆弱檔案與脆弱行數 27
  29. 29. 白箱檢測-報告解讀 點選脆弱行數可以快速連結到該弱點的所有 弱點追蹤資訊 28
  30. 30. 白箱檢測-報告解讀 由弱點追蹤可觀察汙染值的傳遞路徑 29
  31. 31. 白箱檢測-修補建議 SampleSafeWebapp.zip SQL Injection ◦ 使用參數化的查詢 (預備陳述式,prepared statement)。使用預備陳述式與參數的綁定可以消 除 SQL 注入的弱點。 30
  32. 32. 白箱檢測-SQL Injection修補建議 如真的有需要串接SQL字串的情況(非where部分)或是 大量舊程式調整的情況可以使用 InputCheckUtil.chkSqlInjection進行單引號跳脫處理輸 入值以避免SQL Injection攻擊 31
  33. 33. 白箱檢測-SQL Injection修補建議 部分特殊情況下駭客仍可利用不含單引 號與空白之攻擊SQL語法進行攻擊 使用參數化的查詢為第一優先修補方式 32
  34. 34. 白箱檢測-XSS修補建議 Cross-Site Scripting ◦ 不要直接呼叫request. getParameter, getAttribute等方 法,改以RequestUtil包裝以取得request參數, RequestUtil內部會處理檢查與清除javascript動作 33
  35. 35. 白箱檢測-XSS修補建議 RequestUtil背後使用 ◦ AntiSamy ◦ ESAPI 此兩library進行輸入值檢查與清理的動 作 34
  36. 36. 白箱檢測-XSS修補建議 AntiSamy(https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project) ◦ an HTML validation tool and API ◦ 可根據policy檔案清除字串中javascript 保留乾淨HTML e.g. <div><b>'1中文'</b><script>alert('1中文');</script></div> 處理後 <div><b>'1中文'</b></div> 35
  37. 37. 白箱檢測-XSS修補建議 網站內文上稿通常會允許使用者輸入 HTML以進行排版,使用AntiSamy可允 許使用者輸入HTML,同時避免攻擊者 藉此輸入惡意javascript 36
  38. 38. 白箱檢測-XSS修補建議 AntiSamy 預設提供的policy檔案 ◦ antisamy-tinymce-X.X.X.xml ◦ antisamy-slashdot-X.X.X.xml ◦ antisamy-ebay-X.X.X.xml ◦ antisamy-myspace-X.X.X.xml ◦ antisamy-anythinggoes-X.X.X.xml 37
  39. 39. 白箱檢測-XSS修補建議 AntiSamy呼叫 38
  40. 40. 白箱檢測-XSS修補建議 ESAPI(https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API) ◦ a free, open source, web application security control library 39
  41. 41. 白箱檢測-XSS修補建議 40
  42. 42. 白箱檢測-XSS修補建議 使用org.owasp.esapi.filters.SecurityWrapperRequest以避免 直接存取HttpServletRequest 41
  43. 43. 白箱檢測-XSS修補建議 ESAPI使用 SecurityWrapperRequest的getParameter方 法也會阻檔非法script,但不像AntiSamy 可以做到保留乾淨HTML 42
  44. 44. 白箱檢測-修補建議 Resource Injection ◦ 如下牽涉檔案存取的動作可以使用 InputCheckUtil.chkFilePath處理輸入,以避免 駭客使用..上一層的方式存取到任意非預期 路徑 43
  45. 45. 白箱檢測-修補建議 HTTP Response Splitting(低風險弱點) ◦ 牽涉到http回應操作,如 response.setHeader,response.addCookie時可以使用 InputCheckUtil.chkCrLfInjection檢查是否有換行(n,r) 等非法字元,以避免駭客利用換行字元假造http回 應 44
  46. 46. 白箱檢測-修補建議 Information Leak of System Data ◦ 避免將除錯資訊直接輸出到畫面或stdout,可採將 除錯資訊輸出到日誌檔, 且日誌檔的存取受到嚴格 的管控 ◦ 不要呼叫e.printStackTrace方法改用 org.apache.commons.logging統一輸出錯誤訊息可通 過白箱檢測 45
  47. 47. 白箱檢測-修補建議 Log Forging 日誌偽造(低風險弱點) ◦ 對log訊息檢查換行字元,進行HTML跳脫 ◦ 使用InputCheckUtil.validateLogString以通過 白箱檢測 46
  48. 48. 白箱檢測-修補建議 Information Leak Through Log Files ◦ 避免在log寫入環境資訊或做好機器環境防 護避免log檔未經授權的讀取 ◦ 提供解釋日誌檔的存取受到嚴格的管控以 通過白箱檢測 47
  49. 49. 白箱檢測-修補建議 過濾函式設定(淨化弱點) ◦ 設定過濾函式請在安全政策裡選擇 [管理淨 化函數] 48
  50. 50. 白箱檢測-修補建議 接下來選擇 [新增過濾函式] 在命名空間、類別名稱及函式名稱內輸入過濾函式資訊 49
  51. 51. 白箱檢測-修補建議 過濾函式輸入完畢後,選擇 [新增參數] 50
  52. 52. 白箱檢測-修補建議 輸入參數類型,接下來勾選此函式將過濾的弱點及 過濾回傳,完成後選擇 [新增參數] 51
  53. 53. 白箱檢測-修補建議 確認無誤後選擇 [新增過濾函式] 52
  54. 54. 白箱檢測-修補建議 掃描後可以從掃描診斷的地方得知各過濾函式應用 情況 53
  55. 55. 白箱檢測-修補建議 54
  56. 56. 白箱檢測-修補建議 過濾函式列表參考 55
  57. 57. 白箱檢測-修補建議 誤判設定 56
  58. 58. 黑箱檢測 直接對運行中的網站檢測 根據Web伺服器回傳的回應進行分析 可連帶檢測系統環境的安全問題 與白箱相比誤判率較低但漏報率較高 需事先報備知會網管人員 公司使用Acunetix Web Vulnerability Scanner黑箱檢測軟體 57
  59. 59. 黑箱檢測-操作說明 Acunetix Web Vulnerability Scanner 58 http://www.acunetix.com/resources/wvsmanual .pdf
  60. 60. 黑箱檢測-報告解讀 掃描總覽 59 …
  61. 61. 黑箱檢測-報告解讀 弱點總覽 60
  62. 62. 黑箱檢測-報告解讀 61
  63. 63. 黑箱檢測-XSS修補建議 Cross-Site Scripting ◦ 可透過以下filter檢查所有輸入 ◦ com.hyweb.filter.XssFilter 62
  64. 64. 黑箱檢測-XSS修補建議 XssFilter 63
  65. 65. 黑箱檢測-修補建議 Slow HTTP DOS attack ◦ 透過對網站服務主機緩慢發出不完整的 Request指令,以佔用主機連線,耗盡目標 主機的連線資源 修補方式 ◦ 調整AP Server連線設定參數,部分硬體防 火牆也可阻擋此攻擊 64
  66. 66. 黑箱檢測-修補建議 Apache Tomcat examples directory vulnerabilities ◦ 駭客可利用Tomcat安裝附帶的example目錄 下程式進行session變造等攻擊 修補方式 ◦ 移除Tomcat安裝附帶的example目錄 ◦ Tomcat安裝附帶的管理工具manager目錄也 建議移除,以避免該目錄成為駭客攻擊的 目標 65
  67. 67. 黑箱檢測-修補建議 Application error message ◦ 錯誤頁洩漏AP Server主機相關資訊,可能 被駭客蒐集以計畫後續攻擊 修補方式 ◦ 自訂錯誤頁隱藏系統相關資訊 66
  68. 68. 黑箱檢測-XFS修補建議 Missing Cross-Frame Scripting Protection(CWE 352) ◦ 利用瀏覽器允許框架(frame)跨站包含其它頁面的漏洞,在主 框架的代碼中加入scirpt,監視、盜取用戶輸入 修補方式 ◦ 可透過以下filter設定X-Frame-Options Header ◦ com.hyweb.filter.XfsFilter 67
  69. 69. 黑箱檢測-XFS修補建議 XfsFilter 68
  70. 70. 黑箱檢測-修補建議 Unrestricted Upload of File with Dangerous Type(CWE-434) ◦ 未阻擋上傳危險類型的檔案將允許駭客透過檔案 上傳進行攻擊,如上傳jsp檔案,然後執行攻擊 http://site/uploadFolder/hacker.jsp 修補方式 ◦ 在伺服器端對上傳檔案的副檔名進行檢查 與限制 ◦ 上傳檔擺放路徑最好能跟web root目錄拆開, 以避免上傳之檔案被直接執行 69
  71. 71. 黑箱檢測-CSRF修補建議 Cross-Site Request Forgery (CSRF) ◦ 跨網站的偽造要求 ◦ 在使用者已經登入目標網站後,駭客利用受害者 的身分來進行請求,不但可以獲得受害者的權限, 而且在系統的相關紀錄中也很難發現可疑之處 70 圖片來源:http://yniewu.blogspot.tw/2011/01/zenphoto-csrf.html
  72. 72. 黑箱檢測-CSRF修補建議 攻擊範例 71
  73. 73. 黑箱檢測-CSRF修補建議 修補方式 ◦ 避免使用 GET 方法傳送參數 ◦ 應使用動態亂數Token來驗證表單來源要求者 72 表單端 表單接收端 亂數產生token id與內容 放入session 並當作form參數 接收來自form的token id與 內容 並與session中資訊比對
  74. 74. 黑箱檢測-修補建議 Https Heartbleed漏洞 ◦ OpenSSL 2012-3-14之後推出的1.0.1版~ 1.0.1f版,以及1.0.2-beta~1.0.2-beta1等版本 有漏洞會外洩記憶體中機敏資料 修補方式 ◦ 更新到OpenSSL最新版或使用其他非採 OpenSSl的Https引擎 73
  75. 75. 結語 本課程介紹了 ◦ 常見網站程式弱點 ◦ 白箱檢測軟體使用方式與報告解讀 ◦ 白箱檢測修補建議 ◦ 黑箱檢測軟體使用方式與報告解讀 ◦ 黑箱檢測修補建議 74
  76. 76. 結語 比較項目 黑箱檢測法 白箱檢測法 人工滲透測試 自動弱點掃描 人工源碼檢測 自動源碼檢測 弱點定位精準度 普 差 佳 優 檢測完整/詳細程度 差 普 佳 優 輸入/輸出類安全檢測 普 普 佳 優 執行時安全問題檢測 優 佳 差 差 存取控管機制檢測 佳 普 差 差 邏輯性安全問題檢測 佳 普 差 差 檢測時效 差 佳 差 優 與程式開發人員之溝 通成本 差 差 佳 優 檢測誤判情形 優 普 佳 普 綜合評比 佳 普 普 優 75 http://www.amxecure.com/index.php/zh/news/49-vulnerability/60-web
  77. 77. 結語 SQL Injection對網站本身危害極大,一定要補正與避 免 XSS會使網站使用者受到攻擊,不過程式修補上比較 費工,可參考本課程提供的RequestUtil或XssFilter進 行修補 Resource Injection是有提供檔案上傳、下載網站常會 發生的漏洞,會導致任意系統檔案被讀取或覆蓋, 也要小心防堵 希望本課程對同仁開發安全的網站程式有所助益 76
  78. 78. Q&A 77

×