前言
wordPress/ target=_blank class=infotextkey>WordPress是一個知名的開源內容管理系統(CMS),用于創建網站和個人博客。根據預計,目前有35%的網站使用這一知名CMS,如此之大的比例也使其成為了威脅參與者的理想目標。WordPress平臺存在的一大弱點就是允許攻擊者破壞網站的安全性,而這個弱點會隨著網絡安全形勢的嚴峻而更加惡化。
平時,我們經常可以看到有攻擊者針對CMS平臺發起攻擊,這已經不再是一個新聞。威脅行為者已經發現,對網站進行攻擊可以成為一種攻破組織資產的有效手段。這篇文章首先介紹我們在野外觀察到的Payload示例,列舉出針對WordPress的不同類型的攻擊,深入揭秘攻擊者是如何利用非法獲取的管理員訪問權限、API、Alfa-Shell部署和seo投毒來實現攻擊。
利用非法獲取的管理員訪問權限攻擊WordPress站點
這種方法需要使用管理員的帳戶和密碼訪問使用WordPress架構的站點。攻擊者可能會利用漏洞,或使用泄露的密碼及弱密碼實現登錄,這一過程可以通過向目標站點的/wp-login.php發送POST請求來實現。
使用弱密碼登錄的攻擊示例:
攻擊者進行暴力破解時所使用的密碼:
成功登錄后,具有管理員訪問權限的攻擊者就能操作多個選項,攻擊者通常會進行如下操作:
1、安裝帶有后門的自定義主題;
2、安裝插件以上傳文件。
在成功獲得管理員特權后,通常會進行這兩種操作,此外攻擊者還可以選擇更改管理員密碼,或創建新的管理員帳戶。最常用的方法是使用公共的主題,利用遠程代碼執行(RCE)漏洞來嵌入自定義的后門。除此之外,還有一些文件上傳的插件,攻擊者可以借助這些插件直接上傳Payload。
應該注意的是,我們經常見到一個后門會部署具有相似功能的另一個后門。當Payload/命令/代碼被編碼在Cookies或POST數據中時,使用GET或POST請求就可以完成部署。解碼的邏輯位于此前部署的后門內部。在部署后,攻擊者將收到新上傳組件的URL。
我們觀察到的另外一個值得注意的功能是能修改已經存在的.php文件,從而使惡意請求更加隱蔽。首先,記錄所有可寫的路徑,選擇一個合適的隨機路徑,然后修改所選的文件。
在已經使用的Payload中,修改現有.php文件的功能:
在實際案例中,修改后的程序功能已經應用于index.php之中,以在Unix隱藏文件(點文件)中包含使用.ico作為擴展名的惡意腳本,并偽裝成圖標。
使用隱藏的.ico文件修改WordPress index.php的示例:
另一個值得關注的功能是,可以影響其他相鄰的域名。要實現這一點,需要Web服務器具有多個域名,并且需保證當前用戶對該目錄具有寫訪問權限。
嘗試將Payload上傳到相鄰域名:
在被攻擊的WordPress站點中部署Alfa-Shell
眾所周知,攻擊者可能會將WebShell部署到其攻擊的WordPress網站上。在這里,我們將重點介紹ALFA TEAM/solevisible使用的高級工具之一——Alfa-Shell。
Alfa-Shell:
Solevisible的GitHub帳戶:
這個WebShell為遠程代碼執行提供了一個用戶友好的界面。例如:注冊CGI Handler以允許執行Perl、Python或Bash腳本。Alfa-Shell還可以從WordPress配置文件中獲取數據庫憑據,從而進行數據庫轉儲,并列舉出所有虛擬域名和DNS設置。
用于執行各種類型腳本的CGI Handler:
部署的Bash腳本示例:
該WebShell還支持多種平臺,包括windows。實際上,它能夠從開發人員網站下載反向Shell并執行。
Alfa Team制作的簡單Windows反向Shell二進制文件:
被攻擊者的WordPress也可以作為重定向到廣告頁面的網站,可以通過修改主題的JAVAScript文件或頁眉/頁腳生成器功能(例如:wp-contentthemestwentyseventeenfunctions.php)來實現。經過修改后的JavaScript可以將用戶重定向到攻擊者指定的網站。
經過混淆后的JavaScript重定向:
重定向后指向的網頁:
在被攻擊的WordPress網站中實現搜索引擎優化(SEO)投毒
攻擊者利用被攻擊的WordPress網站做的另一類行為是搜索引擎優化(SEO)。我們發現,已經部署的PHP腳本會在GET請求中接收關鍵字。
WordPress“搜索引擎”:
腳本首先檢查User-Agent是否與以下正則表達式中的其中一條相匹配,并檢查$_SERVER[“REMOTE_ADDR”](發出HTTP請求的參與者的IP地址)的反向DNS查詢是否包含google子字符串。如果發現,則將$isbot變量設置為1。
部署腳本的片段:
如果$isbot不為0,則使用相同的關鍵字,對硬編碼的URL地址發出另一個HTTP請求。
部署腳本的片段:
如果返回的文本長度小于1000個字符,則使用必應(Bing)搜索引擎執行其它查詢,并將與特定正則表達式匹配的結果附加到$text后面。
攻擊者使用的文本:
如果再次執行相同的查詢,就會返回最終的html頁面,并將其保存在服務器上。
最終頁面:
如果未設置$isbot,并且HTTP_REFERER包含類似于Google、Bing或Yahoo的字符串,則將其重定向到另外一個網站。
部署腳本的片段:
發表虛假或誤導性文章
遭到入侵的WordPress網站也可能會被用于發布虛假或誤導性文章,其中的內容往往很少,或者沒有真實的細節。取而代之的是,攻擊者往往會使用引人注目的標題,并編造吸引人注意的故事。
在遭到入侵的站點上發布的故事示例:
從以上示例可以看出,被攻擊的站點發布了帶有明顯語法錯誤或煽情報導的故事。通常,這些文章的內容難以被理解。攻擊過程是通過WordPress的XML-RPC應用程序編程接口(API)來實現的,該接口可以傳輸數據并執行多項任務,例如上傳新文件、編輯和發布帖子。
POST /xmlrpc.php和metaWeblog.newPost(左側)以及帖文內容(右側)示例:
攻擊者可以使用POST /xmlrpc.php和metaWeblog.newPost,這允許將博客內容直接(甚至遠程)發布到WordPress網站。
針對WordPress站點的安全建議
上面提到的示例,只是目前已知攻擊者會使用的一些技術。實際上,如果沒有保證良好的安全性,易受攻擊的WordPress站點很容易遭到攻擊者的濫用。為了降低被攻擊的風險,我們建議用戶使用雙因素認證(2FA)插件來防止憑據濫用,同時建議掃描未修復的漏洞。用戶和網站管理員可以采用以下防護措施:
1、部署基本的安全防御措施,以減少網站的攻擊面;
2、禁用或刪除過時的或易受攻擊的插件;
3、使用虛擬補丁程序來修復補丁不可用的漏洞,特別是針對需保障業務連續性的系統更要關注這一點;
4、應用權限最小化原則;
5、定期將CMS更新到最新版本,包括CMS中使用的插件。