このURLを介してWebページにアクセスします。
http://someRandomName.no.meaning:20025/hello.html
hello.html
表示される位置は です/var/some/fulder/hello.html
。 (私はサーバーから/var/some/fulder/hello.html
)
私もサーバーの場所にあるファイルを知っています/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
そのファイルをコピー、移動、またはシンボリックリンクしてみてください。 (Webサーバーは時々シンボリックリンクに従わないように設定されています。)
サーバーから:
$ cd
$ mkdir public_html
$ mv movie.mp4 public_html/
クライアントコンピュータから:
wget http://someRandomName.no.meaning:20025/~username/movie.mp4