Penetration Test 滲透測試筆記

2021-11-30

筆記滲透測試的步驟與使用工具,彙整各式的滲透測試工具與方法,綜合而成能夠自我實作的滲透測試步驟,在請滲透測試專業公司進行之前,能夠先以最少的費用來得到報告。

logo

相關連結

WEB APPLICATION PENTESTING CHECKLIST | GitHub

Web penetration testing | guif.re

滲透測試步驟

本次的滲透測試以 Web Application 為主旨進行說明,執行滲透測試一定要記得取得受測單位的同意,否則有相關的法律責任。

基本素養

認識虛擬機常見的檔案格式:

副檔名 用途
.vmdk 檔案資訊
.ovf 虛擬機資訊
.wmx 虛擬機資訊
.ova 包含 vmdk 及 ovf
.vmwarevm 包含 vmdk 及 wmx

認識虛擬機的網路架構:

  • Bridge (VMNET 0)
  • Host-Only (VMNET 1)
  • LanSegment (VMNET 2)
  • NAT (VMNET 8)

熟悉 Linux 操作,掌握基礎的 vim 操作。

可以透過 Bandit 來深化學習 Linux 的使用技術。

掌握 WAF 及 CDN 的特性,試圖繞過 WAF 以及 CDN。

WAF & CDN

WAF 不是萬能可以被很多方式繞過,例如 Url 變造、罕見的 HTTP Method、GBK 位元寬等。

CDN 在現行網站架構的普及使用,讓滲透測試有更多的方式,包含 Cache Deception 以及 Poison。

可以透過 keycdn 達成從各國連線,測試是否由不同 edge 回應,判斷使用 CDN 與否,

也可以使用 virustotal 來搜尋域名判斷對應 IP 的變化以及憑證的變化歷程,

同樣可以使用 crt.sh 來檢視網站的憑證歷程。

如果對方是使用 CloudFlare 的 CDN 可以直接在網址後方加上 /cdn-cgi/trace

偵查 Explore

許多的資訊可以藉由 OSINT, Open Source INTelligence 取得。

使用 BuiltWith 確認網站的使用技術。

偵查階段可以調查 DNS 登記資訊,使用 WHOIS 來查詢,確認域名的註冊者身分,可以取得電話與電子郵件用於推測後台登入的帳號。

DNS Lookup
DNS Query - Whois
DNSDUMPSTER

檢查 HTTP Header 的 Security 以及判斷是否使用 HTTPS 並判斷使用的 Cipher 與 Protocol 是否存在漏洞。

Http Headers Scan
SSL Server Test

瀏覽 Web App 的程式碼判斷是否存在有幫助的註解,觀察介接的 XML、JSON、API 等服務,使用 Wappalyzer 確認 Web App 使用的框架與第三方元件,對於 Web App 的 finger Printing 進行識別。

WhatWeb & Wappalyzer Scan

使用 OWASP ZAP 自動化 Enumerate 管理者後台(Admin)、尋找任何可供利用的檔案 (bak, md, git, db) 等等。

使用 Burp Suite 與 OWASP ZAP 來進行 URL Fuzzing 的 Forced Browse,檢查任何隱藏的網址,並使用 Spider 來爬出 Web App 的架構輪廓。

此外也可以使用 DirBuster 來對 Directory Traversal 搜尋是否有未直接公開的檔案及路徑。

稍具侵略性可以使用 NMAP 來觀察 Web Server 有開啟的 Service 與 Port,從而判斷可以攻擊的管道。

侵略性提升可以使用弱點掃描工具,例如 OpenVAS 以及 Nikto 來進行掃描,自動化地取得 Web App 可能存在的弱點。

攻擊 Attack

如果 QueryString 或者 Post 搭配資料庫的 Web App 設計,使用 SQLMAP 驗證是否存在 SQL Injection 漏洞。

如果有任何可以供輸入資料的 input,測試各種 XSS、Command Injection 與 SQL Injection 的可能。

測試是否可以藉由修改 DOM 來達到 XSS。

使用 Metasploit 驗證弱點是否可以被利用。

使用 Mimikatz 攻擊來取得作業系統的密碼。

使用 Kali 內的 dirb 進行資料夾掃描以及 wfuzz 進行 query string 關鍵字猜測。

報告 Report

滲透測試的目的不是攻陷網站,而是產生出有價值的報告,幫助受測者改善網站的弱點。