tente baixar um arquivo do servidor se o nome do caminho for conhecido

0

Eu acesso uma página da web por este URL

http://someRandomName.no.meaning:20025/hello.html

A localização do hello.html exibido é /var/some/fulder/hello.html . (Eu quero dizer no servidor é /var/some/fulder/hello.html )

Eu também conheço um arquivo no servidor que está no local /home/someuser/somefolder/movie.mp4 .

Como posso tentar baixar este arquivo? Posso usar o wget ou qualquer outro utilitário / ferramenta para tentar baixá-lo (copiá-lo para o meu computador)?

Se o arquivo tiver acesso de leitura a todos, talvez eu possa tentar baixá-lo. Eu tentei usar

'$ wget http://someRandomName.no.meaning:20025/../../../home/someuser/somefolder/movie.mp4'

Mas isso não funcionou.

    
por sps 29.10.2015 / 20:53

2 respostas

1

Os servidores da Web são configurados para servir apenas arquivos de dentro de um determinado diretório.

Por exemplo, o Apache tem DocumentRoot , que no seu exemplo seria definido como /var/some/fulder . Algo semelhante ao seguinte:

<VirtualHost *:20025>
        ServerAlias someRandomName.no.meaning
        DocumentRoot /var/some/fulder
</VirtualHost>

Isso servirá o conteúdo do diretório Document Root em http://someRandomName.no.meaning:20025 . Qualquer diretório abaixo da raiz do documento seria acessível por meio do URL com o nome do diretório anexado, para que /var/some/fulder/stuff estivesse acessível em http://someRandomName.no.meaning:20025/stuff .

Uma página html dentro de stuff poderia usar ../hello.html para referenciar o arquivo na Document Root (pois isso ainda está dentro da Document Root) mas não pode escapar dessa raiz usando ../../<anything here> .

Pense nisso - que grande problema de segurança seria se isso fosse possível. Um hacker teria acesso a todos arquivos em todos servidores da web.

    
por 29.10.2015 / 21:37
1

Isso não funciona porque qualquer servidor Web implementado de forma adequada não permitirá que você baixe apenas qualquer arquivo no servidor. Mesmo se você for realmente inteligente e usar ../../../

Se o arquivo não estiver em um dos diretórios que ele está configurado para permitir acesso (por exemplo, DocumentRoot ou /home/*/public_html ), ele não permitirá (e nem deverá) permitir que alguém faça o download dele. Observe que nem todos os servidores da Web estão configurados para exibir páginas iniciais de usuários de ~ / public_html.

Se o arquivo for seu, em seu diretório pessoal, tente criar um diretório chamado ~/public_html e copie, mova ou crie links simbólicos para o arquivo (observe que os servidores da Web às vezes são configurados para não seguir links simbólicos)

no servidor:

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

na máquina do cliente:

wget http://someRandomName.no.meaning:20025/~username/movie.mp4
    
por 29.10.2015 / 21:35