话虽如此,符号链接不一定是坏事,但您必须清楚了解 Apache 的实现。对于非 chrooted Apache,符号链接肯定会带来很大的风险,可能会暴露文档根目录之外的文件。
我从一个老话题这个问题已经回答过了。我想知道系统链接如何暴露文档根目录之外的其他文件?我以为它们只指向一个目录。我是否必须自己专门添加符号链接以允许黑客离开文档根目录?此外,在这种情况下 chroot 如何提供帮助
答案1
通常,您会在 Web 服务器内运行实际的 Web 应用程序(php、perl 等)。这些 Web 应用程序通常具有对文档根目录内某个目录的写入权限,以便上传内容。
现在,您的 Web 应用程序中可能存在一个错误,该错误允许攻击者在您的 Web 根目录中创建任意文件(然后可能还有符号链接)。即使您没有实际的上传组件,只有错误,这也可能是可能的。这些错误并不罕见,您应该忽略它们。尤其是像 wordpress 这样的应用程序,这种错误的历史相当悠久。
现在攻击者可以在你的 Web 根目录中创建文件和符号链接,它可以让这些符号链接指向你的 Web 服务器上的任意文件(/etc/passwd
,带有明文密码的配置文件,...),这最终可能意味着攻击者可以下载所有这些文件并使用收集到的信息进行进一步的攻击,例如对 SSH 密码的字典攻击、对数据库的简单授权访问,...)
如果您限制 Apache 不遵循符号链接,则此攻击媒介将更难被利用。另一个同样重要的安全措施是将读取权限限制为仅对 Web 服务器/Web 应用程序用户绝对必要的文件。您还可以使用外部应用程序服务器(与 Python 和 Ruby 应用程序常见,但也与 fcgi 设置常见)并与核心 Web 服务器用户以外的其他用户一起运行它。如果您限制此用户和 Web 服务器用户之间对重要文件的访问,则可以获得相当高的安全级别。
另一种方法是将 Apache chroot 到文档根目录,在这种情况下,操作系统将确保 Apache 进程无法访问文档根目录之外的任何文件。请注意,使用常见发行版中的软件包很难实现这一点。
答案2
假设我设法进入了你的服务器,但我知道你很快就会修复这个漏洞(也许这是一个每 60 秒更改一次的 RSA 标记密码,而我恰好拥有接下来 30 秒的密码)。或者我只有 30 秒的时间将后门部署到你的服务器中,因为你的终端打开了,我知道你很快就会回来,而我是一个机会主义者。
/
对我来说,最快捷、最简单的事情就是进行符号链接htdocs/mysuperhiddendirectory/
,这样我就可以远程浏览你的整个文件系统。
如果您正在运行 apache,chroot
那么符号链接/
将仅链接到该进程的根目录,而不是实际的操作系统根目录。