1. 程式人生 > >詳解MYSQL資料庫密碼的加密方式及破解方法

詳解MYSQL資料庫密碼的加密方式及破解方法

MYSQL資料庫使用者密碼跟其它資料庫使用者密碼一樣,在應用系統程式碼中都是以明文出現的,在獲取檔案讀取許可權後即可直接從資料庫連線檔案中讀取,例如asp程式碼中的conn.asp資料庫連線檔案,在該檔案中一般都包含有資料庫型別,物理位置,使用者名稱和密碼等資訊;而在MYSQL中即使獲取了某一個使用者的資料庫使用者(root使用者除外)的密碼,也僅僅只能操作某一個使用者的資料庫中的資料。

在實際攻防過程中,在獲取Webshell的情況下,是可以直下載MYSQL資料庫中保留使用者的user.MYD檔案,該檔案中儲存的是MYSQL資料庫中所有使用者對應的資料庫密碼,只要能夠破解這些密碼那麼就可以正大光明的操作這些資料,雖然網上有很多修改MYSQL資料庫使用者密碼的方法,卻不可取,因為修改使用者密碼的事情很容易被人發現!

研究MYSQL資料庫的加解密方式,在網路攻防過程中具有重要的意義;試想一旦獲取了網站一定的許可權後,如果能夠獲取MYSQL中儲存使用者資料,通過解密後,即可通過正常途徑來訪問資料庫;一方面可以直接操作資料庫中的資料,另一方面可以用來提升許可權。通過在網路上查詢資料,目前關於破解MYSQL方面的研究不多,本文算是拋磚引玉,雖然效果不是特別好,但也算是對破解MYSQL資料庫使用者密碼的一種探討和嘗試。

(一)MYSQL加密方式

MYSQL資料庫的認證密碼有兩種方式,MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之後的版本都是MYSQLSHA1加密,MYSQL資料庫中自帶Old_Password(str)和Password(str)函式,它們均可以在MYSQL資料庫裡進行查詢,前者是MYSQL323加密,後者是MYSQLSHA1方式加密。

(1)以MYSQL323方式加密

SELECT Old_Password('bbs.antian365.com');

查詢結果MYSQL323 = 10c886615b135b38

(2)以MYSQLSHA1方式加密

SELECT Password('bbs.antian365.com');
查詢結果MYSQLSHA1 = *A2EBAE36132928537ADA8E6D1F7C5C5886713CC2   執行結果如圖1所示,MYSQL323加密中生成的是16位字串,而在MYSQLSHA1中生存的是41位字串,其中*是不加入實際的密碼運算中,通過觀察在很多使用者中都攜帶了“*”,在實際破解過程中去掉“*”,也就是說MYSQLSHA1加密的密碼的實際位數是40位。


(二)MYSQL資料庫檔案結構

1.MYSQL資料庫檔案型別

MYSQL資料庫檔案共有“frm”、“MYD”“和MYI”三種檔案,“.frm”是描述表結構的檔案,

“.MYD”是表的資料檔案,“.MYI”是表資料檔案中任何索引的資料樹。一般是單獨存在一個資料夾中,預設是在路徑“C:\Program Files\MYSQL\MYSQL Server 5.0\data”下。

2.MYSQL資料庫使用者密碼檔案

在MYSQL資料庫中所有設定預設都儲存在“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL”中,也就是安裝程式的data目錄下,如圖2所示,有關使用者一共有三個檔案即user.frm、user.MYD和user.MYI,MYSQL資料庫使用者密碼都儲存在user.MYD檔案中,包括root使用者和其他使用者的密碼。


(三)破解MYSQL密碼

1.獲取MYSQL資料庫使用者密碼加密字串

使用UltraEdit-32編輯器直接開啟user.MYD檔案,開啟後使用二進位制模式進行檢視,如圖3所示,可以看到在root使用者後面是一串字串,選中這些字串將其複製到記事本中,這些字串即為使用者加密值,即506D1427F6F61696B4501445C90624897266DAE3。

注意:  

(1)root後面的“*”不要複製到字串中。  

(2)在有些情況下需要往後面看看,否則得到的不是完整的MYSQLSHA1密碼,總之其正確的密碼位數是40位。


2.將MYSQL使用者密碼字串加入到Cain破解列表    

本文使用Cain & Abel 來破解MYSQL資料庫使用者密碼,Cain & Abel是一個可以破解屏保、PWL密碼、共享密碼、快取口令、遠端共享口令、SMB口令、支援VNC口令解碼、Cisco Type-7口令解碼、Base64口令解碼、SQL Server 7.0/2000口令解碼、Remote Desktop口令解碼、Access Database口令解碼、Cisco PIX Firewall口令解碼、Cisco MD5解碼、NTLM Session Security口令解碼、IKE Aggressive Mode Pre-Shared Keys口令解碼、Dialup口令解碼、遠端桌面口令解碼等綜合工具,還可以遠端破解,可以掛字典以及暴力破解,其sniffer功能極其強大,幾乎可以明文捕獲一切帳號口令,包括FTP、HTTP、IMAP、POP3、SMB、TELNET、VNC、TDS、SMTP、MSKERB5-PREAUTH、MSN、RADIUS-KEYS、RADIUS-USERS、ICQ、IKE Aggressive Mode Pre-Shared Keys authentications等。   

Cain & Abel 目前最新版本是4.9.30,軟體下載地址:http://www.newhua.com/soft/53494.htm。下載Cain & Abel 後,直接安裝,然後執行它,在Cain & Abel 主介面中單擊“Cracker”標籤,然後將使用者密碼的加密字串“506D1427F6F61696B4501445C90624897266DAE3”加入到MYSQL Hashes破解列表中,如圖4所示,單擊“Add to list”,如圖5所示,將字串複製到Hash輸入框中。Username可以任意輸入。



3.使用字典進行破解   

如圖6所示,選中剛才新增的需要破解的字串,然後選擇“Dictionary Attack(字典破解)”,在彈出的選單中選擇“MYSQL SHA1 Hashes”方式進行破解,該方式針對的是MYSQL4.1後續版本,對於MYSQL4.1以前版本則選擇“MYSQL v3.23 Hashes”進行破解。


選擇Dictionary Attack(字典破解)”後會出現一個視窗,主要用於選擇字典,如圖7所示,在Dictionary下方右鍵單擊,可以新增一個或者多個字典檔案,字典選擇完畢後可以在“Options(選項)”中進行選擇,然後單擊“Start”按鈕進行破解。

說明:

在“Options(選項)”中一共有8種方式即:

(1)字串首字母大寫

(2)字串反轉

(3)雙倍字串

(4)字串全部小寫

(5)字串全部大寫

(6)在字串中加入數字

(7)在每個字串中進行大寫輪換

(8)在字串中加入2個數字   破解成功後Cain會給出一些提示資訊,如下所示:

Plaintext of user  is databasepassword
Attack stopped!
1 of 1 hashes cracked
表明加密的密碼是“databasepassword”。回到Cain破解主視窗中後,破解的密碼值會自動加入到“Password”列中,如圖8所示,便於檢視。


(四)破解探討 1.字典破解跟字典強度有關    

單擊“開始”-“程式”-“MYSQL”-“MYSQL Server 5.0”-“MYSQL Command Line Client”開啟MYSQL Command Line Client,輸入密碼後,輸入以下程式碼重新設定一個新密碼:

Use MYSQL
update user set password=password("1977-05-05") where user="root";
flush privileges;
本試驗中將原來的密碼修改為“1977-05-05”,其結果如圖9所示。

再次使用UltraEdit-32軟體重新開啟“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL\user.MYD”獲取其新的密碼字串“B046BBAF61FE3BB6F60CA99AF39F5C2702F00D12”,然後重新選擇一個字典,在本例中選擇生成的生日字典,如圖10,圖11所示,僅僅選擇小寫字串進行破解,很快就獲取了破解結果。實際結果表明使用Cain來破解MYSQL密碼,如果是採用字典破解,那麼破解效果跟字典強度有關,只要破解的密碼在字典中,則一定能夠破解。



2.使用彩虹表進行破解

在Cain中還提供彩虹表破解MYSQL,在破解方式中選擇“Cryptanalysis Attack”-“MYSQL SHA1 Hashes via RainbowTables”即可,如圖12,圖13所示,在實際測試過程中由於網路上提供的sha彩虹表格式是RTI,而Cain中使用的是RT,我將下載的所有彩虹表中檔案字尾由RTI修改為RT,然後進行破解,提示資訊顯示不成功,應該是彩虹表的格式不一樣,Cain中只承認它自己提供的。



3.Hash計算器   

在Cain中提供了各種Hashes的計算,在主介面中單擊計算機圖示按鈕,即可彈出Hashes計算器,在“Text to hash”中輸入需要轉換的原始值,例如輸入“12345678”,單擊“Calculate”進行計算,如圖14所示,可以看到14種Hashes值。


4.生成彩虹表

在Cain的安裝目錄C:\Program Files\Cain\Winrtgen中直接執行Winrtgen,如圖15所示,該工具為彩虹表生成器,可以很方便的生成各種型別的彩虹表值。


5.設定彩虹表

在圖15中單擊“Add Table”在“Rainbow Table properties”中的Hash中選擇“MYSQLsha1”,然後可以根據實際情況分別設定“Min Len”、“Max Len”、“Index”、“Chain len”、“Chain Count”以及“N of tables”的值,一般情況僅僅需要設定“Min Len”、“Max Len”以及“N of tables”的值。“N of tables”主要用來測試Hashes生成的完整度,輸入不同的值,會在Table properties中顯示百分比,通過嘗試來確定一共需要生成多少個表,然後單擊“Benchmark”進行時間估算,如圖16所示,單擊“OK”完成彩虹表生成設定。


在彩虹表生成器中,如圖17單擊“Start”開始生成彩虹表,在Status中會顯示生成的大小和進度。


由於彩虹表生成的時間比較漫長,在網路上也沒有搜尋到以rt結尾的MYSQL Sha1 hashes表,因此本次破解主要以字典破解為主,彩虹表的破解將在全部生成後進行,關於使用彩虹表來破解MYSQL密碼,請關注安天365論壇(bbs.antian365.com)。在伺服器許可權設定不太嚴格的情況下,通過Webshell完全可以將MYSQL下的user.MYD檔案下載到本地,只要破解了root使用者的密碼,然後藉助Webshell可以做很多事情,本文通過使用cain來破解MYSQL密碼,算是一種較好的嘗試,只要使用字典工具生成一些具有一定強度的字典,對於設計不太複雜的MYSQL密碼,破解還是較為容易的。