WordPress是一個知名的開源內容管理系統(tǒng)(CMS),用于創(chuàng)建網(wǎng)站和個人博客。根據(jù)預計,目前有35%的網(wǎng)站使用這一知名CMS,如此之大的比例也使其成為了威脅參與者的理想目標。WordPress平臺存在的一大弱點就是允許攻擊者破壞網(wǎng)站的安全性,而這個弱點會隨著網(wǎng)絡安全形勢的嚴峻而更加惡化。
平時,我們經(jīng)常可以看到有攻擊者針對CMS平臺發(fā)起攻擊,這已經(jīng)不再是一個新聞。威脅行為者已經(jīng)發(fā)現(xiàn),對網(wǎng)站進行攻擊可以成為一種攻破組織資產(chǎn)的有效手段。這篇文章首先介紹我們在野外觀察到的Payload示例,列舉出針對WordPress的不同類型的攻擊,深入揭秘攻擊者是如何利用非法獲取的管理員訪問權限、API、Alfa-Shell部署和SEO投毒來實現(xiàn)攻擊。
利用非法獲取的管理員訪問權限攻擊WordPress站點
這種方法需要使用管理員的帳戶和密碼訪問使用WordPress架構的站點。攻擊者可能會利用漏洞,或使用泄露的密碼及弱密碼實現(xiàn)登錄,這一過程可以通過向目標站點的/wp-login.php發(fā)送POST請求來實現(xiàn)。
使用弱密碼登錄的攻擊示例:
攻擊者進行暴力破解時所使用的密碼:
成功登錄后,具有管理員訪問權限的攻擊者就能操作多個選項,攻擊者通常會進行如下操作:
1、安裝帶有后門的自定義主題;
2、安裝插件以上傳文件。
在成功獲得管理員特權后,通常會進行這兩種操作,此外攻擊者還可以選擇更改管理員密碼,或創(chuàng)建新的管理員帳戶。最常用的方法是使用公共的主題,利用遠程代碼執(zhí)行(RCE)漏洞來嵌入自定義的后門。除此之外,還有一些文件上傳的插件,攻擊者可以借助這些插件直接上傳Payload。
應該注意的是,我們經(jīng)常見到一個后門會部署具有相似功能的另一個后門。當Payload/命令/代碼被編碼在Cookies或POST數(shù)據(jù)中時,使用GET或POST請求就可以完成部署。解碼的邏輯位于此前部署的后門內部。在部署后,攻擊者將收到新上傳組件的URL。
在被攻擊的WordPress網(wǎng)站中實現(xiàn)搜索引擎優(yōu)化(SEO)投毒
攻擊者利用被攻擊的WordPress網(wǎng)站做的另一類行為是搜索引擎優(yōu)化SEO優(yōu)化投毒。我們發(fā)現(xiàn),已經(jīng)部署的PHP腳本會在GET請求中接收關鍵字。
WordPress“搜索引擎”:
腳本首先檢查User-Agent是否與以下正則表達式中的其中一條相匹配,并檢查$_SERVER[“REMOTE_ADDR”](發(fā)出HTTP請求的參與者的IP地址)的反向DNS查詢是否包含Google子字符串。如果發(fā)現(xiàn),則將$isbot變量設置為1。
部署腳本的片段:
如果$isbot不為0,則使用相同的關鍵字,對硬編碼的URL地址發(fā)出另一個HTTP請求。
部署腳本的片段:
如果返回的文本長度小于1000個字符,則使用必應(Bing)搜索引擎執(zhí)行其它查詢,并將與特定正則表達式匹配的結果附加到$text后面。
攻擊者使用的文本:
如果再次執(zhí)行相同的查詢,就會返回最終的HTML頁面,并將其保存在服務器上。
最終頁面:
如果未設置$isbot,并且HTTP_REFERER包含類似于Google、Bing或Yahoo的字符串,則將其重定向到另外一個網(wǎng)站。
部署腳本的片段:
發(fā)表虛假或誤導性文章
遭到入侵的WordPress網(wǎng)站也可能會被用于發(fā)布虛假或誤導性文章,其中的內容往往很少,或者沒有真實的細節(jié)。取而代之的是,攻擊者往往會使用引人注目的標題,并編造吸引人注意的故事。
在遭到入侵的站點上發(fā)布的故事示例:
從以上示例可以看出,被攻擊的站點發(fā)布了帶有明顯語法錯誤或煽情報導的故事。通常,這些文章的內容難以被理解。攻擊過程是通過WordPress的XML-RPC應用程序編程接口(API)來實現(xiàn)的,該接口可以傳輸數(shù)據(jù)并執(zhí)行多項任務,例如上傳新文件、編輯和發(fā)布帖子。
POST /xmlrpc.php和metaWeblog.newPost(左側)以及帖文內容(右側)示例:
攻擊者可以使用POST /xmlrpc.php和metaWeblog.newPost,這允許將博客內容直接(甚至遠程)發(fā)布到WordPress網(wǎng)站。
針對WordPress站點的安全建議
上面提到的示例,只是目前已知攻擊者會使用的一些技術。實際上,如果沒有保證良好的安全性,易受攻擊的WordPress站點很容易遭到攻擊者的濫用。為了降低被攻擊的風險,我們建議用戶使用雙因素認證(2FA)插件來防止憑據(jù)濫用,同時建議掃描未修復的漏洞。用戶和網(wǎng)站管理員可以采用以下防護措施:
1、部署基本的安全防御措施,以減少網(wǎng)站的攻擊面;
2、禁用或刪除過時的或易受攻擊的插件;
3、使用虛擬補丁程序來修復補丁不可用的漏洞,特別是針對需保障業(yè)務連續(xù)性的系統(tǒng)更要關注這一點;
4、應用權限最小化原則;
5、定期將CMS更新到最新版本,包括CMS中使用的插件。