Aparentemente, o shellshock Bash exploit CVE-2014-6271 pode ser explorado na rede via SSH. Posso imaginar como a exploração funcionaria via Apache / CGI, mas não consigo imaginar como isso funcionaria no SSH?
Alguém pode fornecer um exemplo de como o SSH seria explorado e que dano poderia ser causado ao sistema?
ESCLARECIMENTO
AFAIU, apenas um usuário autenticado pode explorar essa vulnerabilidade via SSH. Que utilidade é essa exploração para alguém que tenha acesso legítimo ao sistema? Quero dizer, essa exploração não tem escalonamento de privilégios (ele não pode se tornar root), portanto, ele não pode fazer mais do que poderia ter feito depois de simplesmente fazer o login legitimamente via SSH.
bash
ssh
shellshock
Martin Vegter
fonte
fonte
Respostas:
Um exemplo em que isso pode ser explorado é em servidores com um
authorized_keys
comando forçado. Ao adicionar uma entrada~/.ssh/authorized_keys
, você pode prefixar a linha comcommand="foo"
para forçarfoo
a execução a qualquer momento em que a chave pública ssh for usada. Com essa exploração, se o shell do usuário de destino estiver definido comobash
, eles poderão tirar vantagem da exploração para executar outras coisas que não o comando para o qual são forçados.Isso provavelmente faria mais sentido no exemplo, então aqui está um exemplo:
Aqui, configuramos um usuário
testuser
que força qualquer conexão ssh usando sua chave ssh para executarecho starting sleep; sleep 1
.Podemos testar isso com:
Observe como o nosso
echo something else
não é executado, masstarting sleep
mostra que o comando forçado foi executado.Agora vamos mostrar como essa exploração pode ser usada:
Isso funciona porque
sshd
define aSSH_ORIGINAL_COMMAND
variável de ambiente para o comando passado. Portanto, apesar desshd
executadosleep
, e não o comando que eu disse, por causa da exploração, meu código ainda é executado.fonte
ssh testuser@localhost echo something else '`whoami`'
a fim de provar que o comando está sendo executadoExpandindo o exemplo do Ramesh - se você usar a autenticação de dois fatores, é possível ignorar o segundo fator usando essa exploração, dependendo de como ela é implementada.
- Login normal -
- Código em execução sem 2FA -
Você notará que ele executou o código sem solicitar o 2FA.
- Após o patch do bash -
fonte
read
função. Caso contrário - o usuário está seguro.Shellshock é uma vulnerabilidade no bash, não no SSH. Para explorá-lo, um invasor precisa fazer com que o sistema vulnerável execute o bash e controlar o valor de uma variável de ambiente que será passada para o bash.
Para alcançar um processo bash através do SSH, o invasor precisa passar pelas etapas de autenticação. (Pode haver vetores de ataque por outros serviços de rede, mas eles estão além do escopo desse encadeamento.) Se a conta tiver permissão para executar comandos arbitrários de shell de qualquer maneira, não haverá ataque. A vulnerabilidade entra em jogo se a conta estiver restrita a executar comandos específicos: por exemplo, uma conta somente SFTP ou uma conta somente git, etc.
Existem várias maneiras de restringir uma conta para executar um comando específico com SSH: com a
ForceCommand
opção insshd_config
ou com acommand=
. restrição noauthorized_keys
arquivo. Se o shell do usuário for bash, a vulnerabilidade Shellshock permite que um usuário que normalmente teria acesso apenas à conta restrita ignore a restrição e execute comandos arbitrários.fonte
zsh
.