[Day5] Process (2021 鐵人賽 – PT)
一個滲透測試的流程,可以簡略的分成兩大階段,資訊蒐集與漏洞利用。而資訊蒐集階段則又可以分為偵查與掃描;而漏洞利用則又可以分為普通的漏洞利用與提權,這邊來與各位介紹一下這幾個階段分別具體需要實作的事情有哪些。 偵查 當我們獲取了一個目標,剛開始,我們會需要嘗試著蒐集各種與目標相關的公開情報。以公司來說,我們可以透過各種的搜尋引擎獲取機構的部分資料,例如人士、Email、電話等。很多時候這些資料對於後續的攻擊流程會有很大的幫助。 接下來我們可以試圖了解我們攻擊目標相關的資料,例如使用的作業系統版本,伺服器版本等,假設是一個指定網段的資料蒐集,除了自行的動手掃描之外,我們也可以藉由許多開放資料的平台,例如 Shodan 、 ZoomEye 等。 通常在做偵查的階段,我們也會同時的進行掃描的動作,偵查與掃描主要是為了可以讓我們更進一步的了解我們的目標,確立可以攻擊的弱點等。 掃描 在進行了一系列的偵查之後,我們就可以開始嘗試著對攻擊的目標進行資訊的掃描。通常面對一台伺服器,我們的起手式會是對端口(Port) 進行掃描,目的是觀察伺服器有開了哪一些的服務,在這邊,通常我會使用的工具是 nmap 與 rustscan 等。 如果是網頁伺服器,通常可以對網頁的目錄進行掃描,這邊常見的工具有 dirsearch 、 dirb 、 gobuster 等;部分掃描路徑的工具,也具有掃描 Sub-domain 的功能,例如 gobuster 與 ffuf 等,我們也可以觀察瀏覽器中的 header 等資訊,或是透過 Wappalyzer 工具進行分析。 偵查與掃描通常不會一次就全部的完成,例如我們掃描到了某個 Port 號,開啟了一個網頁伺服器,則可能會再透過人工方式對於這個網頁伺服器進行一些偵查的工作;而偵查完畢後,則可能更換下一個 Port 號開啟的服務進行進一步的偵查與掃描。 尋找漏洞 待我們在偵查與掃描獲得了各種的資訊,就可以試著尋找網路上對於該版本的作業系統、伺服器軟體是否有公開的弱點 (CVE),如果有相關弱點的話,是否有可以進行漏洞利用(Exploti)的腳本,在這邊,通常我會直接在 Google 上搜尋 {服務版本} Exploit,除此之外,也可以透過 exploit-db 、 searchsploit 以及 Github 等方式查找相關的利用方式。 很多時候,我們查找到了某些的漏洞,卻不一定可以馬上地進行使用。舉例來說,我們發現了某個 CMS 在相應版本中的漏洞,而它的使用條件是需要先進行登入,在這種條件下,我們可以先暫存著相關的資訊,以備不時之需,並試圖尋找與開發其他漏洞。 漏洞利用 尋找完相關的 Exploit 腳本後,我們就可以試著執行這些腳本,達到漏洞利用的效果。很多時候,我們也可能需要串接多個不同的漏洞,才能達到遠端命令執行 (RCE)。 當然在大多數情況下,我們不一定有辦法尋找到相對應版本的漏洞進行利用,這種時候就需要透過人工對各個目標進行測試。這種情境下就會比較類似 CTF 的思路,以網頁為例,通常就會以 OWASP Top 10 上常出現的漏洞開始下手進行測試。而 Binary 的 Protocol 則有可能會需要使用到 CTF 中, pwn 的相關技術,進行 Binary Exploitation 利用 Buffer Overflow 等。 ...