o que é injecção de comando OS?
uma injeção de comando do sistema operacional é uma vulnerabilidade de segurança web que permite a execução de comandos de sistema operacional não autorizados. Uma vulnerabilidade de injeção de comando do sistema operacional surge quando uma aplicação web envia comandos de sistema não-filtrados para serem executados. Devido à insuficiente validação de entrada, um atacante poderia injetar seus próprios comandos para serem operados no nível do shell. O atacante introduz comandos do sistema operacional através de dados fornecidos pelo usuário, tais como cookies, formulários ou cabeçalhos HTTP.
This is a dangerous vulnerability as the attacker-supplied OS commands are usually executed with the privileges of the vulnerable application. Portanto, um atacante poderia ganhar o controle completo do hospedeiro Operacional system comprometendo a aplicação e todos os seus dados.
ao contrário de vulnerabilidades de injeção de código que existem quando um atacante pode submeter entrada executável a um programa e engana o software para executar essa entrada. Uma vulnerabilidade de injeção de comando explora as fraquezas de um sistema desprotegido que permite a execução de comandos arbitrários sem ter que injetar código. Ambas as vulnerabilidades resultam da falta de validação adequada dos dados de entrada/saída.
Comandos Úteis
Abaixo estão alguns comandos úteis de que pode dar-lhe mais informações sobre o sistema operacional que você está atacando
Finalidade de comando |
Linux |
Windows |
Nome do utilizador actual |
whoami |
whoami |
sistema Operacional |
uname-a |
ver |
configuração de Rede |
ifconfig |
ipconfig /all |
ligações de Rede |
netstat-um |
netstat-um |
processos em Execução |
ps-ef |
lista de tarefas |
Formas de injetar OS comandos
para testar seu aplicativo para um comando vulnerabilidade de injeção tente usar metacaracteres que enablecommands ser encadeadas. Se você é capaz de executar o seu próprio comando, então a aplicação web é vulnerável. O seguinte comando separadores de trabalho no Windows e sistemas baseados em Unix:
- &
- &&
- |
- ||
Outro comando de injeção de cargas incluir o comando ping abaixo o que vai desencadear um atraso de tempo, permitindo que você confirme o que o comando foi executado com base no tempo que o aplicativo demora para responder. O comando abaixo levará 10 segundos para responder.
& ping-c 10 127.0.0.1 &
os atacantes também podem confirmar uma vulnerabilidade do comando OS utilizando o comando nslookup para um domínio que eles controlam. Se o olhar para cima ocorrer, eles sabem que a injecção de comando foi bem sucedida.
vários outros comandos para testar a sua aplicação :
php-v dá-lhe a versão PHP a correr no servidor de aplicações web.
&&cat / etc/passwddisplays all the users on the backend Linux Server
/etc / shadowdisslays all hashed passwords but only if you are running with root privileges.
como prevenir ataques de injeção de comando do sistema operacional
- opção de Defesa 1: Evite chamar comandos do sistema operacional diretamente-evite chamar comandos do sistema operacional diretamente. As funções de biblioteca embutidas são uma boa alternativa aos comandos do sistema operacional.
- Defense option 2: Escape values added to OS commands specific to each OS – For exampleescapeshellcmd() in PHP.
- opção de Defesa 3: parametrização em conjunção com a validação da entrada – se fornecido pelo Utilizador não puder ser evitada a comparação e a validação da entrada deverá estar em uso.