More Related Content Similar to 網站系統安全及資料保護設計認知 2019 Similar to 網站系統安全及資料保護設計認知 2019(20) 網站系統安全及資料保護設計認知 201911. • 通用漏洞披露
• 始於 1999
• 收集特定軟體漏洞並編號 CVE-YYYY-
NNNN
– OpenSSL 'Heartbleed' vulnerability (CVE-
2014-0160)
– CPU 推測執行(speculative execution)漏洞
衍生的變種(CVE-2017-5753、CVE-2017-5715、
CVE-2017-5754)
11
cve.mitre.org
CVE 資料庫
12. • 通用軟體弱點
• 始於 2005
• What is the difference between a
software vulnerability and software
weakness?
12
cwe.mitre.org
Software weaknesses are errors that can lead to
software vulnerabilities.
CWE 資料庫
13. OWASP
• 始於 2001
• 研議協助解決網路軟體安全之標準、工具
與技術文件
• OWASP TOP 10 為其中計畫之一
13
www.owasp.org
14. OWASP TOP 10
• 2002 年發起,針對 Web 應用程式最重大、
嚴重的十大弱點進行排名
• 首次 OWASP Top 10 於 2003 發布
• 2004 做了更新,之後每三年改版一次
• 最新正式版本為 OWASP Top 10 2017
14
www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
16. OWASP ESAPI
• OWASP Enterprise Security API
16
www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
17. • Injection 攻擊
– SQL Injection
– XML Injection
– LDAP Injection
– Code Injection
17
26. • Escape 特殊字元
– (ESAPI.encoder().encodeForSQL())
• 輸入驗證(伺服端)
– 黑名單(Black List)
– 白名單(White List)
26
SQL Injection 防範
28. • 變化形式
– Reflected XSS(First-order XSS)
– Stored/Persistent XSS(Second-order XSS)
– DOM-based/Local XSS
• 危害
– 會話劫奪(Session hijacking)
– 釣魚(Phishing)
– XSS 蠕蟲
– …
28
2010 Twitter
38. XSS 基本防範
• 強化輸入驗證
– 黑名單
– 白名單
– (ESAPI.validator())
– (OWASP Java HTML Sanitizer)
• 對輸出進行編碼
– (ESAPI.encoder().encodeForURL())
– (OWASP Java Encoder Project)
38
53. 53
sidfix.demo
1. 取得 sid2. 放入鏈結
<a
href="http://sidfix.demo/login;sid=8
51BB160B811634B03EDD08B60BFD
98D">美女走光圖</a>
美女走光圖^o^
3. 點選鏈結
4. 喔?需要登入?沒問題!
5. Got it!
Session Fixation
54. Session 防範對策
• 不從 GET、POST 參數取得 Session Id?
– Cookie 是可以偽照的
• 使用 HTTPS
• 不將 Session ID 用於 URL
– Referer 可能洩漏 Session ID
• 不採用 Session ID 預設名稱
54
55. Session 防範對策
• 設定 Session 之逾時
• 登入後重新產生 Session ID
• 重要操作前進行二次驗證
• 正確設定 Cookie 的 Domain、Secure、
HttpOnly
• (啟用伺服端軟體的 Session Fixation 自
動化保護機制)
55
56. Session 錯亂?
• 來自數個真實的案例
56
// 這是一個 Servlet 內部
private String name;
private String passwd;
@Override
protected void doPost(
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
name = request.getParameter("name");
passwd = request.getParameter("passwd");
if(login(name, passwd)) {
List data = query(name);
...
}
}
81. 跨網站冒名請求(CSRF)
• Cross-site Request Forgery
• 使用者通過驗證且 Session 未過期
• 授權、存取控制設計不良
• 在使用者不知情下進行特定行為
– 修改密碼、轉帳、自動發文、加好友…
81
1. 登入網站
2. 刪除專案
http://webapp.com/project/1/destroy
83. GET 的錯?
• GET 應用於等冪(Idempotent)操作
– 多次 GET 的結果應相同
– 不改變執行結果,通常不會改變伺服器狀態
• 使用 GET 確實降低了 CSRF 的難度
• 不過也可以透過 POST 來發動類似的請求
83
84. 84
<a href="http://www.harmless.com/" onclick="
var f = document.createElement('form');
f.style.display = 'none';
this.parentNode.appendChild(f);
f.method = 'POST';
f.action = 'http://webapp.com/account/destroy';
f.submit();
return false;">好康在這裡</a>
<img src="http://www.harmless.com/img" width="400"
height="400" onmouseover="..." />
滑鼠略過圖也可以 …
利用一些 JavaScript 寫些 Ajax 請求,都有可能…
85. CSRF 防範
• 重新認識 HTTP 請求方法
– https://openhome.cc/Gossip/Programmer/
HttpMethod.html
• 使用 Request Token
– 不少 Web 框架有內建
– OWASP CSRFGuard
• 不依賴 Session Id 作為身份驗證
• 重要行為前要求重新認證與授權
85
88. CSRF 防範
• 重新認識 HTTP 請求方法
– openhome.cc/Gossip/Programmer/HttpMe
thod.html
• 使用 Request Token
– 不少 Web 框架有內建
– OWASP CSRFGuard
• 不依賴 Session Id 作為身份驗證
• 重要行為前要求重新認證與授權
• (OAuth 2?)
88
90. Samy
• 2005 年 Samy 跟女友打賭他在 MySpace
上有很多粉絲,將他設成英雄(Hero)。
• Samy 寫了一隻 Stored/XSS 蠕蟲,因為散
播太快而導致 MySpace 當機
• Samy 當時被美國秘密警察逮捕,判三年緩
刑與 90 天的社區服務。
90
94. • 推文
• <a> 變成
94
<a
href="http://a.no/@";onmouseover=";$('textarea:first').val
(this.innerHTML);$('.status-update-
form').submit();"class="modal-overlay"/ class="tweet-url
web" rel="nofollow">
http://a.no/@";onmouseover=";$('textarea:first').val(this.
innerHTML);$('.status-update-
form').submit();"class="modal-overlay"/
95. DOM-based XSS
• 直接利用客戶端 JavaScript
• (伺服端未參與其中的流程)
95
<html>
<title>Welcome!</title>Hi
<script>
var pos = document.URL.indexOf("name=") + 5;
document.write(
document.URL.substring(pos,document.URL.length)
);
</script>
<br>Welcome to our system…
</html>
100. 其他(資源)
• Understanding the OWASP Top 10
Vulnerabilities
• The OWASP Top Ten and ESAPI
• Cookie & Session & CSRF
• [Nodejs] Security: Broken
Authentication
• Ruby on Rails Security Guide
• 駭客手法解析~你不能不知的資安問題!!
100