A capacidade de sobrescrever um arquivo com XML pode ser explorada para executar código?

0

Temos um usuário do Ubuntu 18.04 que se conecta via SSH e tem um shell restrito. Mais precisamente, seu shell em / etc / passwd é / bin / bash, mas uma configuração command= em authorized_keys os restringe a executar um script Python. Esse script, entre outras coisas, grava alguns dados fornecidos pelo usuário em um arquivo. O caminho do arquivo também pode ser manipulado pelo usuário. Suponha que um invasor possa explorar isso para sobrescrever um arquivo arbitrário (ao qual o usuário tem acesso de gravação). Eles poderiam aproveitar isso para executar código arbitrário como aquele usuário, na verdade obtendo um shell irrestrito?

Os dados que o invasor controla não estão no início do arquivo, mas estão envoltos em XML, assim:

<?xml version="1.0" encoding="utf-8"?>
<blah>
  <blah blah="ATTACKER_CONTROLLED_DATA" />
<blah>

Eu tentei substituir o .bashrc por algo como

<?xml version="1.0" encoding="utf-8"?>
<blah>
  <blah blah=""
echo exploit?
"" />
<blah>

mas o bash não consegue analisar isso, por isso não é executado.

O usuário não pode sobrescrever diretamente os arquivos authorized_keys , pois ele é de propriedade de root e tem acesso somente leitura. O mesmo com o diretório .ssh . Ele tem acesso de gravação ao seu diretório inicial, mas o script não permite mover / excluir diretórios.

Obviamente, isso é teoricamente explorável, mas quero argumentar que isso realmente pode acontecer.

    
por EM0 21.05.2018 / 22:40

1 resposta

0

Se o caminho do arquivo de saída de dados puder ser manipulado pelo usuário, e os dados que ele grava forem fornecidos pelo usuário, esse usuário poderá efetivamente escrever qualquer coisa em qualquer local ao qual tenha acesso de gravação.

Você fez uma restrição de execução via SSH, que deve impedir o usuário de executar o código que pode sair, o que é um bom começo. Se você não for cuidadoso, eles poderão alterar um arquivo de configuração que entraria em vigor quando o serviço / servidor for reiniciado ou alterar um script de serviço para executar ações extras quando executado por processos normais.

Se você não quiser que eles definam seu .bashrc , por que você daria a eles acesso de gravação a esse arquivo? Certifique-se de que suas permissões estejam configuradas corretamente para que um usuário mal-intencionado não possa causar problemas com esse script, sobrescrevendo qualquer coisa, essencialmente permitindo que apenas escrevam no local exato em que você deseja que os dados sejam gravados.

    
por 21.05.2018 / 23:09