問題描述

我有一個客戶最近被駭客入侵,我注意到,她的網站上出現了奇怪的人物,像Æ和Æ。事實證明,駭客將資料庫中的 wp_options 表中的 blog_charset 更改為 UTF-7 。我把它設定回 UTF-8,但是我想知道如果在設定為 UTF-7 的時候,是否會產生任何安全漏洞?

我做了一些搜尋,發現那裡曾經是一個 WordPress UTF-7 vulnerability that was fixed in version 2.0.6 。我們正在執行最新版本的 WordPress,所以他們不能使用這個漏洞,但是還有與 UTF-7 相關的其他漏洞利用?真的,有什麼理由駭客會改變 blog_charset 而不是痛苦嗎?我一直試圖確定他們是如何進入的,我想知道這是否連線到某種方式。

最佳解決方案

<>UTF-7 中編碼為+ADw-+AD4-。現在想象一下:

  1. 有人發表+ADw-script+AD4-alert(+ACI-Hello+ACI-)+ADw-/script+AD4-作為評論文字。它將透過所有驗證未轉義。

  2. 資料庫期望並將所有傳入的資料視為 UTF-8 。由於所有的 UTF-7 流都是有效的 UTF-8,所以這不會導致 SQL 錯誤,而 mysql_real_escapehtmlspecialchars 將不會觸及它。

  3. WordPress 傳送頭 text/html;charset=utf-7

  4. WordPress 顯示註釋,期望轉義的資料。但是由於瀏覽器被視為 UTF-7,JavaScript 將被執行。

那麼是的,這是一個安全問題。

所有瀏覽器都不支援 UTF-7,大多數檔案會將文字呈現為 Windows-1252(或其作業系統的預設編碼) 或 UTF-8 。您可以在我的 UTF test pages 上測試瀏覽器的支援。主要的問題是:逃脫不再工作了。


只是改變編碼值不是解決辦法。一般的訪客永遠不能改變,所以你必須找到敞開的門。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。