WordPress密码重置功能存在漏洞可获取网站控制权
来自波兰的安全研究人员Dawid Golunski日前公布 WordPress 密码重置功能中存在的安全漏洞的详细细节。
攻击者可以利用该漏洞取得正常网站的密码重置链接, 进而在不需要验证的情况下直接获取网站的控制权限。
安全研究人员发现的这枚漏洞的 CVE 编号为CVE-2017-8295,不过目前WordPress官方仍然未修复该漏洞。
该漏洞主要是在攻击者通过网站后台直接重置管理员账号密码, 正常情况下重置链接应会发送至管理员邮箱。
但由于WordPress在生成密码重置链接时允许用户端提供的主机名称,而攻击者则可以借此修改服务器名称。
修改之后重置密码的邮件则会发送到恶意电子邮件地址中, 攻击者直接通过合法重置链接即可重置账户密码。
这名研究人员还举例说明不需要用户介入即可发生攻击的情况:
1、攻击者发送大量垃圾邮件阻塞管理员的邮箱,等到邮箱无法收信时WordPress会将邮件返回到服务器中。
2、如果管理员设置了邮件自动回复则会将密码重置邮件自动添加到邮件中并发送到攻击者控制的服务器中。
这两种情况均是事先修改了邮件服务器的返回地址进而让密码重置邮件直接寄送到攻击者控制的恶意服务器。
这名安全研究人员已经在十个月前就向WordPress官方提交了漏洞报告,但至今WordPress仍未解决该问题。
因此安全研究人员决定直接公开漏洞的所有细节,希望借此能够敦促WordPress官方早日将这个漏洞修复掉。
漏洞利用情况:
事实上这枚安全漏洞的所述的情况是客观存在的,但在利用和攻击上可以说是相当的麻烦因此降低安全风险。
安全公司Sucuri研究人员认为上述攻击手段仅仅可以在使用单一IP地址的网站并且需要发送大量的垃圾邮件。
想要上网站管理员使用的邮箱服务器因为大量垃圾邮件直接退信并不是容易的事情,因此安全风险会降低些。
而使用多台服务器进行负载均衡或者是使用 CDN 内容分发网络的网站由于IP较多攻击者无法利用这个漏洞。
使用Apache的网站可以Apache参数中的 UseCanonicalName 启用并强制使用静态的 SERVER_NAME 值。
#ServerName指定Apache用于识别自身的名字和端口号。 # 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错 # # 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。 # 参见UseCanonicalName指令 # # 如果你的主机没有注册DNS名,在这里键入它的IP地址 # 无论如何,你必须使用它的IP地址来提供服务, # 这里使用一种容易理解的方式重定向服务 ServerName www.example.com:80 # # UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。 # 当设置为 “Off”时,Apache会使用$用户端$提供的主机名和端口号。<----问题所在 # 当设置为“On”,Apache会使用ServerName指令的值。 # UseCanonicalName On