Cve-2017-3599
背景:
Oracle MySQL的MySQL服务器组件中的漏洞(子组件:服务器:Pluggable Auth)。 受影响的受支持版本是5.6.35及更早版本以及5.7.17及更早版本。 容易“利用”的漏洞允许通过多种协议进行网络访问的未经身份验证的攻击者破坏MySQL服务器。 成功攻击此漏洞可能导致未经授权的能力导致MySQL服务器挂起或频繁可重复崩溃(完整的DOS)
复现:
启动服务
登陆
执行poc
此时mysql服务已经dos了
流量分析:
18为注入payload的流量
注入后的结果:四次挥手没有完成,而且多次尝试重新握手但是都失败了
分析:
如上面的代码所示,如果发送到MySQL服务器的缓冲区指向的长度为\ xFF,则指向该数据包的指针将增加9个字节。
如果攻击者在该值之后发送密码长度为\ xFE或\ xFF且小于9字节的认证数据包,则net_field_length_ll函数会将指针定位到变量边界之外的数据包。
get_56_lenc_string函数将继续执行计算数据包中剩余的字节数。
指令max_bytes_available - = len_len将引发整数溢出,其中max_bytes_available的值将变为非常大的无符号整数。
下次调用get_string函数时,它将使memchr读出边界并退出并出现分段错误。
用户名user之后,跟的是密码的长度,poc中是/xff,密码为空,满足造成攻击的条件。
正常情况下登录时如果密码为空则应该直接执行认证,而不是再有其他字节