パス名がわかっている場合は、サーバーからファイルをダウンロードしてみてください。

パス名がわかっている場合は、サーバーからファイルをダウンロードしてみてください。

この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

関連情報