# 核心檢查 1. 確認資訊系統名稱 IP URL 2. 確認網路環境(模擬測試應該都沒有) 3. NMAP SCAN * Port Scan ```bash nmap -A <ip> -oN portscan.txt ``` * TCP Syn Scan ```bash nmap -sS <ip> -oN tcpsynscan.txt ``` * UDP Scan ```bash nmap -sU <ip> -oN udpscan.txt ``` 4. 應用程式測試結果: * 電子郵件服務套件 - SMTP 可確認如果再Port 25有可能為未加密,可改為Port 465 SMTPS - POP3 可確認如果再Port 110有可能為未加密,可改為Port 995 * 檔案傳輸服務 - FTP 可確認anonymous登入看看 - NETBIOS - NFS 可利用`showmount`確認NFS狀況(有可能可以直接mount) * 遠端連線服務套件 - SSH 利用nmap確認是否有weak cipher,如NETBIOS有User可利用hydra確認弱密碼 - Telnet 如有掃到建議關閉此服務,因明文傳輸不安全 - VNC 如果nmap的port scan有找到vnc(通常port 5900,5901)可以再進階掃描,有時可以找到版本過舊的RCE漏洞,指令為: ```bash nmap -sC “vnc*” -p5900 <target_IP> ``` - RDP 如果nmap的port scan有找到vnc(通常port 5900,5901)可以再進階掃描,有時可以找到版本過舊的RCE漏洞,指令為: ```bash nmap -sC “rdp*” -p3389 <target_IP> ``` * 網路服務套件 - DNS 如果nmap的port scan有找到dns(通常port 53)可以再進階掃描,有時可以找到版本過舊的RCE漏洞,指令為: ```bash nmap -sC “dns*” –p53 <target_IP> ``` - PROXY - SNMP snmpwalker(待補) * 其他 - Firewall 確認版本是否過舊,有無現成的exploit code可使用 - IDS/IPS - Database 是否為Default Password、Weak Password - LDAP - SMB - LPD - IPP - Jetdirect - RSTP 是否有做限制,如沒有可以使用VLC直接串流 5. 網頁應用程式設定 可先使用ZAP掃描(但是會亂塞資料,Real world不建議),以及path traversal * 設定管理網站 - 網站應用程式設定 - 網站檔案爬行 沒時間用dirb,有時間用gobuster(可指定較大的字典檔案) ```bash dirb <TARGET_URL> ``` ```bash gobuster dir -u <TARGET_URL> -w <worldlist> -x <html,php,txt> ``` - 後端管理介面 path traversal後看是否有admin、manager類似的介面,如果有可以看是否有現成的exploit code可以bypass authentication,或是使用hydra來試試看弱密碼 - HTTP協定 看瀏覽器上的鎖頭 * 使用者認證 - 機敏資料加密傳送 有些SSL/TLS版本有問題,可以檢查是否有較大的漏洞,例如heartbleed ```bash nmap -p443 -sC ssl-heartbleed <TARGET_IP> ``` - 使用者帳號列舉測試 指令為: ```bash hydra -L <USER_WORLDLIST> -p <PASSWORD> <TARGET_URL> http-post-form "<LOGIN_PAGE>:<PARTTERN>:<ERROR_MSG>" ``` - Cookie屬性測試 有兩項會比較重要的http-only、secure這兩個須注意(devtools,F12) http-only:會阻止JS Script訪問cookie,可減少XSS攻擊 Secure:確保cookie只能在安全傳輸協議進行 SameSite:限制XSS傳輸,通常會使用Lax or Strict當值,但較少使用 學校自行開發網站: ![](https://hackmd.io/_uploads/HJOjUEn62.png) 黑快馬(rpage): ![](https://hackmd.io/_uploads/H1YlPE3Th.png) github: ![](https://hackmd.io/_uploads/Syumw43an.png) - Session資料更新測試 每次登入看Session是否有更新,可以用devtools來確認 - Session變數傳遞測試 與cookie相同,session傳遞攻擊大致有兩種 session fixation:先取得一組合法的session,再誘騙使用者用到攻擊者的session,通常此攻會搭配xss來做攻擊,每次登入session id須更新,設定secure header...etc session hijeck:使用https流量 - CSRF 測試 如果ZAP掃描到沒有CSRF TOKEN,可以試試看用其他人的Session來去改資料看看,攻擊通常會配合DOM XSS。 * 使用者授權 - 目錄跨越測試 LFI測試,可使用LFIMAP - 網站授權機制測試 - 權限控管機制測試 * 邏輯漏洞 - 網站功能測試 - 網站功能設計缺失測試 - 附件上傳測試 如果有上傳檔案有限制檔案類型,可先改附檔名,如果不行可以改MAGIC NUMBER * 輸入驗證 - XSS 如果ZAP掃描到可先使用簡單的`<script> alert(1) </script>`,如果不行可參考: https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html - SQL Injection 如果ZAP掃描到後可使用SQLMAP去做驗證,操作教學: https://tryhackme.com/room/sqlmap - XML Injection XXE會導致RCE、SSRF,通常可以使用wpscan尋找漏洞,然後用現成exploit code(例如CVE-2021-29447) - SSL Injection - XPath Injection XPath的繞過認證,與SQL Injection很像,但現在應該很少用了,一樣是用ZAP確認即可 - Code Injection 通常確認用nikto確認以及application version確認,沒有就先算了 - OS Commandind - Forge HTTP * Web Service - WSDL - XML架構測試 - XML內容測試 - XML參數傳遞測試 * API - API弱點測試