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:
Deixando esse ataque um pouco mais avançado, podemos canalizar a saída para nosso host através do netcat.
Podemos também inserir comandos sem precisar dividí-lo em vários comandos. Para isso use um dos exemplos abaixo:
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