- Web滲透技術及實戰案例解析
- 陳小兵 范淵 孫立偉編著
- 3113字
- 2018-12-26 19:37:05
1.13 巧用Cain破解MySQL數據庫密碼
MySQL數據庫用戶密碼跟其他數據庫用戶密碼一樣,在應用系統代碼中都是以明文出現的,在獲取文件讀取權限后即可直接從數據庫連接文件中讀取,例如asp代碼中的conn.asp數據庫連接文件,在該文件中一般都包含有數據庫類型,物理位置,用戶名和密碼等信息;而在MySQL中即使獲取了某一個用戶的數據庫用戶(root用戶除外)的密碼,也僅僅只能操作某一個用戶的數據庫中的數據。在實際攻防過程中,在獲取WebShell的情況下,是可以直下載MySQL數據庫中保留用戶的user.MYD文件,該文件中保存的是MySQL數據庫中所有用戶對應的數據庫密碼,只要能夠破解這些密碼那么就可以正大光明地操作這些數據,雖然網上有很多修改MySQL數據庫用戶密碼的方法,卻不可取,因為修改用戶密碼的事情很容易被人發現!
研究MySQL數據庫的加解密方式,在網絡攻防過程中具有重要的意義;設想一旦獲取了網站一定的權限后,如果能夠獲取MySQL中保存用戶數據,通過解密后,即可通過正常途徑來訪問數據庫;一方面可以直接操作數據庫中的數據,另一方面可以用來提升權限。通過在網絡上查找資料,目前關于破解MySQL方面的研究不多,本文算是拋磚引玉,雖然效果不是特別好,但也算是對破解MySQL數據庫用戶密碼的一種探討和嘗試。
1.13.1 MySQL加密方式
MySQL數據庫的認證密碼有兩種方式,MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密,MySQL數據庫中自帶Old_Passwor(dstr)和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-90所示,MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入實際的密碼運算中,通過觀察在很多用戶中都攜帶了“*”,在實際破解過程中去掉“*”,也就是說MySQLSHA1加密的密碼的實際位數是40位。

圖1-90 在MySQL數據庫中查詢同一密碼的不同SHA值
1.13.2 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目錄下,如圖1-91所示,有關用戶一共有三個文件即user.frm、user.MYD和user.MYI,MySQL數據庫用戶密碼都保存在user.MYD文件中,包括root用戶和其他用戶的密碼。

圖1-91 MySQL數據庫用戶密碼文件
1.13.3 獲取MySQL數據庫用戶密碼加密字符串
使用UltraEdit-32編輯器直接打開user.MYD文件,打開后使用二進制模式進行查看,如圖1-92所示,可以看到在root用戶后面是一串字符串,選中這些字符串將其復制到記事本中,這些字符串即為用戶加密值,即506D1427F6F61696B4501445C90624897266DAE3。
注意:
(1)root后面的“*”不要復制到字符串中。
(2)在有些情況下需要往后面看看,否則得到的不是完整的MYSQLSHA1密碼,總之其正確的密碼位數是40位。

圖1-92 獲取加密的字符串
1.13.4 將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”標簽,然后將用戶密碼的加密字符串“506D1427F6F61696B4501445 C90624897266DAE3”加入到MySQL Hashes破解列表中,如圖1-93所示,單擊“Add to list”按鈕,如圖1-94所示,將字符串復制到Hash輸入框中。Username可以任意輸入。

圖1-93 使用Cain破解MySQL密碼的主界面

圖1-94 添加MySQL Hashes
1.13.5 使用字典進行破解
如圖1-95所示,選中剛才添加的需要破解的字符串,然后選擇“Dictionary Attack(字典破解)”,在彈出的菜單中選擇“MySQL SHA1 Hashes”方式進行破解,該方式針對的是MySQL4.1后續版本,對于MySQL4.1以前版本則選擇“MySQL v3.23 Hashes”進行破解。

圖1-95 選擇破解方式
選擇“Dictionary Attack(字典破解)”后會出現一個窗口,主要用于選擇字典,如圖1-96所示,在Dictionary下方右鍵單擊,可以添加一個或者多個字典文件,字典選擇完畢后可以在“Options(選項)”中進行選擇,然后單擊“Start”按鈕進行破解。

圖1-96 MYSQL字典破解設置
說明:
在“Options(選項)”中一共有8種方式即:
(1)字符串首字母大寫。
(2)字符串反轉。
(3)雙倍字符串。
(4)字符串全部小寫。
(5)字符串全部大寫。
(6)在字符串中加入數字。
(7)在每個字符串中進行大寫輪換。
(8)在字符串中加入2個數字。
破解成功后Cain會給出一些提示信息,如下所示:
Plaintext of user <none> is databasepassword Attack stopped! 1 of 1 hashes cracked
表明加密的密碼是“databasepassword”。回到Cain破解主窗口中后,破解的密碼值會自動加入到“Password”列中,如圖1-97所示,便于查看。

圖1-97 破解密碼成功
1.13.6 破解探討
(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”,其結果如圖1-98所示。

圖1-98 修改MySQL用戶密碼
再次使用UltraEdit-32軟件重新打開“C:\Program Files\MySQL\MySQL Server 5.0\data\MYSQL\user.MYD”獲取其新的密碼字符串“B046BBAF61FE3BB6F60CA99 AF39F5C2702F00D12”,然后重新選擇一個字典,在本例中選擇生成的生日字典,如圖1-99和圖1-100所示,僅僅選擇小寫字符串進行破解,很快就獲取了破解結果。實際結果表明使用Cain來破解MySQL密碼時,如果是采用字典破解,那么破解效果跟字典強度有關,只要破解的密碼在字典中,則一定能夠破解。

圖1-99 再次破解MySQL密碼

圖1-100 修改MySQL密碼后再次進行破解MySQL密碼
(2)使用彩虹表進行破解
在Cain中還提供彩虹表破解MySQL,在破解方式中選擇“Cryptanalysis Attack”-“MySQL SHA1 Hashes via RainbowTables”即可,如圖1-101和圖1-102所示,在實際測試過程中由于網絡上提供的sha彩虹表格式是RTI,而Cain中使用的是RT,我將下載的所有彩虹表中文件后綴由RTI修改為RT,然后進行破解,提示信息顯示不成功,應該是彩虹表的格式不一樣,Cain中只承認它自己提供的。

圖1-101 使用彩虹表破解方式

圖1-102 使用彩虹表進行破解
(3)Hash計算器
在Cain中提供了各種Hashes的計算,在主界面中單擊計算機圖標按鈕,即可彈出Hashes計算器,在“Text to hash”中輸入需要轉換的原始值,例如輸入“12345678”,單擊“Calculate”進行計算,如圖1-103所示,可以看到14種Hashes值。

圖1-103 計算Hashes值
(4)生成彩虹表
在Cain的安裝目錄C:\Program Files\Cain\Winrtgen中直接運行Winrtgen,如圖1-104所示,該工具為彩虹表生成器,可以很方便地生成各種類型的彩虹表值。

圖1-104 Winrtgen彩虹表生成工具
(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”進行時間估算,如圖1-105所示,單擊“OK”按鈕完成彩虹表生成設置。
在彩虹表生成器中,如圖1-106單擊“Start”按鈕開始生成彩虹表,在Status中會顯示生成的大小和進度。

圖1-105 設置彩虹表

圖1-106 開始生成彩虹表
由于彩虹表生成的時間比較漫長,在網絡上也沒有搜索到以rt結尾的MYSQL Sha1 hashes表,因此本次破解主要以字典破解為主,彩虹表的破解將在全部生成后進行,關于使用彩虹表來破解MYSQL密碼,請關注安天365論壇(bbs.antian365.com)。在服務器權限設置不太嚴格的情況下,通過WebShell完全可以將MYSQL下的user.MYD文件下載到本地,只要破解了root用戶的密碼,然后借助WebShell可以做很多事情,本文通過使用cain來破解MYSQL密碼,算是一種較好的嘗試,只要使用字典工具生成一些具有一定強度的字典,對于設計不太復雜的MYSQL密碼,破解還是較為容易的。