遠程代碼執行:WordPress 用戶指南

已發表: 2021-04-28

如果您認真對待網站的安全性,那麼是時候了解遠程代碼執行漏洞的危險性以及如何應對它們了。

遠程代碼執行 (RCE) 一詞指的是幾種不同的黑客技術和網絡攻擊,但它們都有一個主要的共同點。 RCE,有時也稱為代碼注入,是黑客入侵各種網站(包括運行 WordPress 作為其內容管理系統的網站)的一種越來越常見的方式。

在本指南中,我們將詳細解釋遠程代碼執行攻擊是什麼樣的,以及避免這種攻擊所需採取的確切步驟。 讓我們來看看。

在本指南中

    什麼是遠程代碼執行 (RCE) 攻擊?

    遠程代碼執行 (RCE) 是一種漏洞,它使黑客能夠訪問和更改其他人擁有的計算機或數據庫。 在 RCE 攻擊期間,黑客通過使用惡意軟件(任意惡意軟件)來超越服務器或計算機。

    遠程代碼執行攻擊是在沒有硬件所有者授權的情況下進行的,並且數據存儲在世界的哪個地方都沒有關係。

    RCE 攻擊解釋

    考慮像白蟻感染這樣的遠程代碼執行攻擊可能會有所幫助:

    • 一隻白蟻在房子下面挖洞。
    • 房主不知道,如果他們知道他們打算造成的損害,肯定不會邀請白蟻進來。
    • 白蟻吃掉房子的地基,直到房子不再站立。

    雖然這個比喻與 RCE 攻擊的工作原理並不完全相同,但 RCE 攻擊實際上更糟。 與必須在您家(或屋內)的白蟻不同,黑客可以從任何地方訪問您的網站。

    事實是,RCE 攻擊非常危險,因為黑客可以在易受攻擊的服務器上執行任何類型的惡意代碼。 如果熟練的 RCE 黑客可以訪問您的 WordPress 網站,那麼他們對您的 WordPress 網站造成的損害真的沒有限制。

    遠程代碼執行示例

    2018 年,微軟披露了在軟件程序 Excel 中發現的遠程代碼執行漏洞。 攻擊者可以利用該漏洞在當前用戶的上下文中運行任意代碼。

    如果當前用戶使用管理用戶權限登錄,攻擊者就可以控制受影響的系統。 然後攻擊者可以安裝程序; 查看、更改或刪除數據; 或創建具有完全用戶權限的新帳戶。 與使用管理用戶權限操作的用戶相比,帳戶配置為在系統上擁有較少用戶權限的用戶受到的影響較小。

    遠程代碼執行

    遠程代碼執行有哪些不同類型?

    為了更好地理解 RCE hack,您需要了解不同類型的遠程代碼執行:

    SQL 注入

    您的 WordPress 網站使用 MySQL 數據庫進行操作。 當攻擊者訪問您的 WordPress 數據庫和您的所有網站數據時,就會發生 SQL 注入。

    通過 SQL 注入,攻擊者可能能夠創建一個新的管理員級用戶帳戶,然後可以使用該帳戶登錄並獲得對 WordPress 網站的完全訪問權限。 SQL 注入還可用於將新數據插入到您的數據庫中,包括指向惡意或垃圾郵件網站的鏈接。

    許多 RCE 漏洞攻擊 WordPress SQL 語句的構造方式。 例如,如果應用程序需要讀取數據庫用戶名,開發人員可能會錯誤地使用如下代碼進行用戶名搜索:

     SELECT * FROM users WHERE name = 'username'

    但是這樣的查詢與 RCE 相關有什麼問題呢? 任何訪問您的 WordPress 網站的訪問者,甚至是惡意的黑客,都可以輸入用戶名。 例如,黑客可能會輸入 '1”1'= –, OR ' 這將導致這樣的 SQL 語句:

     SELECT * FROM users WHERE name = '1'='1' --' OR ''

    假設應用程序繼續在整個數據庫中搜索站點用戶名,然後選擇每個有空白名稱的字段,當 1 等於 1 時,後者始終為真。 最終發生的事情是,為黑客提供了 SQL 數據庫中的每個用戶名。

    然而,像這樣的數據洩漏並不是 SQL 注入的唯一危險。 攻擊者還可以向 SQL 數據庫發送大量命令,這可能會覆蓋或刪除關鍵的 WordPress 站點數據。

    跨站腳本

    跨站點腳本是另一個 RCE 漏洞。 它直接影響站點訪問者,而不是您的服務器。 跨站點腳本 (XSS) 是一種惡意軟件攻擊,它通過利用任何 WordPress 站點上的跨站點漏洞來執行。 事實上,這是 WordPress 網站被黑客入侵的最常見方式,因為有太多 WordPress 插件存在 XSS 漏洞。

    在每個網頁中,代碼和內容都以相同的方式呈現。 但是,Web 瀏覽器能夠將代碼與內容區分開來,因為它始終包含在腳本標記中。 這意味著,如果沒有適當的過濾器,攻擊者就能夠將惡意代碼填充到網頁上允許輸入文本的任何位置。 如果沒有適當的過濾器,攻擊者就能夠將惡意代碼填充到網頁上允許輸入文本的任何位置。 你受到保護嗎?

    這包括易受攻擊的字段,例如搜索欄(通常在 WordPress 網站的每個頁面上)、評論部分,甚至顯示名稱。

    執行此攻擊時,運行您網站的瀏覽器將運行惡意代碼。

    如果跨站點腳本僅在攻擊者的瀏覽器上執行,它就不會成為一個大的安全問題。 但是,當惡意代碼對公眾可見時,例如在您博客文章的評論部分,它也會影響查看內容的任何訪問者。

    憑藉這種遠程執行任何代碼的危險能力,攻擊者可以輕鬆竊取密碼並偽裝成合法用戶。

    他們還可能查看該用戶的個人信息,例如信用卡詳細信息或 PayPal 帳戶信息。

    警告:黑客入侵可能會傳染給您的用戶。 正確的安全性不僅是為了您的保護,也是為了他們的保護。

    目錄遍歷

    此攻擊不針對應用程序或您的 WordPress 站點訪問者。 相反,主要目標是您的實際網站。

    RCE 漏洞利用站點文件如何存儲在您網站服務器的文件系統中。

    通常,數據存儲在標準目錄中,例如 /home/user/public_html。 目錄中的腳本使用相對路徑訪問文件,例如直接引用 /home/user/public_html/wp-admin/index.php 的 wp-admin/index.php。

    當腳本被配置為訪問當前目錄之外的文件時,它只需包含一個“../”即可完成此操作。 這是指比當前目錄高一級的目錄。

    例如,目錄模式 /home/user/public_html/../ 被定向到 /home/user/。

    如果允許腳本從任何自定義文件名讀取或上傳,攻擊者將引導應用程序遍歷目錄,名稱如 ../../../../../../../ ../../etc/passwd.

    如果您還沒有實現重要的安全功能,例如輸入過濾,黑客就可以直接訪問您服務器的核心文件,這對您的站點安全來說是個壞消息。

    您可以採取哪些措施來防止遠程代碼執行 (RCE) 攻擊?

    本指南中提供的詳細信息無意恐嚇您或使您感到恐懼。 相反,它旨在強調始終運行最強大的 WordPress 站點安全措施的重要性日益增加。

    它還提醒您隨時更新您的插件,以確保它們不會受到新的 RCE 漏洞的影響。

    絕大多數 RCE 攻擊可以通過隨時了解它們並在它們發生之前做好準備來緩解或完全停止。 作為 WordPress 網站所有者,重要的是要預測和了解我們的網站服務器如何處理用戶提供的信息。

    如何防止遠程代碼執行 (RCE) 攻擊:5 個步驟

    確保您的站點免受 RCE 漏洞影響的第一種方法是採用多方面的防禦系統。 換句話說,即使一道防線使您失敗,您仍然可以免受潛在攻擊。

    話雖如此,讓我們來看看您應該採取的一些最重要的步驟,以防止這些惡意且通常是危險的攻擊。 有幾個因素會使您的 WordPress 網站更容易受到成功攻擊。

    1. 下載並安裝 iThemes Security Pro 插件

    要開始保護您的站點,請下載並安裝 iThemes Security Pro 插件。

    立即獲取 iThemes Security Pro

    2. 激活版本管理以保持 WordPress 核心、插件和主題更新

    簡而言之:如果您在網站上運行過時版本的 WordPress、插件和主題,您將面臨遭受攻擊的風險。 版本更新通常包括針對代碼中安全問題的補丁,包括遠程代碼執行 (RCE) 漏洞,因此始終運行 WordPress 網站上安裝的所有軟件的最新版本非常重要。

    更新一旦可用,就會出現在您的 WordPress 儀表板中。 練習運行備份,然後在每次登錄 WordPress 站點時運行所有可用更新。 雖然運行更新的任務可能看起來不方便或令人厭煩,但這是一項重要的 WordPress 安全最佳實踐。

    wordpress 插件更新

    很難跟踪每個已披露的 WordPress 漏洞——我們會在我們的 WordPress 漏洞綜述中跟踪並分享它們——並將該列表與您在網站上安裝的插件和主題的版本進行比較。 但是,這並不能阻止 WordPress 黑客針對具有已知漏洞的插件和主題。 在您的網站上安裝具有已知漏洞的軟件可為黑客提供接管您網站所需的藍圖。

    iThemes Security Pro 插件中的版本管理功能允許您自動更新 WordPress、插件和主題。 除此之外,當您運行過時的軟件並掃描舊網站時,版本管理還可以選擇加強您的網站。

    要開始使用版本管理,請在安全設置的主頁上啟用該模塊。

    現在單擊配置設置按鈕仔細查看設置,所有這些設置都是為了保護您的站點。

    • WordPress 更新– 自動安裝最新的 WordPress 版本。
    • 插件更新- 自動安裝最新的插件更新。 啟用此設置將禁用 WordPress 自動更新插件功能以防止衝突。
    • 主題更新- 自動安裝最新的主題更新。 啟用此設置將禁用 WordPress 自動更新主題功能以防止衝突。
    • 運行過時軟件時加強站點 - 當一個月未安裝可用更新時,自動為站點添加額外保護。
    • 掃描舊的 WordPress 站點– 每天對舊的 WordPress 站點的託管帳戶進行掃描,這可能允許攻擊者破壞服務器。 一個存在漏洞的過時 WordPress 站點可能允許攻擊者破壞同一託管帳戶上的所有其他站點。
    • 修復漏洞時自動更新- 此選項與 iThemes Security Pro 站點掃描協同工作,以檢查您的網站是否存在已知的 WordPress、插件和主題漏洞,並在可用時應用補丁。

    插件和主題更新

    現在讓我們仔細看看配置插件和主題更新。 在我們開始之前,快速提醒一下,啟用插件和主題更新設置將禁用 WordPress 自動更新功能以防止衝突。

    插件和主題更新設置都有三個選擇。

    1. 空白/無– 將設置留空將允許 WordPress 管理插件和主題更新。
    2. 自定義- 自定義選項允許您根據自己的喜好精確地自定義更新。 我們將在稍後詳細介紹這一點。
    3. 全部- 一旦有可用更新,全部將更新您的所有插件或主題。

    現在讓我們仔細看看自定義選項。

    選擇自定義選項可為您的插件和主題更新提供三種不同的選擇。 正如我們所見,自定義自動更新設置比 WordPress 的開啟或關閉自動更新選項提供了更多的靈活性。

    3. 掃描您的站點以查找易受攻擊的插件和主題

    iThemes Security Pro Site Scanner 是另一種保護您的 WordPress 網站免受所有軟件黑客攻擊的首要原因的方法:過時的插件和具有已知漏洞的主題。 站點掃描程序會檢查您的站點是否存在已知漏洞,並在可用時自動應用補丁。

    檢查的 3 種類型的漏洞

    1. WordPress 漏洞
    2. 插件漏洞
    3. 主題漏洞

    要在新安裝時啟用站點掃描,請導航到 iThemes Security Pro 設置並單擊站點掃描設置模塊上的啟用按鈕。

    要觸發手動站點掃描,請單擊位於安全設置右側欄的站點掃描小部件上的立即掃描按鈕。

    站點掃描結果將顯示在小部件中。

    如果站點掃描檢測到漏洞,請單擊漏洞鏈接以查看詳細信息頁面。

    在站點掃描漏洞頁面上,您將看到是否有針對該漏洞的修復程序。 如果有可用的補丁,您可以單擊“更新插件”按鈕在您的網站上應用此修復程序。

    在補丁可用和 iThemes 安全漏洞數據庫更新以反映修復之間可能存在延遲。 在這種情況下,您可以將通知靜音,以便不再收到與漏洞相關的任何警報。

    重要提示:在您確認當前版本包含安全修復程序或漏洞不會影響您的站點之前,您不應忽略漏洞通知。

    4. 防止會話劫持

    您應該為 WordPress 網站上的管理員和編輯設置會話劫持保護,以保護自己免受遠程代碼執行漏洞的影響。

    iThemes Security Pro 可信設備功能使會話劫持成為過去。 如果用戶的設備在會話期間發生變化,iThemes Security 將自動將用戶註銷,以防止對用戶帳戶進行任何未經授權的活動,例如更改用戶的電子郵件地址或上傳惡意插件。

    iThemes Security Pro 中的受信任設備功能可用於識別您和其他用戶用於登錄您的 WordPress 站點的設備。 識別出您的設備後,我們可以阻止會話劫持者和其他不良行為者對您的網站造成任何損害。

    當用戶登錄到無法識別的設備時,受信任的設備可以限制其管理員級別的功能。 這意味著,如果攻擊者能夠闖入您的 WordPress 網站的後端,他們將無法對您的網站進行任何惡意更改。

    要開始使用可信設備,請在安全設置的主頁上啟用它們,然後單擊配置設置按鈕。

    在 Trusted Devices 設置中,決定您要使用該功能的用戶,然後啟用Restrict CapabilitiesSession Hijacking Protection功能。

    啟用新的受信任設備設置後,用戶將在 WordPress 管理欄中收到有關待處理的無法識別設備的通知。 如果您當前的設備尚未添加到受信任設備列表中,請單擊“確認此設備”鏈接以發送授權電子郵件。

    單擊無法識別的登錄電子郵件中的確認設備按鈕,將您當前的設備添加到受信任設備列表。

    啟用可信設備後,用戶可以從他們的 WordPress 用戶配置文件頁面管理設備。 在此屏幕中,您可以批准或拒絕可信設備列表中的設備。

    此外,您可以選擇註冊某些第三方 API 以提高可信設備識別的準確性,並使用靜態圖像地圖來顯示無法識別的登錄的大致位置。 查看受信任的設備設置以查看可用的集成,

    5. 為所有管理員用戶開啟兩步驗證

    雙因素身份驗證是通過需要兩種不同的驗證方法來驗證個人身份的過程。 谷歌在其博客上分享說,使用雙因素身份驗證可以阻止 100% 的自動機器人攻擊。 賠率不差!

    iThemes Security 插件允許您為 WordPress 站點激活雙因素身份驗證,因此用戶必須輸入輔助代碼才能登錄。

    iThemes Security Pro 提供的三種兩因素身份驗證方法包括:

    1. 移動應用程序– 移動應用程序方法是 iThemes Security Pro 提供的最安全的兩因素身份驗證方法。 此方法要求您使用免費的雙因素移動應用程序,例如 Authy 或 Google Authenticator。
    2. 電子郵件- 雙因素的電子郵件方法會將時間敏感代碼發送到您用戶的電子郵件地址。
    3. 備用代碼– 一組一次性使用代碼,可用於在主要兩因素方法丟失時登錄。

    要開始在您的網站上使用雙因素身份驗證,請在 iThemes Security Pro 設置的主頁上啟用該功能。

    按照此處的步驟繼續為您的 WordPress 站點設置雙因素身份驗證。 如果您遵循了我們的建議並為特權用戶啟用了強制要求,那麼接下來您將看到輸入雙因素令牌的位置。

    兩步驗證

    RCE 預防:其他提示

    1. 只使用完善的軟件應用程序和插件

    “逃避”的過程非常適合作為您抵禦 RCE 漏洞的第一道防線。 但是,除了腳本標籤之外,還有一些其他方式可以讓服務器和瀏覽器解釋代碼。

    如果您的目標是自己跟踪每一個,那將非常複雜,需要大量的時間和資源。

    幸運的是,應用程序開發人員對 RCE 漏洞問題進行了大量思考。

    最好使用像 WordPress 這樣值得信賴且信譽良好的 CMS(內容管理系統),因為平台內置了解決方案以及您在其上運行的主題和插件。

    當新版本發佈時,讓所有軟件應用程序和插件保持最新始終是必不可少的。 當漏洞被發現時,軟件開發人員將全天候工作,以領先於他們發現的弱點。

    對於插件和主題作者來說都是如此。

    如果您使用的是自定義 CMS 而不是 WordPress,您可以通過使用參數化查詢來保護您的站點免受潛在 SQL 注入的影響。 此查詢類型將提前通知應用程序您將要運行的確切查詢類型。 然後它會識別並刪除黑客可能試圖插入的添加命令。 它將發送原始查詢並排除添加的字符串,而不是成功插入。

    在上面的示例中,參數化查詢如下所示:

     $query="SELECT * FROM users WHERE name = ?"
    $results=$query.execute(“'OR'1'='1'--”)

    在這種情況下,您的數據庫正在以正確的方式處理 ' OR '1'='1' 。 它將此查詢視為僅包含文本的字符串,並了解沒有與所提供名稱相關聯的用戶。

    2. 驗證用戶的輸入

    開始防止 RCE 漏洞的最佳位置是您的站點用戶與您的應用程序交互的位置。

    最簡單的方法是刪除和過濾掉任何不需要的字符。

    另一種選擇是通過轉義來保留內容。

    如果您不熟悉轉義的含義,那麼在此過程中您會指示您的計算機查看一些似乎是作為常規文本的代碼。 例如,您可以將腳本標記替換為“<script>”。

    通過這樣做,Web 瀏覽器理解在指定位置顯示小於“< 和大於”符號。 但它不會將整個文本字符串視為代碼。

    對於用戶來說,結果是不可見的。

    3. 最小特權原則

    在極少數情況下可能會出現零日 RCE 漏洞。 這意味著您、CMS 和應用程序開發人員都不知道特定的新型攻擊。

    即使在這種情況下,我們仍然能夠通過設置一些關於應用程序能夠做什麼的簡單規則來限制攻擊者可以造成的損害。

    例如,假設您正在設計一個從數據庫讀取的應用程序。 確實沒有必要為新應用程序提供刪除或寫入數據庫記錄的能力或權限。

    在這種情況下,即使攻擊者試圖破壞腳本,他們也會遇到錯誤並失敗。

    最小權限原則也很有用,因為它與 PHP 函數有關。

    PHP 函數是各種在線攻擊者的標準目標。 應該禁用您的應用程序可能不需要的健壯函數,例如 ini_set()(這允許您從腳本中更新 PHP 設置)或 exec()(運行作為文本傳遞的代碼)。

    這可以防止黑客和攻擊者將它們用於惡意目的。

    這個特殊的想法適用於保護您網站面向公眾的區域以及服務器端代碼。

    4. 內容安全策略

    Content-Security-Policy 是大多數現代 Web 瀏覽器在 HTTP 中使用的標頭。 它決定了瀏覽器應該在您的網站上加載什麼類型的內容。 當您從應用程序或 Web 服務器發送標頭時,您將能夠指定允許運行的腳本類型和位置。

    使用該策略有助於防止黑客注入他們的惡意腳本。

    5. 阻止腳本讀取 Cookie

    另一種選擇是防止腳本讀取 cookie。 這會阻止請求被發送到其他站點。

    這是通過使用 SameSite=Strict 或 HttpOnly 屬性設置它們來完成的。 即使在黑客的代碼在您的 WordPress 網站上運行的情況下,您也將阻止他們訪問您網站用戶的身份驗證 cookie。

    這將顯著減少 WordPress 遠程代碼執行攻擊期間的潛在損害。

    總結:WordPress 遠程代碼執行

    當您發現正在尋找您的 WordPress 網站的所有潛在安全威脅時,如果您感到有點不知所措,請不要擔心。 事實是,威脅很多,但解決方案可能很簡單。

    我們希望本指南能幫助您了解 WordPress 網站上 RCE 攻擊的風險。 通過實施一些 WordPress 安全最佳實踐以及上述 5 個步驟,您將擁有更好的防線。

    將每週 WordPress 漏洞報告發送到您的收件箱
    註冊報告

    遠程代碼執行