Injeção de Comando do SO
Neste tópico , falarei sobre a injeção de comandos os , que é uma das vulnerabilidades de segurança da web . Nosso objetivo, como sempre, será compreender a lógica da vulnerabilidade.
Os comandos inj. A vulnerabilidade permite que um invasor execute comandos do sistema operacional diretamente no servidor. Depois que o invasor pode executar comandos no sistema operacional, ele pode assumir o servidor e continuar seu ataque, dependendo de sua finalidade.
Como ocorre a vulnerabilidade?
Por exemplo, considere um site de ping simples.
Ele solicitará um endereço IP e executará um ping nesse endereço. Nesse caso, não é difícil adivinhar que o comando ping $ ip está sendo executado no sistema.
Se os dados (endereço IP) recebidos do usuário forem incluídos de forma insegura no comando do sistema (ping $ ip) dessa maneira, podemos falar sobre a vulnerabilidade Os Command Inj lá.
Neste ponto, o invasor tentará injetar seus próprios comandos. Ele fará esse processo de injeção com a ajuda de instruções de concatenação de comandos
Existem diferentes operadores para combinar comandos, vamos aprender todos eles.
Como você pode ver, o comando ping funcionou e o comando que injetamos depois também funcionou.
Desta forma, o comando pode ser injetado se não forem tomados cuidados cuidadosos com os dados recebidos do usuário.
Aqui está um código-fonte vulnerável.
Agora, examinaremos casos como detecção e exploração de vulnerabilidades no ambiente de laboratório do PortSwigger de forma aplicada.
Exemplo 1
Temos a função de verificação de estoque em nossa página .
Ao clicarmos no botão, vamos tentar examinar a requisição enviada ao servidor via BurpSuite
Os dados de identificação são retirados de nós e, aparentemente, um script está sendo executado em segundo plano e, em seguida, o resultado é refletido na tela.
Para resolver este exemplo, somos solicitados a executar o comando whoami .
Concluímos a instância com sucesso injetando o comando whoami.
Alguns comandos do sistema:
Aqui, se você não conhece o sistema operacional do sistema de destino , faz mais sentido executar o comando whoami para detectar a vulnerabilidade . Porque é um comando comum em ambos os sistemas.
Injeção de comando Blind Os
A saída do comando pode nem sempre ser visível para o usuário final dessa maneira. Neste caso , estaremos falando sobre o tópico de injeção de comando blind os .
Existem diferentes métodos de detecção desse tipo de vulnerabilidade. Um deles é baseado em tempo .
Vamos à prática.
ter um atraso de 10 segundos no sistema que nos foi solicitado.
Exemplo-2
Podemos atrasar o sistema usando o parâmetro -c com o comando ping
Após 10 segundos, o laboratório será marcado como resolvido.
Foi assim que resolvemos este laboratório.
Exemplo-3 Outro método de detecção de vulnerabilidade de
injeção de comando Blind Os é o redirecionamento de saída.
Sim, ao executarmos o comando echo tst > /var/www/html/test.txt, a página test.txt será criada.
Podemos direcionar as saídas de comando para esta página
Executamos o comando whoami e o salvamos no diretório /images/. Vamos tentar visualizar o arquivo.
é assim que redirecionamos a saída do comando.
Caminhos de combinação de comandos
&
&&
|
||
;
`command`
$(command)
O comando pode ser injetado com a ajuda dessas instruções.
Exemplo-4
Existe outro método para detectar a vulnerabilidade Blind Os Command Injection. É o método que chamamos de out of band.
Vamos ver na prática.
Em ataques fora de banda, você precisa ter um serviço onde possa ver as solicitações de DNS recebidas.
Se estiver trabalhando na rede local, você pode iniciar o http.server.
Você pode usar o ngrok para rede externa ou pode usar o colaborador burp.
Usando o comando nslookup nos sistemas Windows e Linux, fizemos uma consulta de DNS para o endereço que especificamos.
Se houver uma vulnerabilidade, podemos ver que essa solicitação foi enviada em nossos logs. Desta forma, podemos detectar a presença da vulnerabilidade na forma Out-of-Band
Vemos as solicitações de DNS recebidas, mas como extraímos as informações do sistema?
Você pode vê-lo no próximo aplicativo.
Exemplo-5
Adicionamos o comando whoami ao início do endereço como subdomínio.
Vejamos a solicitação de DNS recebida.
É assim que visualizamos a saída do comando whoami.