Upgrade to Pro — share decks privately, control downloads, hide ads and more …

資安工作的常用技術入門

 資安工作的常用技術入門

資安工作的常用技術入門

VIolinTiger

March 24, 2019
Tweet

Other Decks in Technology

Transcript

  1. 需求 設計 開發/測試 建置 維運 程式安全教育訓練 Secure Coding Security Requirements

    Code Review Dynamic Testing 安全威脅分析 程式碼安全檢查 主機弱點掃描 網站弱點掃瞄 滲透測試 Continuous Defense & Monitoring 網站防火牆 資安事件鑑識 Security Design Security Risk Analysis 安全需求分析 安全設計 ★ ★ ★ ★ ★ ★ ★
  2. 需求 設計 開發/測試 建置 維運 程式安全教育訓練 Secure Coding Security Requirements

    Code Review Dynamic Testing 安全威脅分析 程式碼安全檢查 主機弱點掃描 網站弱點掃瞄 滲透測試 Continuous Defense & Monitoring 網站防火牆 資安事件鑑識 Security Design Security Risk Analysis 安全需求分析 安全設計 ★ ★ ★ ★ ★ ★ ★
  3. 威脅類型列表 - STRIDE 字義 描述 Elevation of Privilege (權限提升) 未經正常授權取得權限能力

    授權 
(Authorization) Spoofing
 (偽冒) 冒充為某人或某物 身分驗證
 (Authentication) Tampering
 (竄改) 惡意的修改資料 完整性 
(Integrity) Repudiation (否認行為) 使用者可以否認曾經進行某行為,
沒有 方法可以證明其行為 不可否認性
(Non- Reputation) Information Disclosure (資訊洩漏) 資訊被洩漏給不可存取的個體 機密性 
(Confidentiality) Denial of Service (拒絕存取服務) 對使用者拒絕服務或降低服務水準 可用性 
(Availability)
  4. 威脅類型 組成元素 偽冒 (S) 竄改 (T) 否認 行為 (R) 資訊

    洩漏 (I) 拒絕存 取服務 (D) 權限 提升 (E) 威脅列表 使用者 V S︰未對來源進行驗證 新增留言 V V D︰同時間可能有大量存取 E︰該程序使用過高系統權限 留言內容 V V T︰未對資料進行完整性保護 I︰未對資料進行加密保護 留言資料表 V R︰未記錄資料存取行為
  5. 風險因子 - DREAD 字義 高(3分) 中(2分) 低(1分) Da ma ge

    Potential (可能傷害) 攻擊者取得完整的機敏資 料以取得系統最高權限 洩漏部分機敏資料 洩漏系統細節資訊 Reproducibility (可重製性) 攻擊可以不停重製且不需 要暫停時間 攻擊可以重製,但需要 暫 停時間 攻擊難以重製,或需 要對弱點有深入知識才能 重製 Exploitability (可刺探性) 不具有相關技能者也可以 發動攻擊 具有相關技能者可以發 動 攻擊 需要對弱點有深入知識才 能發動攻擊 Affected Users (影響使用者數) 所有的使用者 部分使用者 極低比例的使用者 Discoverability (可發現性) 公開資訊已揭露攻擊手法 及漏洞 已被找到相關的資訊, 但 漏洞尚未被揭露 極少用到的功能且使用者 難以找到漏洞
  6. 風險值評估 - DREAD 威脅項目 資產項目 可重製 性 可刺探 性 可發現

    性 可能傷 害 影響人 數 風險值 未對來源進行驗證 使用者 2 2 2 2 3 30 (2+2+2) X (2+3) = 6 X 5 = 30 未對資料進行加密保護 留言內容 2 1 1 3 3 24 (2+1+1) X (3+3) = 4 X 6 = 24 拒絕存取 新增留言 1 1 1 3 3 18 (1+1+1) X (3+3) = 3 X 6 = 18 未驗證資料完整性 留言內容 2 1 1 1 3 16 (2+1+1) X (1+3) = 4 X 4 = 16 使用過高系統權限 新增留言 1 2 2 1 2 15 (1+2+2) X (1+2) = 5 X 3 = 15 未記錄資料存取行為 留言資料表 1 1 1 1 3 12 (1+1+1) X (1+3) = 3 X 4 = 12
  7. 風險值優先與控措措施 威脅項目 資產項目 風險值 控制措施 未對來源進行驗證 使用者 30 ▪ 採用帳號密碼登入認證

    ▪ 限制來源IP 未對資料進行加密保護 留言內容 24 ▪ 使用HTTPS協定 拒絕存取 新增留言功能 18 ▪ 使用分散式系統架構 未對資料進行完整性保護 留言內容 16 ▪ 使用HTTPS協定 使用過高系統權限 新增留言功能 15 ▪ 採一般使用者權限執行 未記錄資料存取行為 留言資料表 12 ▪ 記錄資料的存取行為
  8. 需求 設計 開發/測試 建置 維運 程式安全教育訓練 Secure Coding Security Requirements

    Code Review Dynamic Testing 安全威脅分析 程式碼安全檢查 主機弱點掃描 網站弱點掃瞄 滲透測試 Continuous Defense & Monitoring 網站防火牆 資安事件鑑識 Security Design Security Risk Analysis 安全需求分析 安全設計 ★ ★ ★ ★ ★ ★ ★
  9. A1-Injection Security Misconfiguration Broken Authentication Cross-Site Scripting (XSS) Sensitive Data

    Exposure Insecure Deserialization XML External Entities (XXE) Using Components with Known Vulnerabilities Broken Access Control Insufficient Logging&Monitoring
  10. 需求 設計 開發/測試 建置 維運 程式安全教育訓練 Secure Coding Security Requirements

    Code Review Dynamic Testing 安全威脅分析 程式碼安全檢查 主機弱點掃描 網站弱點掃瞄 滲透測試 Continuous Defense & Monitoring 網站防火牆 資安事件鑑識 Security Design Security Risk Analysis 安全需求分析 安全設計 ★ ★ ★ ★ ★ ★ ★
  11. ✓蒐集情報 • Netcraft: www.netcraft.com • Whois:whois.domaintools.com • Archive:web.archive.org 目標狀 態

    主機情 蒐 服務掃 瞄 作業系 統 網路架 構 情報蒐集(Reconnaissance)
  12. ✓蒐集情報 • Shodan: www.shodan.io • ZoomEye:www.zoomeye.org • Censys:censys.io 目標狀 態

    主機情 蒐 服務掃 瞄 作業系 統 網路架 構 情報蒐集(Reconnaissance)
  13. ✓Google Hacking • 網域 site: <com.tw> • 網址 inurl: <phpadmin>

    • 標題 intile: <index of> • 鍵結 inlink: <upload> • 檔案 filetype: <.bak .csv .git .svn .mdb> 目標狀 態 主機情 蒐 服務掃 瞄 作業系 統 網路架 構 情報蒐集(Reconnaissance)
  14. 掃瞄列舉(Scanning Enumeration) • Check for Live Systems • Check for

    Open Ports • Scanning Beyond IDS • Banner Grabbing • Scan for Vulnerability • Draw Network Diagrams • Prepare Proxies • Scanning Pen Testing
  15. ✓作業系統、服務掃瞄 • Nmap *nmap -O <IP> 作業系統 *nmap -p <IP>

    Port 目標狀 態 主機情 蒐 服務掃 瞄 作業系 統 網路架 構 作業系統掃瞄(Scanning)
  16. ✓服務掃瞄 • ICMP Scan (-sn) • TCP scan(-sT) *Stealth Scan、Inverse

    TCP Scan、IDLE… *FIN Scan、Xmas Scan、Null Scan… • UDP Scan (-sU) 目標狀 態 主機情 蒐 服務掃 瞄 作業系 統 網路架 構 服務掃瞄(Scanning)
  17. ✓網路架構 • tracert • traceroute • tcptraceroute • paratrace 目標狀

    態 主機情 蒐 服務掃 瞄 作業系 統 網路架 構 網路架構(Scanning) ✓Zone Transfer Server • nslookup \ dig
  18. ✓網頁弱點掃描工具 *HPE WebInspect *IBM AppScan *Acunetix Web Vulnerability Scanner ✓人工驗證

    弱點掃瞄(vulnerability assessment ) 人工驗證 弱點 掃瞄 服務 掃瞄
  19. 權限提升(Privilege Escalation) ✓DLL Hijacking • Services ✓ Command Prompt •

    psexec -s -i cmd.exe ✓ Reset Password • net use • pspasswd • chntpw sam system
  20. Cookie 詐騙 (Cookie Poisoning) Cookie 偷聽 (Cookie Snooping) 儲存不安全 (Insecure

    Storage) 資料外洩 (Information Leakage) 錯誤處理不當 (Improper Error Handling) 脆弱帳號管理 (Broken Account Management) 目錄遍歷 (Directory Traversal ) (SQL Injection) 服務阻絕 (Denial of Service) 緩衝區溢位 (Buffer Overflow) 竄改日誌 (Log tampering) 未驗證的輸入 (Unvalidated Input) 跨站腳本 Cross Site cripting (XSS) Injection Flaws Cross Site Request Forgery 脆弱存取 (Broken Access Control) 平台漏洞 (Platform Exploits) 不安全的直接引用 (Insecure Direct Object References) 傳輸層保護不足 (Insufficient Transport Layer Protection) Failure to Restrict URL Access Insecure Cryptographic Storage Obfuscation Application DMZ Protocol Attacks Security Management Exploits Authentication Hijacking Network Access Attacks Web Services Attacks 隱藏處理 (Hidden Manipulation) 未驗證的導向 (Unvalidated Redirects and Forwards) 會話固定攻擊(Session Fixation Attack)
  21. SQL Injection SQL 語句中的「動態字串結合」的導致攻擊成功的主因。 SELECT * FROM Account WHERE username='admin'

    or 1='1' AND password='*' SELECT * FROM Account WHERE username= 'admin' AND password='password'
  22. 資料庫存取程式改寫 傳統的寫法程式範例: Bad SQL Injection string userName = ctx.getAuthenticatedUserName(); string

    query = "SELECT * FROM items WHERE owner = "'" + userName + "' AND itemname = '" + ItemName.Text + "'"; sda = new SqlDataAdapter(query, conn); DataTable dt = new DataTable(); sda.Fill(dt); ...
  23. 輸入資料過濾 • 白名單過濾:長度、英數、正規化 • 黑名單過濾:不建議,不正常的語法關鍵字,檢查不完 • /* • -- •

    or 1=1-- • or 2>1-- • ' or ''=' • and 1=1-- • and 1=2-- • ';declare @a int;-- • @@version>1 • order by 100 • ' union select col1,col2,… from table-- • ;exec master..xp_cmdshell 'net user Hacker Hacker /add';-- • ;exec master..xp_cmdshell 'echo WEBSHELL > path/a.asp'-- • ;exec master..xp_regread 'HKEY_CURRENT_USER,Software\ORL\WinVNC3',Password;--
  24. Sample Code .NET – C# : string connString = WebConfigurationManager.ConnectionStrings["myConn"].ConnectionString;

    using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM Products WHERE ProdID=@pid", conn); SqlParameter prm = new SqlParameter("@pid", SqlDbType.VarChar, 50); prm.Value = Request.QueryString["pid"]; cmd.Parameters.Add(prm); int recCount = (int)cmd.ExecuteScalar(); }
  25. Sample Code Java: String custname = request.getParameter("customerName"); // perform input

    validation to detect attacks String query = "SELECT account_balance FROM user_data WHERE user_name = ? "; PreparedStatement pstmt = connection.prepareStatement( query ); pstmt.setString( 1, custname); ResultSet results = pstmt.executeQuery( );
  26. Batch Queries in MS-SQL 利用 ; 符號中止原查詢語句,串接其他指令。 Select / Insert

    / Delete / Update / Drop … 資料庫管理用的 Stored Procedure 指令 攻擊字串範例: id=1 ; drop table account;-- id=1 ; exec master..xp_cmdshell 'net user Hacker Hacker /add ‘;-- 攻擊權限沒成功,就代表需要驗證更進一步的存取權限
  27. 進階預存程序名稱 功用 xp_cmdshell 能夠以 SQL Server 的系統帳號身分來執行任 何應用程式 。 xp_regXXXX

    存取作業系統的registry 資料。 xp_servicecontrol 停掉或啟動某個服務。 xp_terminate_process 停掉某個執行中的程序,但賦予的參數是 Process ID。 xp_dirtree 顯示某個目錄下的子目錄與檔案架構。 xp_oaXXXX 存取伺服器外部 OLE 物件 。 MS-SQL 還有很多可以用: Batch Queries in MS-SQL
  28. Blind SQL Injection 原理就是利用等待時間。 如果條件成立,就等待5秒,否則不等待。 透過這樣的方式獲取資料庫更進一步的訊息。 ' and condition and

    '1'='1 '; if condition waitfor delay '0:0:5' — '; union select if( condition , benchmark (100000, sha1('test')), 'false' ),1,1,1,1;
  29. 錯誤訊息客製頁面 .NET Web.Config: ON 顯示客製頁面 OFF 顯示錯誤訊息 RemoteOnly 僅向本機用戶顯示詳細錯誤 <configuration>

    <system.web> <customErrors defaultRedirect="YourErrorPage.aspx" mode="On"> <error statusCode="500" redirect="InternalErrorPage.aspx"/> </customErrors> </system.web> </configuration>
  30. 給開發人員 1. 在程式中對於輸入資訊進行消毒驗證 2. 使用參數化查詢而非動態組合查詢。 以 JAVA 來說通常會使用 Prepared Statement

    取代 Statement 3. 採用適合的錯誤處理、系統日誌方式,避免將資料庫錯誤、或 任何技術資訊透漏給使用者 4. 選擇不容易被猜到的資料表與欄位名稱 5. 盡可能使用預存程序取代原始 SQL
  31. 常見的存取控制 Cookie 如果發現 Cookie 中存在類似以下數值 • UID :整數 • User

    :字串 • Admin :0 / 1 / Y / N 表單隱藏欄位 URL GET 改參數內容
  32. 防護建議 修改個人密碼 • 登入之後才能進行 • 再次登入驗證(Re-authentication) • 千萬別讓使用者有任何機會操縱要修改的帳號 • SSL

    加密傳輸 • 通知使用者 忘記密碼 • 不好的做法:我家寵物名稱? 來福?來旺?小白? • 發送驗證信時,唯一+時間限制+訪問一次性URL => 註冊信箱
  33. 防護建議 安全的 Session Management • 最大原則:每次登入所使用的 session ID 都要夠亂且不同 傳輸保護

    • 如果使用cookie傳送 • 限制 cookie scope (domain & path) • 設定 httpOnly 無法在用戶端用javascript讀取。 • 設定 secure flag:Cookie只能透過https的方式傳輸。
  34. Cookie 設定 • Cookie Interface • Response Header • web.xml

    • Tomcat context.xml https://www.ajoshow.com/2017/07/19/201707192223/
  35. Cookie 設定 Cookie Interface Cookie cookie = getMyCookie("CookieName"); cookie.setHttpOnly(true); cookie.setSecure(true);

    resp.addCookie(cookie); https://www.ajoshow.com/2017/07/19/201707192223/ Response Header String sessionid = request.getSession().getId(); response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; httpOnly; secure");
  36. 防護建議 in.NET Logout ( ) 清除所有存放於後端的 Session 資料 Session token

    失效 http://forums.asp.net/t/1755872.aspx?SessionID+not+getting+reset+after+Session+Abandon protected void LoginStatus1_LogOut(object sender, LoginCancelEventArgs e) { this.Session.Clear(); this.Session.Abandon(); FormsAuthentication.SignOut(); } Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
  37. 防護建議 in Java Logout ( ) Sample 1: 身份驗證時重置 session

    cookie Sample 2:嚴謹的檢查登入後的 session http://stackoverflow.com/questions/4836106/how-to-reset-jsessionid public static ... (HttpServletRequest request) { HttpSession session = request.getSession(false); if (session!=null && !session.isNew()) { session.invalidate(); public static HttpSession resetSessionId(HttpSession session, HttpServletRequest request) { session.invalidate(); session = request.getSession(true); return session; }
  38. 防護建議 Limit session lifetime Coding: web.xml <!-- Session Configuration -->

    <session-config> <session-timeout>15</session-timeout> </session-config> // Inactivity timeout in seconds session.setMaxInactiveInterval(900); https://stackoverflow.com/questions/15382895/session-timeout-in-web-xml
  39. Tomcat 設定 $CATALINA_BASE/conf/server.xml 設定: <!-- Define a SSL Coyote HTTP/1.1

    Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/> http://wiki.jikexueyuan.com/project/tomcat/ssl-tls.html
  40. Apache修補方式 httpd.conf 設定 SSLProtocol 以黑名單關閉 SSL: SSLProtocol all -SSLv2 -SSLv3

    http://www.techoism.com/enable-tls-version-mod_ssl-apache-webserver/
  41. 密碼不要明文儲存 Password : 12345678 Algorithm Value Base64 MTIzNDU2Nzg= DES (13

    chars) aaNN3X.PL2piw MD5 (32 chars) 25d55ad283aa400af464c76d713c07ad SHA1 (40 chars) 7c222fb2927d828af22f592134e8932480637c0d Salted MD5 $1$tsLFcOYh$5ibC1Ui2OPwUvyGUttUFI1 LanMan 0182BD0BD4444BF836077A718CCDF409 NTLM 259745CB123A52AA2E693AAACCA2DB52 Encoding ? Hash? Encryption?
  42. 觀念說明 Encoding (編碼) : Base64 、HTML Encoding Hash (雜湊函數) :

    MD5、SHA1 Encrypt (加密) : AES 資料 編碼值 資料 編碼值 f(data) 資料 編碼值 f(data) f(data) http://www.rsa.com/rsalabs/node.asp?id=2176
  43. Password Crackers John the Ripper http://www.openwall.com/john/ DES/MD5/Salted MD5/LM John The

    Ripper MPI Patch http://bindshell.net/tools/johntheripper DES/MD5/Salted MD5/LM/NTLM/… Cain & Abel http://www.oxid.it/ LM/NTLM/MD5/SHA1/… RainbowCrack http://www.antsight.com/zsl/rainbowcrack/ MD5/SHA1/LM/NTLM/…
  44. 密碼防護建議 核心期望:拿不到、解不開 機敏資料不要回傳到前端 傳輸或儲存時透過Hash或是加密保護。 使用通過國際標準的演算法 & 較長的 Key Size Hash

    不要再用 : LM、MD5、SHA1 在每個產生的 hash 值再加入亂數字串(salt) 例 : Hash("secret", "1lkjdo3opf"), Hash("secret", “mkdi2kan7") Cipher 不要再用: DES、3DES,請使用 : AES(AES-128, AES-192 and AES-256)
  45. Java Secure Hashing https://howtodoinjava.com/security/how-to-generate-secure-password-hash-md5-sha-pbkdf2-bcrypt-examples/ private static byte[] getSalt() throws NoSuchAlgorithmException

    { //Always use a SecureRandom generator SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); //Create array for salt byte[] salt = new byte[16]; //Get a random salt sr.nextBytes(salt); //return salt return salt; }
  46. 防護建議 For encryption keys 別在程式裡寫入加密金鑰或資料庫的存取資訊 For configuration store 內容加密 .NET

    : Aspnet_setreg.exe https://support.microsoft.com/en-us/help/329290/how-to-use-the-asp.net-utility-to-encrypt-credentials-and-session-stat
  47. XML Basic https://www.cnblogs.com/r00tuser/p/7255939.html *DTD 外部宣告 *DTD 內部宣告 <?xml version="1.0"?> <!DOCTYPE

    note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd" <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
  48. XML Basic DTD 的實體(ENTITY)又分內部參考與外部參考 內部實體宣告 外部實體宣告 <?xml version="1.0"?> <!DOCTYPE test

    [ <!ENTITY writer "Bill Gates"> <!ENTITY copyright "Copyright W3School.com"> ]> <test>&writer;&copyright;</test> <?xml version="1.0"?> <!DOCTYPE test [ <!ENTITY writer SYSTEM "http://www.w3school.com/dtd/entities.dtd"> <!ENTITY copyright SYSTEM "http://www.w3school.com/dtd/entities.dtd"> ]> <author>&writer;&copyright;</author>
  49. XML External Entities • 攻擊者嘗試獲取密碼 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo

    [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM ""file:///etc/passwd" >]> <xml> <stuff>This is my Stuff</stuff> </xml>
  50. XML External Entities • 傳送外部請求 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo

    [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "http://127.0.0.1:8888/test.txt" >]> <xml> <stuff>This is my Stuff</stuff> </xml> 開 Port 8888,啟動 python SimpleHTTPServer ,可以遠端傳送 http 請求
  51. XML External Entities 防禦方式 ·在應用程式中禁止引用 XML 外部資源。 ·即時更新 SOAP 版本

    <1.2 à Vulnerable ·程式中增加白名單驗證,防止惡意資訊 ·改用簡單的資料格式(JSON)
  52. 防護建議 PHP: libxml_disable_entity_loader(true); JAVA: DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false); .NET: XmlTextReader

    reader = new XmlTextReader(stream); reader.ProhibitDtd = true; //NEEDED because the default is FALSE!! Python: from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
  53. 白名單存取副檔名 Spring 套件中設定 Web.xml : .NET web.config 設定: <servlet> <servlet-mapping>

    <servlet-name>defaultr</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <!-- Unblock all sourcecode related extensions and files/folders --> <fileExtensions allowUnlisted="false" applyToWebDAV="true"> <add fileExtension=".jpg" allowed="true" /> <add fileExtension=".js" allowed="true" /> <add fileExtension=".css" allowed="true" /> <add fileExtension=".png" allowed="true" /> </fileExtensions>
  54. Cross-Site Scripting(XSS) HttpOnly Flag Cookie只限被伺服器端存取,無法在用戶端讀取。 Cookie Interface Cookie cookie =

    getMyCookie("myCookieName"); cookie.setHttpOnly(true); cookie.setSecure(true); resp.addCookie(cookie); Response header String sessionid = request.getSession().getId(); response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; httpOnly; secure");
  55. 修改建議 in VB.NET VB.NET範例: Dim sb As StringBuilder = New

    StringBuilder( _ HttpUtility.HtmlEncode(input)) sb.Replace("&lt;b&gt;", "<b>") sb.Replace("&lt;/b&gt;", "<b>") sb.Replace("&lt;i&gt;", "<i>") sb.Replace("&lt;/i&gt;", "</i>") Response.Write(sb.ToString())
  56. 修改建議 in C# C# 範例: StringBuilder sb = new StringBuilder(

    HttpUtility.HtmlEncode(input)); sb.Replace("&lt;b&gt;", "<b>"); sb.Replace("&lt;/b&gt;", "<b>"); sb.Replace("&lt;i&gt;", "<i>"); sb.Replace("&lt;/i&gt;", "</i>"); Response.Write(sb.ToString());
  57. A9:Using Components with Known Vulnerabilities 使用已知漏洞的套件 (框架、套件、函式庫) 未使用最新版本 或是 未解決已知弱點問題

    使用含有已知漏洞的套件的應用程式或API可能會破壞應用程 式防禦、造成各種攻擊並產生嚴重影響 https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet
  58. CVE-2014-0166 WordPress 偽造 Cookie 弱點 CVE-2014-0166 是 WordPress 上面驗證登入 cookie

    的 弱點,攻擊者可以暴力偽造出合法 cookie,藉此獲得 WordPress 最高權限,進而拿到 shell 取得系統操作權。 https://devco.re/blog/2014/04/16/cve-2014-0166-wordpress-forged-cookie-vulnerabilities/ 預設的 cookie_name 如下 define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH); COOKIEHASH 的值是這個網站 url 做 MD5 後的結果 define( 'COOKIEHASH', md5( $siteurl ) ); 如果 wordpress 首頁是 http://domain.my/wordpress 它的 COOKIEHASH 就是 "http://domain.my/wordpress".md5 => "de5be3cf9fcea023a1303527e10ea67a"
  59. All Your Nodes Are Belong To Us Reviewing EOS source

    code on Github http://blogs.360.cn/post/eos-node-remote-code-execution-vulnerability.html The Story of an EOS Chain Remote Code Execution Bug 全球最大男性交友網站
  60. All Your Nodes Are Belong To Us The Bug in

    Web Assembly Sample Code : libraries/chain/webassembly/binaryen.cpp (Line 78) Function binaryen_runtime::instantiate_module The Story of an EOS Chain Remote Code Execution Bug Out-of-Bounds Write Here • Useless checking here: assert doesn't work in release build • Copy-pasted code from WebAssembly project wasm-js.cpp • No code review & misunderstanding the scope of asser
  61. All Your Nodes Are Belong To Us The Bug in

    Web Assembly Sample Code : libraries/chain/webassembly/binaryen.cpp (Line 78) Function binaryen_runtime::instantiate_module The Story of an EOS Chain Remote Code Execution Bug Out-of-Bounds Write Here • Useless checking here: assert doesn't work in release build • Copy-pasted code from WebAssembly project wasm-js.cpp • No code review & misunderstanding the scope of asser
  62. The Bug The table is a vector from std::vector and

    resized before written The valid value of the module->table.initial is 0~1024 The offset is a signed int32 read from WASM file By manipulate the fields of WASM file, we could overwrite memory behind the table vector
  63. The Truth is… They lost “significant” money because the factor

    that EOS is buggy was leaked 740M USD(22B TWD) of market cap. of EOS vanished, 2 hours after our report
  64. WEP & WPA & WPA2 WEP •RC4 •IV 24 bit

    +40/104 bit WPA •RC4,TKIP •IV 48 bit + 128 bit WPA2 •AES-CCMP •IV 48 bit + 128 bit
  65. APP