我发现了一个小小的 PHP 脚本,它允许你从浏览器地址栏手动输入 GET 请求并执行命令。我玩了一下它,发现我可以像 www-data 一样做各种各样的事情,包括查看整个目录结构、复制文件用户帐户、精心编写脚本和 PHP 文件、上传脚本、PHP 文件和可执行程序以及上传和编译 C 源代码。
我在一台无法通过互联网访问的备用机器上玩了这个游戏,但它让我开始思考如果将此代码注入网页会发生什么(类似的事情也发生在我过去使用过的开源软件上),并想知道可以采取哪些步骤来锁定服务器以防止这种情况发生。
那么,有没有什么方法可以阻止 www-data 执行允许在服务器上执行这些操作的命令(以防万一以这种方式访问它)?
答案1
如果你不需要某些东西,最好把它关掉。
通常可以做两件事:
1)如果你不需要 PHP,那么就关闭它。在 Ubuntu 下,你可以看到已打开的模块列表/etc/apache2/mods-enabled/
尝试:
ls /etc/apache2/mods-enabled/
如果您看到诸如php5.conf
和 之类的条目php5.load
,请将其删除。同样,您可以找到 cgi*.* 模块,如果安装了其他模块,例如 ruby 和 perl(默认情况下不安装)。正如其他人提到的,suexec 也是一个潜在的问题,因为使用“su”功能,您可以看到整个世界。
2)如果你使用 PHP,那么你可以尝试运行mod-security。这将阻止很多事情,前提是你打开了他们那里的大多数检查。但是,它也会阻止很多合法的事情(即,如果你在页面上有 bash 代码,该页面可能根本无法提供服务!)
当然,主要目的是能够安装 Drupal 或 Wordpress 等系统。这些系统使用 PHP,因此您不得不使用它。现在请注意,Drupal 等系统具有完整的安全团队处理对使用 Drupal 的服务器或客户端存在潜在危险的问题。因此它通常是安全的。