Postagens

Mostrando postagens de setembro, 2022

Stack overflow

Imagem
O stack overflow Como sabemos, a stack do processador é usada para múltiplos propósitos: ela guarda dados, mas também o endereço de onde o Program Counter deve ir quando uma função retorna. Por causa disto, uma escrita nos dados da stack pode alterar o fluxo do programa, caso seja feita de maneira incorreta (ou ainda maliciosa). Imagine um buffer sendo definido localmente em uma função. Ele consequentemente será alocado na stack. Se o programa tentar escrever além dos limites do tamanho do buffer, escreverá em dados que não fazem parte do buffer e, eventualmente, escreverá também na posição do endereço de retorno da função. Para testar um buffer overflow, o pesquisador insere uma entrada para o programa executável com uma grande quantidade de caracteres, por exemplo: payload = AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD...etc  São usadas 8 letras de cada para um processador de 64 bits. Seriam 4 letras para um processador de 32 bits. Se uma quantidade que excede o tamanho do buffer causar um e...

Diferenças entre Bug Bounty e Pentest

Imagem
À primeira vista, Bug Bounty e Pentest podem parecer a mesma coisa, pois ambos são testes realizados em um sistema que reportam falhas de vulnerabilidade. Mas existem diferenças fundamentais entre as duas modalidades. Pra começar, o pentester é um funcionário contratado por uma empresa para realizar testes de intrusão. Pode ser também uma empresa contratada para esta atividade, quando a empresa principal não tem um fluxo constante de lançamento de produtos, ou por qualquer outro motivo. De qualquer maneira, no pentest existe vínculo entre a empresa e o profissional. Pentest é a abreviação de Penetration Test, ou seja, um teste de intrusão autorizado pela empresa que será atacada. Assim como no programa de Bug Bounty, o objetivo é identificar as vulnerabilidades do seu sistema. Antes de colocar um sistema em produção, a empresa contrata o serviço de pentest para que o seu produto seja submetido a uma sabatina de testes que irá identificar vulnerabilidades para que a equipe de projeto po...

XSS - Cross-site Scripting

Imagem
Vimos no post sobre SQL injection uma injeção de código que afeta o back-end (server side). Agora veremos um caso de vulnerabilidade no front-end (client side). O termo cunhado para injeção de código HTML ou JavaScript no cliente foi Cross-Site Script, ou simplesmente XSS. Isto porque um dos usos que se faz é a transmissão de dados de sessão de um website (cookies, por exemplo) para um domínio controlado pelo atacante, ou seja, cruza de um site para outro.   O problema A vulnerabilidade vem como resultado de uma renderização insegura de uma string maliciosa passada pelo usuário, causando a execução de comandos na máquina da vítima. Além de HTML e Javascript, ainda podemos ter XSS com as linguagens ActiveX, VBScript, e Flash, menos comuns hoje em dia. Vejamos a situação onde ocorre o problema. É semelhante à vulnerabilidade de SQL injection, com a diferença de que este cenário é executado no browser. Imagine que ao digitar o seu nome em um formulário, o website abre uma página...

SQL Injection

Imagem
É difícil de imaginar uma aplicação que não utilize um banco de dados para cadastrar seus usuários, produtos, enfim, os dados que a aplicação necessita para funcionar. Estes bancos de dados são usados para cadastrar, consultar e editar itens, normalmente através das chamadas queries SQL. O problema Os servidores que não se atentarem, podem estar sujeitos à inserção de strings do usuário que tentarão misturar-se com a lógica da query. É disto que trata o SQL injection. Ela é uma falha no servidor (back-end) que executa comandos indevidos no banco de dados. Considere a query onde "user" e "password" são parâmetros passados pelo request: "SELECT * FROM users WHERE username='".$_POST['user']."' and password='".$_POST['password']."' " Quebra-se a expressão ao se inserir uma senha: a' or 1='1  Isto porque a query ficaria assim: "SELECT * FROM users WHERE username=‘poirot' and password='a...

Como escolher um programa de Bug Bounty?

Imagem
Existem programas de Bug Bounty públicos e privados. Apesar de menor concorrência, os programas privados não são necessariamente melhores que os públicos. Quero mostrar algumas formas de avaliar rapidamente cada um deles utilizando as informações que estão disponíveis nas plataformas como a HackerOne . Vou colocar 5 fatores a serem considerados e explicar cada um na sequência: Interesse pelo assunto Em primeiro lugar, o mais importante dos aspectos: você precisa ter interesse pelo assunto que irá explorar. Lembro-me de iniciar minha aventura de Bug Bounty por um site médico, onde os profissionais podiam fazer uploads de dados para o sistema e consultar visualizações. O fato é que eu não sou médico e não entendia nem metade das coisas que estavam sendo processadas ou visualizadas. Era como caçar às cegas. Não gostei da experiência, não consegui achar nenhuma falha e pior, este programa quase me fez desistir de continuar.  Como você vai aprender, o processo de bug hunting é repetitiv...