2014-01-21 102 views
0

我希望nginx拒絕擁有/ webroot/uploads文件夾的用戶如何拒絕所有子目錄中的腳本執行?

例如,

/webroot/uploads/user1 
/webroot/uploads/user2 
/webroot/uploads/user999 

執行任何shell腳本或二進制文件(php,pl,py)。

惡意代碼通常隱藏在JPG或GIF文件。像badfile.php.jpg

我也看到malacious二進制文件被上傳到該文件夾​​。

這裏我初步的規則:

location ~ /webroot/uploads/(.+)\.php$ { 
deny all; 
} 

location ~ /webroot/uploads/(.+)\.pl$ { 
deny all; 
} 

但我不知道它是足夠強大。所以我感謝你的幫助。

回答

1

的nginx沒有CGI支持,正是因爲這個原因 - 默認情況下,人們不能上傳任意腳本或可執行文件,然後運行它們。

如果你有FastCGI的橋,它執行的文件,檢查其配置以及是否可以拒絕的webroot/uploads目錄。

你也可以強制上傳的文件不具有執行位,但(這取決於誰是正在運行的文件,見下文),可能沒有幫助。有關詳細信息,請使用類似upload_store_access user:rw(詳情請參見HttpUploadModule documentation)。

的最後一點是錯誤配置的一個漏洞,通過這些人可以有隨機文件(.php不是終止)由PHP處理程序來執行。請按照this article瞭解詳細信息和正確的配置。

相關問題