早在 2012 年 12 月 17 日一些採用 PHP 的知名博客程序 WordPress 被曝光存在嚴重的漏洞,該漏洞覆蓋 WordPress 全部已發佈的版本 (包括 WordPress 3.8.1) 。該漏洞的 WordPress 掃描工具也在很多論壇和網站發佈出來。工具可以利用 WordPress 漏洞來進行掃描,也可以發起 DDoS 攻擊。經過測試,漏洞影響存在 xmlrpc.php 文件的全部版本。

最近我也遇到了大規模的 WordPress 後台 (wp-login.php) 爆破,WordPress 差點淪為了駭客手中的殭屍機。不過確實一種另類的 WordPress 暴力破解攻擊。駭客利用 xmlrpc.php 文件來繞過 WordPress 後台的登錄錯誤限制進行爆破。

攻擊方式

這種利用 xmlrpc.php 的攻擊可以繞過這些限制。攻擊的方式直接 POST 以下數據到 xmlrpc.php:

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
  <methodName>wp.getUsersBlogs</methodName>
  <params>
   <param><value>username</value></param>
   <param><value>password</value></param>
  </params>
</methodCall>

其中 username 字段是預先收集的用户名。 password 是嘗試的密碼。關於 getUsersBlogs 接口的更多信息可以參考官方的指南。如果密碼正確,返回為:

密碼錯誤返回為 403:

解決方法:

  • 安裝 Login Security Solution 插件點擊下載
  • 或者刪除 xmlrpc.php 文件。
  • 設置其權限為不可訪問。

附 DDoS 漏洞的利用原理

Pingback 是三種類型的反向鏈接中的一種,當有人鏈接或者盜用作者文章時來通知作者的一種方法。可以讓作者瞭解和跟蹤文章被鏈接或被轉載的情況。一些全球最受歡迎的 blog 系統比如 Movable Type 、 Serendipity 、 WordPress 和 Telligent Community 等等,都支持 Pingback 功能,使得可以當自己的文章被轉載發佈的時候能夠得到通知。 WordPress 中有一個可以通過 xmlrpc.php 文件接入的 XMLRPC API,可以使用 pingback.ping 的方法加以利用。 其他 BLOG 網站向 WordPress 網站發出 pingback,當 WordPress 處理 pingback 時,會嘗試解析源 URL 。如果解析成功,將會向該源 URL 發送一個請求,並檢查響應包中是否有本 WordPress 文章的鏈接。如果找到了這樣一個鏈接,將在這個博客上發一個評論,告訴大家原始文章在自己的博客上。 黑客向使用 WordPress 論壇的網站發送數據包,帶有被攻擊目標的 URL(源 URL) 。 WordPress 論壇網站收到數據包後,通過 xmlrpc.php 文件調用 XMLRPC API, 向被攻擊目標 URL 發起驗證請求。如果發出大量的請求,就會對目標 URL 形成 HTTP Flood 。當然,單純向 WordPress 論壇網站發出大量的請求,也會導致 WordPress 網站自身被攻癱。 除了 DDoS 之外,黑客可以通過源 URL 主機存在與否將返回不同的錯誤信息這個線索,如果這些主機在內網中確實存在,攻擊者可以進行內網主機掃描。