網頁應用程式安全 - Allen

Edit by SY 

 

資安概論

       

賽門鐵克:2013年全球以5.5億筆個資外洩,其中台灣在2013年整體網路威脅中名列全球第九。這個報告指出台灣的資安事件多,病毒跟惡意程式數量眾多。

       

Cyberwar是什麼?

第三次世界大戰也就是網路戰

2014年Verizon的資料外洩調查報告指出,有87%的攻擊是來自於國家政府級機構的發動。

目的

竊取國家情報

癱瘓網路

示威

 

沒有不安全的系統,只有不安全的人

在怪罪系統不安全之前,先想想自己有沒有做到安全

密碼安全

The strongest password in the world        :123456 (Just kidding)

一個危險的密碼有以下的特點

長度太短:像是asdf

複雜度不夠:像是123456

是常見的字串:像是password

安全的密碼應該要包含以下特點

長度大於15個字元(以截至2015的技術來說)

強力的複雜度:包含大小寫字母、特殊符號、空白、數字等不常見而且不規律的字串

例如:W3B.Hack 2015@mei 就是一個相當不錯的密碼

有了一個好的密碼,請不要把它貼在電腦上讓其他人可以看到

不同的服務或主機請不要共用同一個密碼

當自己開發的系統與服務在進行密碼儲存時,請不要直接儲存明碼,要記得把密碼進行加密。

 

什麼是駭客

駭客原意為"熱衷電腦技術的人"

種類

White Hat白帽

對系統安全進行研究並防禦修補,多數從事資安相關行業

Black Hat黑帽

進行犯罪的入侵行為,專門進行破壞

Gray Hat灰帽

介於White Hat & Black Hat之前

Script Kiddie

技術不純熟或不懂原理,只會使用現成的攻擊程式進行惡意破壞的攻擊者,被戲成為Script Kiddie,目前多數惡意破壞者都是屬於此類

駭客組織

官方:國家級 -> CyberWar

非官方:匿名者

攻擊目標

伺服器、個人電腦

伺服器被入侵的後果

竊取網站內部資料

做為跳板攻擊其他主機

掛碼或放置惡意程式

置換頁面或破壞

竊取站內帳號密碼個資

取得密碼個資的使用有針對性的盜用某帳號、取得管理者權限、將密碼製作成字典檔

個人電腦被入侵的後果

竊取電腦內部的資料

竊取電腦內帳號密碼個資

做為跳板攻擊其他主機

       

資安威脅與應對

 

知己知彼,百戰不殆

學習駭客的思維,最新的技術,並了解自己的系統脆弱點究竟在何處

 

學習駭客思維,駭客的思維和我們不一樣

當我們看到一個登入頁面,想到的是登入我們的帳號密碼、註冊一個帳號密碼、忘記密碼、漂亮的美術圖等。但駭客想到的是能不能在填資料的地方進行Injection、圖片的路徑是什麼、忘記密碼功能傳回的是明碼還是加密過的密碼等

       

駭客的攻擊流程

Reconnaissance

Scanning

Gaining Access

Maintaining Access

Clearing Tracks

 

真實案例

找到網站上傳、寫檔等弱點,植入webshell後門連入主機。之後發現帳號的權限不足,從主機內尋找可用的資訊。發現主機kernel版本過舊,有可提權的弱點。撰寫、搜尋Exploit攻擊,取得root權限(exploit-db.com)。接著放置後門/Rootkit以供日後使用。最後清除記錄檔及系統紀錄

       

Reconnaissance偵查:找出目標的相關資訊,以供後續測試需求

Footpriniting

wappalyzer.com

whois

查詢管理者資訊

E-mail、DNS

archive.org

Google Hacking

 

Scanning 掃描:掃描目標的服務,並且尋找弱點

Port Scanning

SuperScan

Nmap

nmap.org

open source的Port Scanner,可進行掃描、網路探索、安全稽核等

-sS/sT:TCP SYN/Connect() scans

-p <port ranges>:Only scan specified ports

-O:Enable OS detection

-A:Enable OS detection、version detection、script scanning、traceroute

Footprinting

Vulnerability Scanning

 

Gaining Access 取得進入權:透過掃描到的目標,進行攻擊取得進入權

Password Cracking

Brute-force Attack

Dictionary Attack

Hybird Attack

Pre-computed Hashes

Malware

Tools:pwdump、john、Cain、LophtCrack

 

Maintaining Access 維持進入權:利用後門等方式,維持既有的進入權限

Malware、backdoor、rootkit

置換現有服務執行檔

開設新使用者帳號

修改程式原始碼

       

Clearing Tracks 清除足跡

清除入侵的足跡

清除lastlog、history等

 

網頁應用程式安全

       

網路是安全的嗎?

網站容易讓人找到安全漏洞的地方有錯誤訊息上的on line、warning和.inc檔案等

 

Open Web Application Security Project (OWASP , owasp.org )

OWASP是一個開放社群的非營利組織,致力於改善網頁應用程式的安全性。OWASP Top 10揭露常見的網頁應用程式弱點,以供軟體開發安全參考

       

The ten most critical web application security vulnerabilities

A1 – Injection

A2 – Broken Authentication and Session Management

A3 – Cross-Site Scripting (XSS)

A4 – Insecure Direct Object References

A5 – Security Misconfiguration

A6 – Sensitive Data Exposure

A7 – Missing Function Level Access Control

A8 – Cross Site Request Forgery (CSRF)

A9 – Using Components with Known Vulnerabilities

A10 – Unvalidated Redirects and Forwards

 

Insecure Communication 未加密的網路連線

網頁傳送敏感資料時未使用SSL或其他加密方式,攻擊者可以進行網路監聽或Man-In-The-Middle(MITM)攻擊竊取機敏資訊

 

arp spoofing

Cain&Abel

               

防範方式

使用經過公正第三方的認證中心認證的SSL憑證

使用會檢查SSL憑證有效性的瀏覽器

檢查網站架構及設計,注意重要資訊傳輸過程中是否皆有加密

       

Information Leakage and Improper Error Handling 程式碼錯誤訊息外漏

網頁應用程式的執行錯誤訊息包含敏感資料,例如系統檔案路徑或資料庫欄位名稱等。攻擊者可以藉此取得輔助攻擊的機敏資料或系統配置

 

防範方式

確保有完善的例外處理機制

將錯誤處理頁面及資訊限制只有管理者才能讀取

將HTTP回傳錯誤碼隱藏

 

Insufficnet Transport Layer Protection 傳輸層保護不足

網頁應用程式未在傳輸機敏資訊時提供加密功能,或者是使用過期、無效的憑證,使加密不可信賴。例如:攻擊者竊聽無線網路,偷取使用者cookie;網站憑證無效,使用者誤入釣魚網站,都是此類風險

 

防範方式

盡可能的使用加密連線

cookie使用secure flag

PHP:setcookie(“TestCookie”,””,time()+3600,”/”,”.example.com”,1);

JSP:cookie.setSecure(true);

ASP.NET:cookie.Secure=True;

確認憑證是有效且符合網域名稱

後端連線也使用加密通道傳輸

 

Insecure Cryptographic Storage 未加密的儲存設備

網頁應用程式沒有對機敏資料加密、使用自己開發的不安全加密碼、使用較弱的加密演算法或將金鑰儲存於容易被取得之處。攻擊者可能因此取得機敏資料,更進一步利用這些資料入侵伺服器

 

防範方式

使用現有公認安全的加密演算法

安全的保存私密金鑰

 

Unvalidated Redirects and Forwards 未驗證的轉址與導向

網頁應用程式經常將使用者Forward或Redirect至其他頁面或網站,卻沒有驗證的機制。攻擊者可將受害者導向至釣魚網站或惡意網站,甚至存取受限制的資源,攻擊者常利用此方式隱藏惡意連結,規避防毒軟體的掃描。

 

防範方式

顯示警告

非必要避免使用Redirect&Forward

驗證導向的位置及存取資源是合法的、正確的

 

Using Components with Known Vulnerabilities 使用含已知弱點的元件

開發者使用了含有弱點的元件、套件或Framework,容易被攻擊、使用自動化大規模掃描攻擊。通常此類風險難以被開發者偵測,但非常容易被攻擊者攻擊

 

Metasploit

 

防範方式

定期進行作業系統、軟體、套件盤點,若發生資安事件時可以快速找到待處理的系統

密切注意自己使用的軟體、套件有無更新

避免使用長時間沒更新、面對資安問題反應速度緩慢的套件軟體

 

Cross-Site Request Forgery 跨站冒名請求

登入網站的合法使用者被迫執行惡意的HTTP指令,但是被網站當成合法處理,使惡意指令被正常執行。例如Web2.0時代的社交網站等,都是CSRF攻擊的天堂

 

防範方式

確保網站內沒有XSS弱點

在input欄位加上亂數產生的驗證編碼

在能使用較高權限的頁面,重新驗證使用者

禁止使用GET參數傳遞防止攻擊更快速散佈

使用CAPTCHA等技術驗證request是否為人為操作

 實作

     

 

駭客入侵五個步驟

wappalyzer工具,幫助了解所在網站使用的開發工具或套件

whois,查詢網域的管理者資訊與其DNS資訊

archive.org,觀察網站的開發進化史

nmap,掃描該伺服器開啟的服務

然後不要亂搞會出事,就像上面的那個訊息說的一樣...