這篇 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
檢查服務
根據上投找到的資訊,有啟動的服務是 80、8080 Ports,透過瀏覽器瀏覽得到以下的訊息。
- 80 200 ok
- 8080 403 Forbidden
並且在 80 Port 上透過 Wappalyzer 分析服務內容。
似乎沒什麼太直接可利用的資訊,接著打開原始碼發現線索。
是一個 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_browser
與 SetEnvIf User-Agent ^Mozilla/4.0 Mozilla4_browser
這兩行,指定了僅能使用 User-Agent
為 Mozilla/4.0
的瀏覽器進行瀏覽。
這部分可以參考文章「How To Change User Agent in Google Chrome」,使用 Chrome 內建的功能,就可以直接進行 User-agent 的變更,變更後瀏覽 8080 Port 可以得到以下畫面。
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;&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 ;
&pdf=make
目前確定有 sh
,變可以更精準的調整 Payload,但又嘗試了一陣子,都無法成功,實際原因也不清楚。
隨後閱讀 PhpTax 0.8 – File Manipulation ‘newvalue’ / Remote Code Execution 一文,使用裡面的 Payload 如下,創建 rce.php
的 Webshell 出來。
{$url}/index.php?field=rce.php&newvalue=%3C%3Fphp%20passthru(%24_GET%5Bcmd%5D)%3B%3F%3E
其路徑為 http://192.168.147.132:8080/phptax/data/rce.php?cmd=
,雖然也依序折騰了一陣子,但至少擺脫在 index.php
、drawimage.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
下編譯、執行。
成功取得 Root Shell。
後記
該篇花最多時間的部分都在開 Shell,不小的 nc 為什麼一連上就會斷線,接著不斷的懷疑 bash、sh 的路徑是否有正確,由於不會回顯,嘗試使用 2> stderr.txt
再接著透過 LFI 並查看,卻沒有任何輸出,直到最後才放棄使用 nc、轉向 php
、perl
,先是從 php 下手,才發現根本沒有 php 的 IDLE,此外 perl 對我來說,是完全陌生的東西,雖然只是套個腳本改一改再執行,但總還是會從熟悉的先下手,直到終於取得 Shell 尬笑了一陣子。