2009-02-26 74 views
2

我在我的服務器上有一個文件夾,我已將權限更改爲777(讀取,寫入和執行全部)以允許用戶上傳其圖片。CHMOD和我的服務器上的目錄的安全

所以我想知道,這涉及到哪些安全風險?

我已經實現了限制可以上傳哪些文件格式的代碼,但是如果有人找到目錄的位置會發生什麼情況,這會對我的服務器造成任何威脅嗎?

他們可以開始上傳他們想要的任何文件嗎?

謝謝。

+0

這個問題是不可能沒有更多的信息回答。例如,這些文件如何上傳?你的代碼可能有足夠的問題,上傳目錄的權限是你最擔心的問題。 – hop 2009-02-26 02:36:40

+0

謝謝你對我的編碼感到厭惡,但它並沒有真正回答這個問題。這些文件將通過在php頁面中創建的表單上傳。問題的關鍵是要確定是否可以放置一個具有777權限的目錄集? – 2009-02-26 03:11:05

+0

用該信息更新問題 – hop 2009-02-26 12:05:01

回答

0

如果沒有別的,我會刪除所有用戶(如果不是所有者和組)的可執行權限。啓用此功能後,某人可以上傳看起來像圖片但實際上是可執行文件的文件,這可能不會造成任何損壞。

可能也會刪除所有用戶的讀寫權限,並將其限制爲所有者和組,除非您需要匿名訪問。

+0

嗨samoz,謝謝你的回覆。當它說用戶/組,然後每個人 - 誰屬於什麼組?我假設我是主人? – 2009-02-26 02:33:06

-1

您不希望可執行位打開。就* nix而言,可執行位表示您可以真正運行該文件。因此,例如,可以將php腳本作爲JPEG類型上傳,然後有人可以運行該腳本(如果他們知道位置並且它位於Web目錄中)。

1

這些用戶通過什麼方式上傳他們的圖片?如果它在網絡上,那麼您只需要讓Web服務器或CGI腳本用戶訪問該文件夾即可。

這裏最大的危險是用戶可以覆蓋其他用戶文件或刪除其他用戶文件。沒有人無法訪問此文件夾將能夠寫入(除非你有某種客人/匿名用戶)。

如果你需要一個每個人都可以創建文件的目錄,你想要的是模仿/ tmp目錄的權限。

$ chown root:root dir; chmod 777 dir; chmod + t dir;

這樣任何用戶都可以創建一個文件,但他們不能刪除其他用戶擁有的文件。

與其他人所說的相反,unix系統中某個目錄上的可執行位表示您可以將該目錄設置爲當前目錄(對其進行光盤備份)。它與執行無關(目錄的執行毫無意義)。如果你刪除可執行文件位,沒有人能夠'cd'到它。

3

當用戶通過Web表單和一些PHP腳本將文件上傳到服務器時,服務器上的磁盤訪問發生在Web服務器正在運行的用戶標識(通常爲nobody,www-data,apache,_httpd或甚至根)。

這裏請注意,這個單用戶ID被使用,無論哪個用戶上傳文件。

只要沒有本地用戶通過其他方式訪問系統(例如ssh),將上傳目錄權限設置爲0777就沒什麼區別了 - 從某人利用其他地方的安全漏洞在你的系統中,無論如何這些權限都不適用,這樣的攻擊者可能只是使用/tmp

在實際需要的文件或目錄上只設置這些權限總是一個好習慣。在這種情況下,這意味着大概是這樣的:

drwxrws--- 5 www-data www-data   4096 Nov 17 16:44 upload/ 

我假設除了Web服務器的本地用戶將要訪問這些文件,如系統管理員或網頁設計師。將這些用戶添加到您的Web服務器所在的組,並且它們不需要sudo或root權限來訪問該目錄。此外,+s意味着upload/中的新文件和目錄將自動由同一組擁有。

至於你的最後一個問題:只是因爲攻擊者知道目錄在哪裏,並不意味着他可以神奇地讓文件出現在那裏。仍然需要某種服務運行,接受文件並將它們存儲在那裏...所以不,將權限設置爲0777並不直接使其更安全。

不過,也有幾個方面以「安全」和「安全」,你不能在這整個設置文件權限地址:

  • 上傳者仍然可以覆蓋每個人的文件,因爲它們都與工作相同的用戶ID
  • 有人可以上傳惡意PHP腳本上傳目錄,並從那裏運行它,可能利用您的系統並獲得root訪問權限的其他漏洞
  • 有人可以使用你的服務器分發兒童色情
  • 有人可能在上傳了類似paypal.com後從您的服務器運行釣魚網站

...並且可能還有更多。在上傳腳本中可能遇到的一些問題,但是再次瞭解unix文件權限以及它們應用的位置通常在開始學習安全問題時就已經過時了,這表明您可能還沒有準備好解決所有問題可能存在的問題。

有人看你的代碼!