問題描述

我有一個客户最近被黑客入侵,我注意到,她的網站上出現了奇怪的人物,像Æ和Æ。事實證明,黑客將數據庫中的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。