如何拒绝所有子目录中的脚本执行?

时间:2014-01-21 21:40:00

标签: shell nginx webserver

我希望nginx拒绝在/ webroot / uploads中有文件夹的用户

e.g。

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

执行任何shell脚本或二进制文件(php,pl,py)。

恶意代码通常隐藏在jpg或gif文件中。像badfile.php.jpg

我还看到上传到该文件夹​​的恶意二进制文件。

这是我的初步规则:

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

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

但我不确定它是否足够强大。所以我感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

nginx完全没有CGI支持 - 默认情况下,人们无法上传随机脚本或可执行文件然后运行它们。

如果您有一个执行文件的FastCGI桥接器,请检查其配置以及是否可以拒绝webroot / uploads目录。

您也可以强制上传的文件没有设置执行位(但取决于运行文件的人,见下文)可能没有帮助。有关详细信息,请使用upload_store_access user:rw之类的内容(有关详细信息,请参阅HttpUploadModule documentation。)

最后一点是错误配置导致的漏洞,有人可能会通过PHP处理程序执行随机文件(不以.php结尾)。请关注this article以获取详细信息并进行正确配置。