Como eu, ao executar um executável / script, falsifico o diretório raiz?

1

Existe alguma maneira de executar um script de tal forma que quando ele faz referência a algo como / bin / sh ou / usr / bin / cowsay, executar ~ / fake / bin / sh?

Esse efeito ainda deve ser válido para outros scripts que ele executa e para os scripts que eles executam.

    
por One Normal Night 06.11.2016 / 03:36

2 respostas

2

Se o script for cooperativo, ou seja, se ele não tentar contê-lo deliberadamente, você poderá usar o chroot para executá-lo em uma subárvore de sua árvore de diretórios. Um programa executado sob o chroot não pode acessar diretamente os arquivos fora da árvore em que ele é chrootado, mas pode interagir com o mundo externo de outras maneiras, incluindo envio de sinais para processos, comunicação via sockets, acesso à rede, etc.

chroot ~/fake myscript

A subárvore ~/fake precisa conter tudo o que o script precisa: ~/fake/bin/sh , ~/fake/lib/ld-linux.so.2 e ~/fake/lib/libc.so.6 ou qualquer que seja o carregador dinâmico e a biblioteca padrão no seu sistema, /proc no Linux para coisas como ps para o trabalho, etc. Eles precisam ser arquivos reais, não links simbólicos, uma vez que o traversal de links simbólicos é restrito pelo chroot.

Montagens de amarração podem ajudar a construir uma árvore chroot sem copiar todas as informações necessárias arquivos.

O Chroot requer permissões de root. Se todos os programas que você deseja executar estiverem dinamicamente vinculados, você pode usar o fakechroot para usar o chroot em um peso mais leve caminho. O Fakechroot funciona através da interceptação de chamadas do sistema via pré-carregamento da biblioteca , por isso não requer privilégios. Com fakechroot, links simbólicos apontando para fora do chroot são seguidos normalmente, então você pode construir uma floresta de links simbólicos para disponibilizar coisas na subárvore.

Se o script não for cooperativo, você precisará de uma ferramenta de isolamento adequada: um contêiner ou uma máquina virtual.

    
por 07.11.2016 / 01:39
-2

tente usar um link simbólico:

sudo ln -sf ~/fake/bin/sh /usr/bin/cowsay

nota: o -f (força) irá (provavelmente) fazer com que o arquivo original /usr/bin/cowsay seja substituído pelo link simbólico.

Se quaisquer declarações dentro do executável ~/fake/bin/sh ou quaisquer programas externos que as chamadas executáveis atuem no link simbólico em si ou no arquivo para o qual o link simbólico aponta vão variar de programa para programa e de declaração para instrução.

    
por 06.11.2016 / 06:33