一、獲取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提權的所有步驟。
