Command Injection Vulnerability

OS command injection (também conhecido como shell injection) é uma vulnerabilidade de segurança da web que permite que um atacante execute comandos arbitrários do sistema operacional (OS) no servidor que está executando uma aplicação, e normalmente compromete totalmente a aplicação e todos os seus dados.

por que as aplicações Web precisam executar comandos do sistema?

aplicações Web às vezes precisam executar comandos do sistema operacional (comandos OS) para se comunicar com o sistema operacional da máquina subjacente e o sistema de arquivos. Isto pode ser feito para executar comandos do sistema, lançar aplicativos escritos em outra linguagem de programação, ou executar shell, python, perl, ou scripts PHP. Para qualquer sistema operacional, incluindo Windows, Unix e Linux, funções estão disponíveis que podem executar um comando que é passado para os outros scripts como um comando shell. Embora extremamente útil, esta funcionalidade pode ser perigosa quando usada incorretamente, e pode levar a problemas de segurança de aplicações web, como explicado neste artigo.

por que você deve ter cuidado ao usar comandos do sistema em aplicações web

explorando uma vulnerabilidade de injeção de comando em uma aplicação vulnerável, os atacantes podem adicionar comandos adicionais ou injetar seus próprios comandos do sistema operacional. Isto significa que durante um ataque de injeção de comando, um atacante pode facilmente assumir o controle completo do sistema operacional host do servidor web. Portanto, os desenvolvedores devem ter muito cuidado como passar a entrada do usuário em uma dessas funções ao desenvolver aplicações web.

exemplo de uma vulnerabilidade de injeção de comando

neste exemplo de vulnerabilidade de injeção de comando, estamos usando a funcionalidade de ping, que é notoriamente inseguro em muitos roteadores. Imagine uma aplicação vulnerável que tem uma função comum que passa um endereço IP de uma entrada de usuário para o comando ping do sistema. Portanto, se a entrada do Usuário é 127.0.0.1, o seguinte comando é executado no sistema operacional host:

ping -c 5 127.0.0.1

uma vez que estamos lidando com um vulneráveis aplicativo web, é possível sair do comando ping ou provocar um erro que retorna informações úteis para o invasor. O atacante pode então usar esta funcionalidade para executar seus próprios comandos arbitrários. Um exemplo de adicionar comandos adicionais do sistema poderia ser parecido com este:

ping -c 5 127.0.0.1; id

no exemplo acima, primeiro o comando ping é executado e diretamente depois que a execução do comando id ocorre. Como tal, o resultado do comando na página ficará parecido com este:

durante um ataque de injeção de comando do OS, O atacante também pode configurar um ataque baseado em erro. Por exemplo, uma injeção de código, neste caso, normalmente, a aparência a seguir:

ping -c 5 "$(id)"

O código acima injeção retorna uma resposta como esta:

ping: unknown host uid=0(root) gid=0(root) groups=0(root)

Como Evitar que o Comando do Sistema de Injeção de Vulnerabilidades

a fim de impedir que um invasor explorar uma aplicação web vulnerável e inserção de caracteres especiais no comando do sistema operacional, você deve tentar, geralmente, para evitar chamadas de sistema sempre que possível. Em todos os casos, evite a entrada do usuário de qualquer tipo, a menos que seja absolutamente necessário. E se for necessário, certifique – se de que há validação de entrada adequada no lugar-a validação de entrada é sempre uma obrigação para garantir que seu código de aplicação web não é vulnerável a outras vulnerabilidades de alto impacto, incluindo XSS e injeção SQL.

também, desactive esta funcionalidade no ficheiro de configuração da sua língua se não precisar, para que os atacantes nunca consigam aceder à linha de comandos do sistema no sistema operativo da máquina através de aplicações web vulneráveis. Em alguns idiomas, você pode separar a execução do processo dos parâmetros de entrada. Você também pode construir uma lista branca de possíveis entradas e verificar os formatos, por exemplo, aceitando apenas um inteiro para um id numérico.classificação da Vulnerabilidade e gravidade Tabela

Stay up to date on web security trends

Deixe uma resposta

O seu endereço de email não será publicado.