이 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