遵循Apache的连接为什么是一个安全风险

也就是说,符号链接不一定是坏的,但是你必须清楚地理解你的Apache的实现。 对于非chrooted的Apache,符号链接肯定会给文档根目录之外的文件带来很大的风险。

我从一个已经被回答的旧线程得到了这个。 我想知道系统链接如何暴露文档根之外的其他文件? 我以为他们只指向一个目录。 我是否不必特意添加符号链接来让黑客离开文档根目录? 另外在这种情况下,chroot是如何提供帮助的

通常情况下,你运行在你的web服务器(PHP,Perl的,无论)实际的Web应用程序。 这个networking应用程序通常具有对文档根目录中某个目录的写入访问权限来上传内容。

现在,您的web应用程序中可能存在一个bug,攻击者可能会在web-root中创build任意文件(也可能是符号链接)。 当你没有真正的上传组件时,这甚至是可能的,但只是错误。 这些错误并不罕见,您应该忽略它们。 特别是像wordpress这样的应用程序在这类错误方面有相当长的历史。

既然攻击者可以在你的web根目录下创build文件和符号链接,它可以让这些符号链接指向你的web服务器上的任意文件( /etc/passwd ,带有明文密码的configuration文件,…),这最终可能意味着攻击者可以下载所有这些文件,并使用收集到的信息进行进一步的攻击,比如对SSH密码的字典攻击,对数据库的简单授权访问,…)

如果你限制你的Apache不遵循符号链接,这个攻击vector是更难以利用。 另一个同样重要的安全措施是将访问权限限制为仅针对Web服务器/ Web应用程序用户的必要文件。 您还可以使用外部应用程序服务器(通常用于python和ruby应用程序,但也可以使用fcgi设置),并与除核心Web服务器用户之外的其他用户一起运行。 如果您限制访问此用户和Web服务器用户之间的重要文件,则可以获得相当高的安全级别。

另一种方法是将你的apache拷贝到文档根目录,在这种情况下,操作系统将确保Apache进程不能访问文档根目录以外的任何文件。 请注意,使用普通发行版的软件包很难实现。

假设我设法进入你的服务器,但是我知道你很快就会closures这个漏洞(也许这是一个每隔60秒改变一次的RSA标记密码,而且我恰好有密码在接下来的30秒)。 或者我只有30秒的时间把我的后门部署到你的服务器上,因为你已经把你的terminal打开了,而且我知道你很快就会回来,我是一个oppertunist。

对于我来说最快最容易的事情就是使用symlink /来说htdocs/mysuperhiddendirectory/ ,现在我可以远程浏览整个文件系统。

如果你使用chroot来运行Apache,那么symlinking /只会链接到进程的根目录,而不是实际的OS根目录。