Testando um simples caso da vulnerabilidade de OS command injection

Stéfany Coura Coimbra
Brazilians in Tech
Published in
6 min readNov 25, 2023

Olá! Hoje vamos nos imaginar como membros do Red Team de uma empresa de cibersegurança e vamos explorar a vulnerabilidade Web de OS command injection. Vem comigo!

Texto escrito por Stéfany Coura Coimbra

Foto: Laboratório de OS command injection da PortSwigger

Antes de iniciarmos nosso pequeno laboratório, vou explicar pra você o que é essa vulnerabilidade.

OS command injection é uma vulnerabilidade que permite um atacante executar comandos de sistema operacional (Windows ou Linux, por exemplo) no servidor que está rodando a aplicação, comprometendo-a e os dados ali contidos.

Isso deve-se ao fato de que os comandos do sistema estão sendo chamados a partir da camada de código de aplicação e ainda assim, seus parâmetros não estão sendo validados.

Beleza, agora que pegou a ideia, vamos lá explorar essa vulnerabilidade em um ambiente confiável e seguro.

1.Baixe o Burp Suite Community

Baixe pelo site o Burp Suite Community, que é uma ferramenta gratuita de proxy com vários recursos também que vamos utilizar aqui.

Depois de baixado já pode abrir a ferramenta, deixe como está as confirugações padrão e só dê Next e Start Burp.

Foto: Burp Suite Community

2.Abra o navegador Chrome pelo Burp

Vá até a aba Proxy e clique em “Open browser”. Irá abrir uma instância do Chrome e é por lá que vamos usar o laboratório, porque vamos conseguir interceptar os pacotes Web HTML e analisá-los no Burp.

Foto: Aba Proxy do Chrome

3.Vá até o site do PortSwigger, crie um conta e veja os laboratórios

O PortSwigger é um site da companhia que nos dá o Burp Suite e contém diversos recursos acadêmicos também e didáticos para aprendermos e testarmos, como é o caso dos laboratórios para exploração de vulnerabilidades Web que comentei.

Ainda no Chrome aberto pelo Burp (não esqueça de acessar o lab por lá senão não vai dar certo), clique aqui para ser direcionada(o) à página de Login e de Cadastro. Faça uma conta, caso não tenha e entre nela.

Depois de estar dentro da sua conta já, você consegue explorar uma infinidade de labs de muitas vulnerabilidades Web por aqui. Fique à vontade para ver outros labs depois e continuar nesse caminho Jedi da segurança ofensiva.

Por hora, vamos fazer esse lab aqui, que é o de OS command injection de um nível iniciante.

Foto: Laboratório OS command injection

No meu caso, aparece LAB Solved, porque já resolvi, mas para você estará só APPRENTICE. Como disse o Juliano Sato, Consultor de Segurança da Informação da Tempest num minicurso que fiz, “Tenha fé”.

4.Clique em ACCESS THE LAB e vamos concluir o laboratório

Está vendo um botãozinho laranja escrito ACCESS LAB? Clica nele. Uma nova aba será aberta com um site contendo diversos produtos e preços. É um exemplo de uma loja online. Não esquenta, tudo isso está rodando num ambiente educativo e seguro da PostSwigger, relaxa haha.

Volte no Burp Suite (mas deixe as abas do Chrome abertas). Ainda na aba Proxy, vá na sub-aba HTTP History para ver as requisições dos pacotes da sua interação Web. Você consegue ver o Host, Method usado, URL, IP, Cookies etc. Quanto mais for para baixo, mais recente o histórico é.

Foto: HTTP History mostrando GET da página do Lab

Se clicar numa requisitação, consegue ver com mais detalhes ela e sua resposta. Como cliquei na de identificador 416, que é um GET, vemos que na resposta o Content-Length é 0 e a requisição não contém um Body.

Foto: Mostrando exemplo de método GET

Ok! Sabendo de tudo isso, vemos que na descrição desse lab, ele pede que a gente explore uma vulnerabilidade de OS command injection contida no checker do estoque de produto. A aplicação executa um comando shell contendo o user-supplied product e store ID, retornando a saída pura para do comando na resposta. Assim, vamos explorar ela, descobrindo o nome do usuário atual logado pelo comando whoami no servidor.

Vá até a aba da loja online no Chrome e clique em “View Details” de algum dos produtos (pode ser qualquer um). Depois de entrar num produto, vá até embaixo da tela e clique depois da descrição, no botão em azul “Check stock” para ver o estoque do produto.

Foto: Descrição do produto da loja online

Aparecerá quantas unidades daquele produto estão no estoque. No meu caso do celular (Com-Tool), há 32 unidades em estoque.

Assim que fez isso, volte no Burp na aba de HTTP History. Vão ter muito mais requisições de tudo isso que interagiu no site.

Procure pelo método GET da URL /product/stock e clique nela. Veja que a última linha do meu Request está: productId=2&storeId=1. O seu estará algo similar, tirando o fato de que o Id pode estar diferente, mas não tem problema, nosso foco é no campo de storeId.

Foto: Verificando requisição do GET de /product/stock

Show! Clique agora com o botão direito dentro do campo de Request e escolha a opção Send to Repeater. O Repeater (ou Repetidor) serve para que altere os campos da requisição e envie para checar a resposta e ir testando os recursos e explorando falhas.

Foto: Opção Send to Repeater

Assim que enviou para o Repetidor, vá até a aba lá em cima “Repeater”. Vai ver que sua requisição está lá. Agora o que vamos fazer é: tá vendo que a parte de storeId=1 está sendo mostrada crua? Então podemos desconfiar da vulnerabilidade.

Beleza, altere esse campo para storeId=1|whoami e veja o que acontece. Para isso, depois de alterar, clique em Send, o botão laranja.

Foto: Resultado da exploração da vulnerabilidade do Burp Suite

E BUUUM! Temos o nome de usuário atual: peter-R75kH8. Isso porque ao mandar o GET a linha onde tem o storeId está ali em plena camada de aplicação, sem verificação interna do campo nem nada, nos permitindo rodar um comando shell que nesse lab foi este, mas poderia ser um muito, muito pior! Disso, o atacante poderia obter até mesmo roubo de mais informações sigilosas e adquirir controle remoto da minha máquina para outros futuros exploits. Tá vendo como é perigoso?

Quando voltar na aba do Chrome do lab, receberá uns parabéns por ter concluído o lab e no cantinho superior direito aparecerá LAB Solved.

Foto: Fim do laboratório de OS command injection

Bom, meus parabéns! Hoje provamos um pouquinho o nosso lado Hacker. Essas ferramentas e conhecimentos de segurança ofensiva, por exemplo, devem ser utilizadas para solução de problemas e para identificarmos o que podemos enfrentar no nosso dia a dia, mas sempre com cuidado de trilharmos o caminho de Hackers Éticos. Afinal, precisamos conhecer as capacidades do nosso inimigo e as falhas que temos nos nossos sistemas para que possamos utilizar as ferramentas corretas para nos defender.

É isso! Explore, explore e explore! Deixe nos comentários o que achou desse tutorial e te vejo na próxima!

Stéfany é Editora do Blog BiT. Para saber mais sobre ela, acesse:

LinkedIn: https://www.linkedin.com/in/stefany-coimbra/

Instagram: @ster.coimbra

GitHub: https://github.com/stefanycoimbra

Linktree: https://linktr.ee/stefanycoimbra

Stéfany é apaixonada por tecnologia e também redatora do Blog BiT! É uma dev mineira, adora pão de queijo, pizza e de participar de Hackathons.

Estudante de Engenharia de Computação na Unifei — Universidade Federal de Itajubá, tem muito interesse em tópicos de Inteligência Artificial e Segurança da Informação. Já foi integrante da Equipe Uai!rrior de Robótica por quase 3 anos, maratonista de programação e, no ano de 2023, foi parar do outro lado do mundo na Coreia do Sul, fruto de um intercâmbio na KNU — Kyungpook National University, Daegu.

--

--

Stéfany Coura Coimbra
Brazilians in Tech

I'm passionate about tech, games, series, movies, travel, writing, programming and pizza!