Command Injection

O command injection é uma vulnerabilidade web que permite que seja executado um comando do sistema operacional no servidor que está rodando a aplicação. Vamos supor que exista uma parte da aplicação que executa um whois em determinado site. Se não existir um filtro adequado do lado do backend, isso pode facilmente ser explorado.

Na imagem a seguir, podemos ver que é retornado o whois do site que for passado na entrada.

Porém, precisamos entender como que o desenvolvedor fez isso. Vamos simular este cenário. Se executarmos um whois businesscorp.com.br no terminal, irá retornas algumas informações desse domínio, está sendo executado também um grep para retornar apenas as linhas que possuem a string "nserver".

user@xubuntu:~$ whois businesscorp.com.br | grep "nserver"
nserver:     ns1.businesscorp.com.br 37.59.174.225
nserver:     ns2.businesscorp.com.br 37.59.174.226

Sabendo disso, podemos inserir algum outro comando após passar o site da pesquisa, conseguindo assim injetar este comando. Existe algumas formas de fazermos isso, como por exemplo após o site, colocarmos ponto e vírgula, o comando e uma cerquilha para comentar o resto, ficando da seguinte forma.

whois businesscorp.com.br; id # | grep "nserver"

Com isso irá concatenar os comandos e executar o id.

Podemos testar apenas com o payload sem mesmo passar o site para pesquisa.

Podemos ver o código fonte para ficar mais claro.

Pode-se facilmente conseguir uma shell no sistema se existir uma vulnerabilidade deste tipo.

Last updated