Pentesting vulnerabilidades da web com Damn Vulnerable Web App

Índice

O objetivo é que usuários iniciantes e profissionais interessados ​​em analisar e resolver problemas de segurança possam colocar seus conhecimentos, habilidades e ferramentas à prova em um ambiente simulado, este tipo de ferramentas são muito úteis para desenvolvedores da web Eles podem entender os problemas que um aplicativo ou site pode ter e melhorar a programação ou procurar vulnerabilidades.

Embora a maioria dos desenvolvedores tenha tomado precauções contra vulnerabilidades potenciais, muitas vulnerabilidades, como Cross Site Scripting (XSS) ou Injeções de SQL, que afetam a segurança de muitos sites e, portanto, dos usuários.

Neste tutorial, vamos instalar e configurar um site para usar como laboratório de teste para auditorias de segurança da web, onde iremos encontrar diferentes vulnerabilidades, ainda mais comuns, propondo vários níveis de dificuldade em vulnerabilidades, que podem então ser analisados.

Usaremos o Damn Vulnerabilty Web Application (DVWA), é um site para instalar em qualquer servidor que tenhamos, inclusive um local para poder fazer testes de pentesting. Podemos baixá-lo de seu site oficial.

Depois de baixá-lo, precisamos de um servidor web ou um servidor local conforme indicado nos tutoriais:

  • Como instalar o Xampp para transformar seu computador em um servidor web
  • Servidor web portátil Easyphp

Agora, depois de baixar o arquivo zip do Damn Vulnerabilty Web Application (DVWA), descompactamos e copiamos para a pasta de nosso servidor web, nesse caso usaremos Xampp no ​​Linux.

Em seguida, precisamos configurar o banco de dados para isso, iremos do phpmyadmin.

Se quisermos fazer a partir de uma janela de terminal, usaremos o seguinte comando, podemos acessar via ssh:

 usuário ssh @ miip
Primeiro, vamos fazer login no servidor MySQL a partir da linha de comando com o seguinte comando:
 mysql -u root -p
Nesse caso, o usuário root é especificado com o sinalizador -u e, em seguida, o sinalizador -p é usado para indicar que o MySQL deve solicitar uma senha. Nós inserimos a chave de acesso para poder entrar no MYSQL.

Então, podemos criar o banco de dados a partir da linha de comando:

 criar banco de dados dvwa;
Em seguida, vamos para o diretório de configuração e, em seguida, editamos o arquivo config.inc.php, aqui modificamos os dados para indicar o nome do banco de dados, o usuário e a senha de acesso:
 
Salvamos a configuração e devemos ir ao navegador onde temos a web e clicar em Criar / redefinir banco de dados para continuar com a instalação.

A seguir vamos criar os dados do banco de dados que configuramos e podemos ver algumas ferramentas que a web traz.

Depois da instalação, quando voltarmos para a web http: // localhost / dvwa, teremos uma tela de login:

Para acessar o site utilizaremos os seguintes dados:

Do utilizador: admin
Chave: senha

Na coluna da esquerda da web temos um menu no final podemos ver a opção SEGURANÇA DVWAA partir daqui podemos configurar o nível de dificuldade para vulnerabilidades, os níveis de segurança são baixo, médio, alto ou impossível.

O nível de segurança altera o nível de vulnerabilidade do DVWA:

Baixo nível de segurançaEste nível de segurança é completamente vulnerável e não possui medidas de segurança, portanto, nos permitirá testar as técnicas de hacking com mais facilidade. Seu uso é para ser um exemplo de como as vulnerabilidades de aplicativos web se manifestam por meio de práticas de codificação ruins e servir como uma plataforma para ensinar ou aprender técnicas básicas de exploração, cracking e hacking.

Nível de segurança médioEste nível serve para mostrar vulnerabilidades, onde o desenvolvedor falhou em garantir que o código e o desenvolvimento não tenham vulnerabilidades.

Alto nível de segurançaEste nível visa que os usuários mais avançados enfrentem uma dificuldade média, com uma mistura de más práticas de programação no código web. Aqui podemos experimentar técnicas avançadas.

Nível de segurança impossívelEste nível é o mais seguro contra todas as vulnerabilidades. É usado para comparar o código-fonte vulnerável ao código-fonte seguro. Este nível tem como objetivo demonstrar como um site deve ser desenvolvido corretamente e como deve responder diante de possíveis ataques.

Definimos o nível mais baixo para poder testar diferentes técnicas de hacking e detecção de vulnerabilidades.

Força bruta de teste quebrar um login com seu próprio script
Acessamos o link Força Bruta e vemos que existe um formulário de login, inserimos todos os dados no nome de usuário e senha para fazer com que falhe e ver se ocorre um erro.

Quando o login falha, vemos um url com os dados inseridos, pegando o URL que nos mostra:
http: // localhost / dvw… veja & Login = Login #,

Portanto, podemos criar um script que testa diferentes combinações de usuário e senha ou usar um programa como o xHydra que é uma interface gráfica para Hydra ou diretamente da linha de comando se esse for o único acesso que temos via SSH ao servidor.

Para instalar o Hydra, usaremos os seguintes comandos:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Depois de instalado teremos que pesquisar ou criar as listas de usuários e possíveis chaves em formato txt ou procurar um dicionário para usar como fizemos no tutorial.

Além de um arquivo de texto com nomes de possíveis usuários, também podemos usar alguns bancos de dados já funcionais, como os dicionários skullsecurity.org que são usados ​​em muitas ferramentas, antivírus, etc., que permitem a quebra ou hackeamento de senhas. Todas as fontes de dados são de uso gratuito.

Em seguida, usaremos a hydra com as listas que temos usando os seguintes comandos:

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login : Falha no login "-w 10 -V 

Podemos ver que alguns resultados têm sido positivos, mostrando em verde os usuários e senha que alcançaram o login aceito. Se tentarmos com o usuário admin e senha, entraremos para ver o painel do usuário

Vulnerabilidade de injeção SQL
No nível mais baixo de segurança, a web fica vulnerável à injeção de SQL, antes de começar a injetar código no campo de texto, podemos observar o código que consulta a tabela em PHP que está vulnerável.

 
O erro é que os dados não devem ser enviados por GET, mas sim por POST e em segundo lugar, deve-se verificar se os dados que chegam não contêm código malicioso.

A instrução SQL executa diretamente o que chega sem nenhum controle ou verificação. Portanto, isso torna o código vulnerável a injeções de SQL, por exemplo, podemos obter a lista completa de usuários se na página de injeção de SQL, em vez de um id, adicionarmos o seguinte código:

 1 'OU 1 = 1 UNION SELECT nulo, versão () #
O resultado será a lista de usuários.

Também podemos obter a lista completa de tabelas se aplicarmos o seguinte código no campo de texto.

 1 'OU 1 = 1 UNION SELECT null, table_name FROM INFORMATION_SCHEMA.tables

Podemos aplicar outras combinações para obter a lista de usuários e ver os dados de cada tabela.

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave