如果路径名已知,请尝试从服务器下载文件

如果路径名已知,请尝试从服务器下载文件

我通过这个网址访问网页

http://someRandomName.no.meaning:20025/hello.html

hello.html显示的位置是/var/some/fulder/hello.html。 (我的意思是在服务器中/var/some/fulder/hello.html

我还知道服务器中位于 location 的文件/home/someuser/somefolder/movie.mp4

我该如何尝试下载该文件?我可以使用wget或任何其他实用程序/工具来尝试下载它(将其复制到我的计算机)吗?

如果文件对每个人都有读取权限,那么也许我可以尝试下载它。我尝试使用

`$ wget http://someRandomName.no.meaning:20025/../../../home/someuser/somefolder/movie.mp4`

但这没有用。

答案1

Web 服务器配置为仅提供特定目录中的文件。

例如,Apache 有DocumentRoot,在您的示例中将设置为/var/some/fulder。类似于以下内容:

<VirtualHost *:20025>
        ServerAlias someRandomName.no.meaning
        DocumentRoot /var/some/fulder
</VirtualHost>

这将提供位于 的文档根目录的内容http://someRandomName.no.meaning:20025。文档根目录下的任何目录都可以通过附加目录名称的 URL 进行访问,因此/var/some/fulder/stuff可以通过http://someRandomName.no.meaning:20025/stuff.

其中的 html 页面stuff可以用来../hello.html引用文档根目录中的文件(因为它仍然在文档根目录中),但它不能逃脱从这个根开始,使用../../<anything here>.

想想看——如果可能的话,这将是一个多么重大的安全问题。黑客可以访问全部文件于全部网络服务器。

答案2

这不起作用,因为任何健全实施的 Web 服务器都不允许您下载服务器上的任何文件。即使你真的很聪明并使用../../../

如果该文件不在配置为允许访问的目录之一(例如DocumentRoot/home/*/public_html)中,则它不会(也不应该)允许任何人下载它。请注意,并非所有 Web 服务器都配置为从 ~/public_html 提供用户主页。

如果该文件是您的,请在您的主目录中尝试创建一个名为 的目录~/public_html,并将文件复制、移动或符号链接到其中(请注意,网络服务器有时配置为不遵循符号链接)

在服务器上:

$ cd
$ mkdir public_html
$ mv movie.mp4 public_html/

在客户端机器上:

wget http://someRandomName.no.meaning:20025/~username/movie.mp4

相关内容