WordPress XML-RPC PingBack 漏洞分析

Screen Shot 2014-03-12 at 9.47.56 AM

最近有文章概述了如何使用WordPress的XML-RPC pingback功能进行DDos攻击。本文将会对该攻击进行分析,同时为网站管理员提供信息来保护他们的网站。

这不是新的漏洞

WordPress的 XML-RPC API 不是新推出的.  下面是七年前wordpress的bug数据.

Screen Shot 2014-03-12 at 10.15.29 AM

尽管该漏洞不是最新的,不过攻击代码/工具却是近两年才出现。工具的出现为脚本小子提供了便利,进而造成了更多的DDoS攻击。

WordPress XML-RPC Pingback DDoS 攻击过程

XML-RPC pingback功能提供了一个合法的方式来从不同的作者那里连接内容。本文就是介绍如何利用一些博客站点的XML-RPC功能来对第三方网站进行攻击。

Patsy Proxy 攻击

SpiderLabs 的同事Daniel Crowley 在2012的DerbyCon大会上演示了一篇”The Patsy Proxy: Getting others to do your dirty work“的文章,文中讨论了通过第三方网站发送攻击流量的各种方式。 (查看PPT). 此外,还发布了利用工具.其中一种工具叫做 “DDoS attacks via other sites execution tool (DAVOSET)” ,它能够通过很多不同的站点发送攻击流量.  下面DAVOSET中用到的URL列表

Screen Shot 2014-03-12 at 11.41.59 AM

通过一个”Patsy Proxy”站点发送攻击数据非常简单.下面我们仔细看下WordPress 的XML-RPC Pingback 问题.

WordPress XML-RPC Pingback DDoS 攻击

下面是一个使用curl进行攻击的命令

Screen Shot 2014-03-12 at 12.03.50 PM

黄色高亮的数据是一个WordPress “Patsy Proxy” 网站,橘黄色高亮的数据时被攻击的网站. 需要注意的是出于测试目的需要在报头中加上 “Content-Type: text/xml” 否则XML-RPC 服务会认为该请求不合法,然后响应如下:

Screen Shot 2014-03-12 at 12.07.26 PM

攻击者发送完请求之后,  Patsy Proxy WordPress 站点会向被攻击站点发出如下的HTTP请求:

Screen Shot 2014-03-12 at 12.14.28 PM

注意HTTP请求的格式是只有两行:

  • URI
  • Host request header

不过被攻击站点上的WAF(web应用防护系统)会识别出该攻击来保护网站.  正常的浏览器发送的请求包含很多包头. 由于pingback DDoS 攻击不像其他的协议攻击(如NTP)一样,不会使用任何类型的放大攻击方式, 如果请求的URI会让攻击站点进行后台计算就会造成更大的危害。

保护措施

禁用XML-RPC

如果你不想使用XML-RPC,禁用它是完全可能的.  可以参考文章: even plugins that will disable it.

禁用Pingback 请求

可以通过向function.php中添加如下文件来禁用pingback:

Screen Shot 2014-03-12 at 12.26.38 PM

识别原始的 Pingback 请求

通过WAF能够识别原始的pingback XML 攻击请求.  详情可以在这查看 。

在受害网站上识别Pingback 原始Requests

正如之前提到的,尽管URI是动态变化的, 但是所有的代理XML-RPC pingback 的HTTP请求只有两行.  可以使用WAF识别并响应(比如把请求的IP加入黑名单)这种异常。

[via@spiderlabs / 91ri.org]