如何在 Apache 中访问 public_html 的父目录?

How do I access the parent directory of public_html in Apache?

我记得不久前读过如何有人可以从网站访问您的计算机文件系统。我想知道怎么做,这样我就可以测试并防止它发生。

运行 Windows 上的 Apache 2.4 通过 XAMPP

我的虚拟主机是这样设置的:

<VirtualHost *:80>
    ServerName local.scrap
    DocumentRoot "D:/Dropbox/www/scrap/public_html/"
    <Directory "D:/Dropbox/www/scrap/">
    Order allow,deny
    Allow from all
    Require all granted
    </Directory>
    ErrorLog "D:/Dropbox/www/scrap/logs/error.log"
</VirtualHost>

scrap/中有一个index2.htmlscrap/public_html/中有一个index.html

hosts 设置为 127.0.0.1 local.scrap

如果我输入 URL http://local.scrap/,我会得到 index.html。 如果我输入 URL http://local.scrap/../index2.html 它会被重定向到 http://local.scrap/index2.html

为什么 ../ URL 被重定向到 DocumentRoot 路径?

通常,非恶意用户代理会在 URL 中解析 ../,然后再联系服务器。但即使没有它,网络服务器也被设计为不允许在上下文根之外进行这种目录遍历。

您需要使用 telnet/netcat/s_client 进行测试才能确定。

如果网站应用程序代码中存在 directory traversal or LFI 漏洞,那么这确实是可能的。

还有一些webservers have directory traversal vulnerabilities。但是,当前版本的 Apache 在这方面没有已知的弱点。