경로명이 알려진 경우 서버에서 파일을 다운로드해 보세요.

경로명이 알려진 경우 서버에서 파일을 다운로드해 보세요.

이 URL을 통해 웹페이지에 액세스합니다.

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

웹 서버는 특정 디렉터리의 파일만 제공하도록 구성됩니다.

예를 들어 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

제대로 구현된 웹 서버에서는 서버의 파일을 다운로드할 수 없기 때문에 이는 작동하지 않습니다. 정말 똑똑하고 잘 사용해도../../../

DocumentRoot파일이 액세스를 허용하도록 구성된 디렉터리(예: 또는 ) 중 하나에 없으면 /home/*/public_html누구도 해당 파일을 다운로드할 수 없습니다. 모든 웹 서버가 ~/public_html에서 사용자 홈 페이지를 제공하도록 구성되어 있는 것은 아닙니다.

파일이 귀하의 것이라면 홈 디렉터리에 디렉터리를 생성 ~/public_html하고 해당 파일을 복사, 이동 또는 심볼릭 링크해 보세요. (웹 서버는 때때로 심볼릭 링크를 따르지 않도록 구성되어 있습니다.)

서버에서:

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

클라이언트 컴퓨터에서:

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

관련 정보