早在 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 主機存在與否將返回不同的錯誤資訊這個線索,如果這些主機在內網中確實存在,攻擊者可以進行內網主機掃描。