SUID removido acidentalmente do arquivo / bin / su

4

É um servidor de produção - CentOS 6.1

Algum usuário com acesso root no passado tinha feito logon no servidor e removido o bit SUID do arquivo / bin / su e, em seguida, saiu do root. Agora não podemos voltar para o root. Além disso, o acesso ssh para root está desativado no servidor, portanto, o root não pode efetuar login diretamente na máquina. Como não somos capazes de su para root nem podermos usar ssh como root, não podemos configurar o bit suid para o arquivo / bin / su de volta (Também não podemos alternar entre usuários usando su)

Como deveria ter sido:

$ ll /bin/su
-rwsr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su

Como está agora:

$ ll /bin/su
-rwxr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su

Existe alguma maneira de mudarmos para o root ou definir o bit SUID de alguma forma?

Nota: Queremos evitar uma reinicialização do modo de usuário de rede porque o servidor está em uso 24x7 e a obtenção de tempo de inatividade é um pouco difícil. Se a reinicialização fosse possível, poderíamos simplesmente fazer o login usando o modo de usuário único como root e redefinir esse bit.

Sinta-se à vontade para dar respostas criativas. Eu posso testar suas respostas em nosso ambiente de teste.

    
por Aditya Pednekar 09.03.2015 / 20:48

4 respostas

1

Algumas opções:

  • sudo -i , essa é a alternativa mais óbvia.
  • sudo -l procura um comando que você possa usar para resolver o problema, como: editar um arquivo executado pelo root, como crontab, logrotate, executon yum / rpm ...
  • vá para o console e conecte-se como root (somente o ssh é restrito se eu entendi)
  • abre uma sessão gráfica, algumas distribuições possuem ferramentas para se tornarem root e não contam com o sudo. Além disso, muitos deles têm algum gerenciador de atualização .. Talvez você possa reinstalar o pacote que fornece su
  • se você tiver uma ferramenta de gerenciamento de configuração como fantoche / chef / ansible / fai ... Pressione a configuração!
  • investigue seu crontab para ver se você pode editar um arquivo para escalonar.
  • se o seu servidor estiver conectado a um sistema de autenticação central (especialmente LDAP / nis), crie uma conta com permissão alta (wheel de grupo ou user uid = 0).
  • se for um servidor virtual, desligue-o e monte e edite o sistema de arquivos.

Algumas balas de prata:

  • reinicialize seu servidor no modo de usuário único (red hat) ou especifique init=/bin/sh (Debian e rhel / CentOS 7) e, em seguida, corrija a permissão.
  • reinicialize o servidor em um CD / DVD / USB / NetBoot e use a recuperação (ou apenas monte e edite)

E alguns realmente feios:

  • encontre uma vulnerabilidade no seu sistema para comprometê-lo!

Se o seu administrador de sistema fez um bom trabalho, um usuário comum não pode fazer nada disso (mas você é o administrador do sistema)

    
por 10.03.2015 / 02:30
1

Supondo que você esteja em um grupo que permite a você sudo , então:

sudo -i

lhe dará root access e permitirá reparar /bin/su . Lembre-se de usar a senha do usuário com sudo - não a senha do root.

    
por 09.03.2015 / 20:52
1

A questão implica SSH (ou equivalente) como o único acesso. A única maneira geralmente de obter de um processo privilegiado do usuário para uma raiz privilegiada é via su , sudo ou outra alternativa local do site. Se você não tem um, então você está esperançosamente sem sorte, já que a presença de uma alternativa sugere algum tipo de falha de segurança.

Dito isto, a sugestão de reiniciar para obter acesso sugere que o acesso ao console está disponível de alguma forma. Geralmente o root pode entrar diretamente no console e seria a primeira coisa a tentar (talvez remotamente com o IPMI ou um IP KVM?). Vale a pena tentar o console gráfico e as portas seriais.

Uma alternativa é procurar por um sistema de arquivos externo que seja montado ou possa ser montado e permita que um binário setuid su estático seja apresentado para o seu usuário rodar.

Se houver um sistema de gerenciamento de configuração (fantoche, chef etc.), ele ainda poderá ser executado e poderá ser usado para corrigir ou atualizar os binários.

Se o sistema em execução for uma máquina virtual, você poderá acessá-lo de alguma forma a partir do ambiente do host. (Por outro lado, se for uma máquina host, você poderá explorar o acesso à raiz em uma máquina virtual para obter controle)

Depois disso, primeiro avalie quanto tempo vale a pena gastar para recuperar o acesso ao sistema sem fazer a reinicialização. Então, se o tempo é justificado, é uma questão de olhar para o que você tem acesso. Observe cada um deles e avalie-os quanto à capacidade de corrigir o bit de set-uid ou executar um comando relativamente arbitrário:

  • Todo binário de set-uid no sistema acessível ao seu usuário
  • Todo processo executado como usuário raiz (olhando para os usos pretendidos)
  • O sistema de armazenamento subjacente e o acesso alternativo a ele
  • Todo processo executado como usuário raiz (procurando vulnerabilidades de execução de código local não corrigidas)
  • A versão do kernel (procurando vulnerabilidades de execução de código não corrigidas)

Em algum momento, ele se torna uma auditoria de segurança.

    
por 10.03.2015 / 00:46
0

Além disso, você pode usar este comando:

sudo -s

Ele lhe dará acesso root

    
por 22.08.2018 / 17:22