MySQL資料庫提權(一)
- 2021 年 9 月 30 日
- 筆記
一、獲取Mysql登錄帳號和密碼
1.資料庫提權需要知道資料庫的帳號密碼、以及它的配置文件,一般配置文件都在網站的根目錄下,這些配置文件命名有鮮明的特徵,如:conn、config、data、sql、common、inc等等
以上這些文件都有包含連接資料庫的資訊,包括連接帳號,密碼,資料庫名等等,
2.如果在這些文件里找不到需要連接資料庫的資訊,可以到資料庫的安裝目錄下找,默認目錄為:C:\phpStudy2016\MySQL\data\mysql,在此目錄下找到user.myd文件,裡面記錄了登錄帳號和密碼
3.通過暴力破解得到帳號和密碼,這個步驟比較麻煩一些,再有一個,Mysql默認不允許遠程連接,所以要暴力破解,只能通過腳本來進行破解,獲取帳號密碼,運行一個腳本文件,用弱口令加字典掃描,來破解資料庫用戶和密碼
在頂端顯示已經將用戶名和密碼爆破出來,另外暴力破解還可以使用工具,如:hscan、Bruter、hydra(九頭蛇)等,但是這些工具的使用前提是資料庫開啟對外遠程連接,
登錄到mysql中,為root遠程訪問授予許可權,執行語句:
mysql>GRANT ALL PRIVILEGES ON *.* TO root@”%” IDENTIFIED BY “root”;
mysql>flush privileges;
通過遠程機訪問MySQL資料庫:
telnet遠程連接已經可以看得到資料庫的版本資訊,
除了語句開啟遠程連接之外,還可以用大馬(php)腳本來開啟:
開啟成功之後,再利用專業的資料庫連接工具,來遠程連接
比如Navicat for MySQL可視化工具
另外用腳本的方式連接:
可以選定某一個資料庫,在左上角導出,可以導出到本地,此過程也稱為托庫,
另外再使用Bruter工具,掛載字典來破解
二、資料庫提權
1.UDF提權
需要注意的是,MySQL版本小於5.1,udf文件放在:C:\\WINDOWS\\udf.dll或者C:\\WINDOWS\\system32\\udf.dll,
MySQL等於5.1版本的時候,udf文件在:%mysql%\\plugin\\udf.dll ,用select @@plugin dir 查詢plugin文件路徑,默認的在C:/Program File/MySQL/MySQl Server5.1/lib/plugin/udf.dll,如果安裝了phpstudy,目錄可能就在C:\php\MySQL-5.1.50\lib\plugin\udf.dll,在以上的步驟中,已經將遠程連接打開,直接使用提權工具來連接
看到目前的版本是5.5.53,大於5.1版本,提示將udf文件導入到lib\plugin目錄
使用菜刀工具連接到目標主機,
在phpstudy/MySQL/lib下創建plugin目錄,再回到MySQl提權工具導入udf.dll文件
新建號好之後,回到MySQL提權工具
發現導入失敗,原因之一可能是資料庫的配置文件中:secure_file_priv=””;
設置為空後,退出重啟MySQL服務,再來工具導入
發現可以導入成功,並且在真實目錄下也能看到udf.dll文件
現在就可以在工具中執行資料庫命令:Create Function cmdshell returns string soname ‘udf.dll’;語句的意思是通過udf文件來創建一個cmdshell函數,執行創建後,就可以用它(cmdshell)來操作資料庫其他命令,
2.執行”ver”命令:
3.執行”net user”命令:
4.遠程開啟3389埠,因為執行3389是一個函數,所以要先創建類似於cmdshell的3389()函數,
此時目標機是沒有開啟3389遠程埠,
執行3389()函數命令,
再來看遠程桌面狀態
已經開啟了3389埠,我們可以遠程連接到它的伺服器,進行後續操作,
以上UDF是在允許遠程連接的情況下進行,如果不允許遠程連接的情況下,可以運行腳本(kill.php)來輔助udf提權,之所以叫它kill,通殺所有的udf提權
先將moonudf.dll文件導出
成功導出,
5.如同提權工具類似,執行命令之前首先要創建執行該命令的命令執行函數
執行後
語句無報錯,說明創建成功,執行查看用戶命令:
執行成功,也可以手工創建用戶(普通):
此腳本最大的優點在於,如果對方的3306埠完全沒有開放,我們可以用菜刀將此腳本傳入對方主機,通過的方式web訪問腳本,創建函數,來做命令執行,遠程開放對方的某些埠,
綜上就是資料庫UDF提權的所有步驟。