Execute um binário de propriedade da raiz sem sudo

12

Eu tive uma pergunta em uma entrevista de emprego:

Como você pode executar (executar) o programa com o usuário user1sem sudoprivilégios e sem acesso à rootconta:

$ whoami
user1
$ ls -l ~/binary_program
-rw-r--r-- 1 root root 126160 Jan 17 18:57 /home/user1/binary_program
inivanoff1
fonte

Respostas:

17

Desde que você tenha permissão de leitura:

$ cp ~/binary_program my_binary
$ chmod +x my_binary
$ ./my_binary

Obviamente, isso não concederá automaticamente privilégios escalados. Você ainda estaria executando esse binário como um usuário comum.

Joseph R.
fonte
4
@ user2555595 Acho que você está errado. Tente remover o bit de execução em um arquivo que você possui e executá-lo. Até o root recebe "permissão negada" ao executar um arquivo sem o bit de execução definido.
Joseph R.
você está certo, obrigado pelas informações
user2555595
5
@ user2555595 Isso se aplica apenas a scripts , não a binários. Mais especificamente, apenas bashscripts de shell POSIX ou se bashfor chamado como intérprete.
Thomas Nyman
Obrigado pela sua informação, pessoal! Tenha um bom dia!
usar o seguinte código
2
@ inivanoff1 Não esqueça de marcar uma das respostas como "Aceito" para que as pessoas saibam que esta questão foi resolvida.
Joseph R.
20

Você pode usar o vinculador / carregador dinâmico do Linux diretamente para executar executáveis ​​ELF para os quais você leu, mas não executa direitos:

$ /lib/ld-linux.so.* /home/user1/binary_program

Quando um executável ELF é executado normalmente, o vinculador dinâmico armazenado na .interpseção do código do programa é usado. Os motivos para chamar o vinculador dinâmico diretamente (entrevistas de trabalho externas) incluem passar opções de linha de comando para modificar seu comportamento.

Observe que a localização real do vinculador dinâmico pode depender muito do ambiente, por exemplo, no Ubuntu de 64 bits, o vinculador está /lib64/ld-linux-x86-64.so.2.

Thomas Nyman
fonte