Skip to content

Latest commit

 

History

History
108 lines (57 loc) · 4.6 KB

File metadata and controls

108 lines (57 loc) · 4.6 KB

Instant

  • IP: 10.10.11.37
  • tags: Medium, Linux
  • status: userflag gained

Ping

ping 10.10.11.37

Enumeration

Nmap

首先,使用 nmap 進行掃描,發現了 2280 這兩個 port

sudo nmap -v -sV -O -sS 10.10.11.37

Web

由於該伺服器有開 80 port,因此可以嘗試訪問網站,透過自動轉址可知道 domain 為 instant.htb,與其他題目一樣修改 /etc/hosts 以方便訪問

稍微訪問了一下網站,發現基本上只有 /downloads/instant.apk 路徑比較有趣,可以下載一個 apk 檔案,其他的部分都沒有什麼特別的

此外我也使用 dirsearchgobuster 工具進行掃描,一樣沒有發現有趣的東西

dirsearch --url http://instant.htb/

gobuster dir -k --wordlist /usr/share/seclists/Discovery/Web-Content/common.txt --url http://instant.htb/

APK

在 apk 分析上,我參考了 Android App 逆向入門之一:拆開與重組 apkAPK Decompilation: A Beginner's Guide for Reverse Engineers 這兩篇文章,前者主要以 apktool 進行分析,後者則是以 jadx 進行分析,由於 jadx 有 GUI 介面,因此我主要以後者的方式進行分析

啟動 GUI 並將 apk 檔案放入進行分析後,可在 com/instantlabs.instant 路徑下找到程式相關的原始碼資訊,包含 LoginActivity, RegisterActivity 等等,也可以發現相關的 API 路徑,不過其中最有價值的是 AdminActivities,裡面含有寫死的 authorized jwt session 資訊,權限為 admin

當然我也嘗試去打了一下 API,不過裡面沒有什麼可以更進一步利用的資訊

curl -v 'http://mywalletv1.instant.htb/api/v1/view/profile' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwicm9sZSI6IkFkbWluIiwid2FsSWQiOiJmMGVjYTZlNS03ODNhLTQ3MWQtOWQ4Zi0wMTYyY2JjOTAwZGIiLCJleHAiOjMzMjU5MzAzNjU2fQ.v0qyyAqDSgyoNFHU7MgRQcDA0Bw99_8AEXKGtWZ6rYA'

當然我也有嘗試爆破看看 jwt 的 secret key,不過在使用 rockyou.txt 的情況下並沒有爆破成功

john --wordlist=~/Desktop/temp/rockyou.txt jwt.txt

Another domain

在經過一系列的嘗試之後 (包含猜密碼、創新帳號觀察 jwt 和紀錄的資訊、掃描 mywalletv1 的 domain 等等),我沒有找到近一步利用的方式,因此找了一下官方討論區發現這個這個留言,提到了 apk 中可能不只有一個 doamin 的資訊,且可能進入點與 log 資料相關

而使用了 grep 工具查看 apk 檔案中的資訊後,在 instant/res/xml/network_security_config.xml 中發現了還有一個 swagger-ui.instant.htb domain 存在 (這邊的 instant/ 是先前測試 apktool 產生的資料夾,不過理論上直接對 apk 做 string search 應該也可以找到此字串)

grep -r 'instant.htb' instant/

訪問新找到的 domain 後,發現是一個類似 API 測試的頁面,可以直接在網頁上進行 API 測試,而在其中可以看到有關於 log 的區塊,可能是接下來的進入點

稍微測試了一下,發現 /api/v1/admin/view/logs 可以取得有哪些 log 檔案的資訊,且他也會將 log 檔案的儲存位置回傳,因此我們可知道 log 檔案的儲存位置在 /home/shirohige/logs 中,當然也就知道有一個使用者為 shirohige

/api/v1/admin/read/log 可以用來讀取 log 檔案

User Gain

在上一段中找到了讀取 log 檔案的相關 API,而一個簡單的想法是嘗試看看能不能 path traversal 讀取其他檔案,因此我嘗試了讀取 /etc/passwd 檔案,發現可以成功讀取

而由於該伺服器有開啟 ssh 服務,因此我嘗試讀取 /home/shirohige/.ssh/id_rsa 檔案,發現檔案確實存在且可以讀取

將檔案內容下載並整理後,即可使用 ssh 進行登入,即可取得一般使用者 shirohige 的權限

ssh -o StrictHostKeyChecking=no -i id_rsa [email protected]

userflag 在 /home/shirohige/user.txt

64b86ab5a9c9cc299d70bdb544bbfec6

Privilege escalation

TODO