使用 777 權限將程式碼注入 PHP 檔案中

使用 777 權限將程式碼注入 PHP 檔案中

我醒來發現我的共享網站主機中具有 777 權限的所有資料夾都有兩個新的 php 檔案。無法讀取檔案內的程式碼 - 這是解碼版本:http://pastie.org/779226(什麼......?)該程式碼甚至被注入到一些 PHP 檔案中。

我不知道有人會怎麼做?我知道擁有 777 權限並不是最聰明的事情,但他們首先是如何進入我的資料夾系統的。

我只是一個客戶端程式設計師,如果我能提供一些關於如何防止這種情況在未來發生的建議,那就太好了。

乾杯。

答案1

這是該腳本的去混淆版本:http://pastie.org/private/iobgt7aetg8mezoepucsg

該程式碼似乎包含來自另一個網站的外部 PHP 程式碼,並在此過程中收集有關訪客的資訊。

發生這種情況的一種方法是您允許在可從外部存取的目錄上傳檔案。在沒有適當驗證的情況下這樣做是危險的,因為惡意使用者可以上傳帶有惡意程式碼的 PHP 檔案(使用您上傳的圖像)。如果網路伺服器配置不正確,程式碼將在請求時運行。

為了避免此類問題,請確保:

  • PHP 進程由有限的使用者執行。
  • 不需要編輯的檔案設定為只能由擁有者寫入(0644 或 0744,取決於您是否需要執行位元)。
  • 僅將上傳目錄設為可寫入。
  • 嘗試使用 webroot 以外的上傳目錄。然後使用readfile()來提供文件。
  • 驗證文件。如果您希望表單僅允許圖像,請驗證魔術位元並確保圖像有效。這是一個被嚴重忽視的步驟。這同樣適用於任何其他格式。不要依賴客戶端發送的檔案副檔名或 mimetype。檢查實際文件內容。

答案2

我能想到的至少有兩種可能性:

  1. 他們發現了您的 FTP 密碼
  2. 他們在您的 PHP 軟體中發現了一個缺陷

為了防止它們發生:

  1. 使用複雜的密碼(至少 9 個字元、混合大小寫、數字和特殊字元)
  2. 逃離777,彷彿它是野獸的數字;嘗試給網頁伺服器不再而不是對腳本的讀取權限,並對必須寫入的(希望很少見)資料夾/檔案授予特殊權限。

如果您有權存取某些日誌(來自 Apache 的存取日誌和來自您網站執行的任何 FTP 伺服器的 FTP 日誌),這可能有助於了解發生了什麼。

令人懷疑的是,他們是否設法透過腳本中的一個簡單缺陷進行如此多的更改,除非它是一個真正廣泛開放的缺陷(就像您有一個不受保護的腳本,僅將fopen() 包裝在用戶喜歡的任何內容上),所以我會檢查FTP 登入優先順序。

相關內容