一次從外網 JoomlaCMS 滲透 Getshell,再到內網域滲透
簡介
靶機作者:licong
靶機描述:域控中存在一份重要文件(獲取域控權限) 靶機主機有5臺:ubantu、win2008、win7、win2012、centos 攻擊主機:KALI(192.168.93.128)、Win10(192.168.1.103)
拓撲圖

其中 KALILinux 的 IP 會在文章中有變動,因為我搞這把靶場的時候中途關機過幾次,隨著開啟啟動VMware后DHCP會自動給它分配一個新的IP,所以我的 KALI 在文章中變成了 192.168.1.128、192.168.1.129、192.168.1.130!
(小弟第一次做拓撲圖,就這樣吧...)
JoomlaCMS深入滲透
通過開放了 http 服務,我首先來看看 192.168.93.20 的 web,先是枚舉了一下頁面發現如下:

發現有一個 401 登陸認證的頁面:
http://192.168.93.20/reports

經過一系列的 admin:admin、admin:admin123 ... 等等弱口令嘗試后果斷放棄!通過搜索了一下 Windows 2008 相關的漏洞發現有一個永恒之藍:


但是沒啥用,這個先暫時緩緩,總不能在一棵樹上吊死吧!
來到下一個 IP : 192.168.93.30 ! 繼續我們的永恒之藍看看能不能打下來:

看了沒用啊,靶機還是有點"困難"的啊,原本以為這靶機存在永恒之藍就可以打下了,事不如愿吶。
繼續下一個 IP :192.168.93.100!通過再次的端口掃描所有詳細信息后得知:

它開放了 22(ssh),80(http),3306(mysql),其中它 80 端口的 web 所使用的 CMS 為 Joomla!JoomlaCMS它是一套全球通用的CMS,所使用的腳本語言通常是 PHP。
訪問 http://192.168.93.100 發現頁面上沒有什么可以利用點:

通過使用 Joomscan 這款工具對它進行了一系列掃描:
https://github.com/rezasp/joomscan
掃描結果如下:


其中有利用價值的文件目錄有這些:
http://192.168.93.100/administrator/ http://192.168.93.100/robots.txt http://192.168.93.100/configuration.php
administrator 目錄是一個登陸頁面,嘗試了它的默認密碼以及弱口令無果:

來到 robots.txt 文件,沒有發現泄漏了重要文件信息:

登陸Mysql數據庫,管理員賬號
但是 configuration.php~ 這個文件泄露了 mysql 的數據庫連接信息:

如上圖所示,我們得到了一個 mysql 的用戶:
user:testuser pass:cvcvgjASD!@
用泄露的用戶名和密碼嘗試登陸 mysql:
mysql -h192.168.93.100 -utestuser -p pass:cvcvgjASD!@

通過查詢 joomla 數據庫的 am2zu_users 表下的 username、password 字段內容發現 administrator 用戶的密碼是加密的,而且不知道是啥加密,估計是加鹽了。有知道的大佬麻煩告訴我,我會很感激的!

抱著試一試的心態去 cmd5 解密了一下無果:

額...那么換個思路!既然 admin 的密碼拿不到,我們可不可以修改它的密碼或者說添加一個管理員用戶進去呢?
通過觀看官方文檔發現它可以通過 SQL 語句來添加一個新的用戶:
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn




Joomla拿到Webshell
通過插入 SQL 數據我們成功添加了一個 admin2 用戶,密碼是 secret,登陸它的 web:
http://192.168.93.100/administrator/index.php

之后在模板新建一個 php 文件:Extensions -> Templates -> Templates


訪問 http://192.168.93.100/templates/beez3/8888.php 得到一枚 SHELL:


雖然得到了一枚 webshell,但是發現執行不了 shell 命令!但是呢可以切換目錄,我切換目錄到網站絕對路徑下發現這些文件:

執行不了命令那么我通過瘋狂翻目錄文件找到了一個 test.txt 文件,里面好像是一個賬號密碼:

通過得到的密碼嘗試 SSH 登陸:

登陸成功后查看了一下內核:

臟牛提權
發現內核版本大于 2.6.22 ,那么可以用臟牛提權(Linux kernel >= 2.6.22(2007年發行,到2016年10月18日才修復))
https://github.com/FireFart/dirtycow/blob/master/dirty.c
(到了這里我本來想放棄的,后來是問了團隊的老哥給的思路方法才知道)

提權成功,我們來切換一下用戶 firefart :

內網橫向滲透
登陸成功!接下來通過 MSF 生成一個木馬來得到一個 shell 進行后滲透:

通過 xshell 我發現上傳不了文件:
后來通過 WinSCP 工具才上傳成功的!

給 shell.elf 文件可執行權限,然后運行后 MSF 反彈回來一個 shell:


之后先添加路由表掃描一下內網存活主機:

掃描存活主機使用的模塊是這個:

這個時候掃描出來發現內網存活了這些:
192.168.93.1 192.168.93.10 192.168.93.20 192.168.93.30 192.168.93.100 192.168.93.120
但是不知道它具體是什么操作系統,那么可以通過這個模塊來對內網進行探測操作系統:
auxiliary/scanner/smb/smb_version

掃描出來有三臺主機,其實探測出來的和我們NMAP信息搜集出來的結果八九不離十,只不過是我們知道了靶機 IP 的情況下才探測出來操作系統,而現在是通過橫向滲透才知道的:
[+] 192.168.93.20:445 - Host is running Windows 2008 Datacenter SP2 (build:6003) (name:WIN2008) (domain:TEST) [+] 192.168.93.10:445 - Host is running Windows 2012 R2 Datacenter (build:9600) (name:WIN-8GA56TNV3MV) (domain:TEST) [+] 192.168.93.30:445 - Host is running Windows 7 Professional SP1 (build:7601) (name:WIN7) (domain:TEST)
以上三臺主機是有 TEST域的,說明他們在一個域里!我通過MSF 爆破 Windows 2008 這臺主機的 smb 登陸憑證爆破成功:

user:administrator pass:123qwe!ASD
接著我先把它的流量代理出來,使用 socks4 代理:
auxiliary/server/socks4a



設置完畢后,配置 proxychains 在 /etc/proxychains.conf 這個文件,在末尾吧端口更改為剛剛設置監聽的 1080 端口:
socks4 127.0.0.1 1080

為了驗證我們是否代理流量成功,我掃了一下 192.168.93.20(Windows 2008)這臺主機的端口開放情況:
proxychains nmap -T4 -P 80,1433,3306,3389 192.168.93.20

掃描成功!這個時候就可以在掃它內網了!然后我本來想用 Socks4的,但是失敗了不知道為啥,后面我又把它換成 Socks5:

在掃它內網之前我需要吧 KALI 這臺主機的流量給代理出來,下面我用到的 socks5代理,工具是 SSF:
Win10:ssfd.exe -p 1050 KALI:./ssf -F 1051 -p 1050 192.168.1.103



獲取域控密碼拿到Flag
代理成功后我們通過 wmiexec 去連接 windows 2008:
wmiexec.exe administrator:123qwe!ASD@192.168.93.20



查看 Windows 2008 的 ip 后發現 dns 為 test.org,接著 ping test.org 獲取到了域控制器的 IP :

這個時候嘗試抓取 test.org 域里的 administrator 密碼,先上傳一個 mimikatz 到 windows2008:

之后本來想用 mimikatz 讀取密碼的,但是在 dos 下進入不了 mimikatz 的交互界面...還是太菜了!我接著 MSF 生成了一個木馬得到了 Windows 2008 的shell,然后直接運行 getsystem 得到了 SYSTEM 權限 :

然后上傳了一個 mimikatz 直接讀取到了明文密碼:

最后通過 smb 連接到了2012機器拿到 flag:

這一篇文章就到這吧。