Vulnhub是一個提供各種漏洞的靶機網站,特別適合萌新進行滲透測試演練。接下來筆者將通過圖文結合的方式對於Vulnhub的DC系列九個靶機做出詳解,不僅要完成靶機作者所布置的任務,還會發散思路用不同的方法尋求突破!

注:今天的文章是 i 春秋論壇作者小鮮略略略表哥發布的文章,公眾號旨在為大家提供更多的學習方法與技能技巧,文章僅供學習參考。
靶機配置及說明
靶機下載地址:
https://www.vulnhub.com/entry/dc-1,292/
靶機:DC1 (VirtualBox) IP:192.168.1.13
攻擊機:Kali(VMware ) IP:192.168.1.10
特別說明:每個靶機作者都對靶機做了詳細的描述以及攻擊目標,比如DC1就需要找到5個flag,最終目標是在root的主目錄中找到並讀取該標志!
通過每個flag所獲得知識點
1、msf的熟練使用以及搜索可利用漏洞(Drupal);
2、留意目標網站的配置文件(慢慢查看別錯過重要信息);
3、數據庫管理員提權(更新管理員密碼或者添加一個新用戶);
4、suid提權的命令(nmap、vim、find、bash、more、less、nano、cp)。
進入正文
開始之前讓我們先來看看靶機與攻擊機的配置,兩者均是橋接模式(建議靶機和kali都保存快照,以便不時之需)。

靶機配置

靶機正常運行

kali配置
下面我們一步一步來,首先查看Kali的ip得到192.168.1.10。

nmap探路,查看靶機IP得到192.168.1.13。

繼續nmap嗅探其他相關靶機其余信息,發現開放22/80。

那我們就先訪問80端口Web界面,通過插件看到CMS是Drupal 7。

那我們繼續查看robots.txt,看看是否有利用的信息:

我們並沒有得到有用的信息,只是找到了幾個沒啥用的頁面,那我們繼續掃描一下目錄。

掃描依舊也沒有什么結果,那我們換個思路,利用msf尋找一下是否有可用的漏洞。

這里我們可以依次利用一下,看看哪個模塊可以成功來利用,我使用第四個Drupalgeddon2漏洞(CVE-2018-7600)。
Drupal系統沒有對表單API接口的AJAX請求輸入進行充分的檢查,這就使得攻擊者能夠向內部表單結構中注入一個惡意的載荷,將導致Drupal系統在未進行用戶認證的情況下執行這個載荷。通過利用這個漏洞,一個攻擊者能夠接管任何Drupal系統用戶的整個站點。

這里我們只需要設置靶機的IP就可以執行exploit。

我們可以看到打開session連接到靶機,接下來我們繼續反彈一個交互的shell。

我們可以看到自己當前的權限以及所在路徑,那我們ls查看一下其他文件。

我們順利拿到第一個flag,同時也拿到了提示信息(尋找配置信息百度即可知道默認配置信息位置),這里最好用more查看不至於落掉重要信息。

我們順利拿到了數據庫的一些關鍵信息(數據庫名、登錄名、密碼),那我們順着線索繼續登錄數據庫。

繼續查看數據庫信息,尋找關鍵線索flag3


到此,我們看到了flag3到底在哪里了(uid為1的用戶是不受Drupal權限管制的,具有最高權限。)現在我們有兩個思路:
- 我們重置管理員的密碼
使用Drupal對數據庫的加密方法,加密腳本位置在網站根目錄下的scripts下,使用加密腳本加密新密碼666666,生成加密密文,然后登錄系統查看flag3。

得到666666的hash值,接下來我們需要重置管理員的密碼為666666,還是得進入數據庫直接更新密碼。

那我們用admin 666666嘗試登錄查看flag3:

我們在content查找到flag3。

- 添加一個管理員權限的用戶
這里需要我們查看一下靶機的版本,然后看一下有沒有適用的腳本去添加用戶,首先我們查看一下靶機版本:

得到版本號為7.24,繼續搜索Druapl可利用的腳本。

我們發現只要小於7.31即可利用:


那我們使用user user 嘗試登錄:

成功登錄,同樣查看flag3信息。

到此,我們成功利用兩種不同思路得到了flag3的信息,得到幾個關鍵線索。
(FIND the passwd、need to -exec that command、in the shadow),那我們就按照線索提示尋找這個密碼。


很明顯flag4在/home/flag4目錄下:

順利得到flag4,同時根據提示(你可以用相同的方法在root目錄下)找到最終flag。
思路1:根據提示,想到suid提權。
那么我們查找一下具有root權限的其他命令,以下幾條均可查詢:
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb { }

發現find命令本身就是root權限,那我們查看一下:

那我們利用find提權。

思路2:既然所有通過find執行的命令都是root權限,那我們利用netcat,可以將它提權為root 權限,首先我們創建一個文件。

繼續利用find將netcat提權為root權限。


同樣的也獲得最終flag!