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