我通过这个网址访问网页
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