Objetivo
O objetivo desse lab é praticar o conteúdo aprendido no módulo de Web Hacking do curso NPP da DESEC e simular um Pentest Web Externo
lab 01
Ao acessar o endereço fornecido no lab me deparei com um formulário de login
Com o intuito de testar o formulário de login enviei como nome de usuário e senha o caracter “\” para ver como a aplicação iria se comportar e esse foi o resultado:
Como o erro apresentado pelo banco de dados pude perceber que a aplicação está vulnerável a sql injection
Sabendo disso vou enviar um query sql para tentar dar um bypass e me autenticar na aplicação
Enviando essa query foi possível me autenticar na aplicação e conseguir a flag para pontuar
lab 02
Ao acessar o endereço fornecido no lab a aplicação retorna uma página com uma mensagem de “desativado”
Para conseguir mais informações sobre a aplicação realizei uma enumeração para encontrar possíveis diretórios e arquivos e esse foi o resultado:
Levando em consideração o objetivo do lab, o diretório que me chamou a atenção foi o /promo, e ao acessar o diretório podemos ver uma página com um formulário para enviar o voucher da promoção mas que está desativado
Ao inspecionar o código fonte encontrei a tag ‘disabled’ que estava impedindo de enviar o formulário da promoção
Removi essa tag e com isso consegui fazer a requisição, então fui redirecionado para outra página mas ainda não era possível receber o voucher
Para entender o que estava acontecendo, usei um proxy para interceptar as requisições e ver como a aplicação está funcionando; no burp descobri que a aplicação estava enviando dois parametros: email e promo; e que o segundo estava sendo enviado em branco
Refiz a requisição realizando alguns testes e completando o segundo parametro com valores verdadeiros, como por exemplo: True e 1
Quando o parametro promo recebeu o valor 1 foi possível receber o voucher
lab 03
Ao acessar o endereço fornecido no lab a aplicação retorna uma página com o nome da empresa
Para conseguir mais informações sobre o host fiz uma enumeração e descobri alguns arquivos e diretórios
No diretório /system, existe um campo para verificar se o host está ativo ou não, então coloquei um ip qualquer e fiz o teste e aparentemente a aplicação está fazendo um ping no ip que eu coloco
Tentei concatenar com o comando ping algum outro comando e ver se ele executava no sistema, porém não tive resposta, então tentei alguns payloads diferentes até que encontrei um que funcionou
Agora que já é possível executar comandos no sistema, é só pegar a flag e pontuar
lab 04
A principio no endereço está rodando uma aplicação comum do grupo business corp, vou começar a enumeração e listar alguns subdominios
Os subdominios econtrados não possuem nenhum conteúdo que seja importante, então vou seguir e enumerar alguns diretórios e arquivos nesses subdominios
No diretório /blog está rodando um blog da empresa, feito em wordpress
Sabendo que o blog está usando o Wordpress, comecei a fazer minha enumeraçãoe consultando o readme.html consegui descobrir a versão do wordpress que está sendo usado
Continuando com a enumeração realizei uma varredura usando o WPScan para encontrar possíveis vulnerabilidades no wordpress
Aparentemente o wordpress está usando um plugin vulnerável a sql injection, a ferramenta tbm retorna que é possível acessar e ler o readme.txt e ao fazer isso pude comprovar a versão exata do plugin
Com essas informações fui buscar algum exploit público para validar se realmente a aplicação está vulnerável, e acabei encontrando esse exploit no exploit-db
Seguindo a poc que estava presente no exploit tive a confirmação que a aplicação está vulnerável a sql injection
Agora que tenho acesso ao banco de dados posso fazer consultas para descobrir o usuário e a senha
Realizando a consulta consegui o usuário porém a senha está cifrada, então foi necessário usar o john para quebrar a hash
lab 05
Com o usuário e senha que descobri no lab anterior consigo me conectar no painel de administração do site
Agora que estou logado procurei algum lugar onde poderia enviar algum código para aplicação, e encontrei na aba de editar temas; então editei o código da página e coloquei uma web shell em php em uma das páginas
Agora que consegui colocar uma web shell nop site, é só entrar na página que contem o código e executar comandos no servidor
Com a web shell funcionando e executando comandos no servidor, é só pegar a flag para pontuar
lab 06
Ainda aproveitando a web shell vou buscar pelo arquivo de configuração do wordpress para encontrar a senha do usuário do mysql
Listando o conteúdo da raiz do wordpress podemos ver o arquivo, agora é só ler o arquivo e descobrir a senha
lab 07
Acessando o site do rh da business corp podemos ver que ele tem duas opções no menu, uma com o conteudo sobre a empresa e uma para enviar o curriculo
Entrei na aba para enviar o curriculo e acrescentei uma “\” ao final do parametro que estava sendo enviado via GET e a aplicação retornou um erro, mostrando que o parametro está vulnerável
lab 08
No intuito de conseguir o rce vou tentar enviar um arquivo malicioso contento uma web shell em php no formulário para envio de currículos
A aplicação faz um filtro por extensão e pelo magic number, então o aquivo malicioso deve terminar com o .pdf e conter magic number de um arquivo em pdf, ele ficou assim:
Dessa forma consegui enviar o arquivo para aplicação, agora tenho que descobrir para qual lugar ele foi enviado, para isso realizei uma enumeração para descobrir possíveis diretórios
A aplicação faz um bloqueio para scan com as ferramentas mais conhecidas, esse bloqueio é feito atraves do user-agent, então modifiquei o meu user-agent e consegui fazer a varredura
Descobri que meu arquivo foi enviado para o diretório /uploads
Então aproveitei a falha de LFI que encontrei no lab anterior para tentar executar o arquivo, porém a aplicação coloca um .php ao final do arquivo quando ele é chamado, acrescentei um null byte ( %00 ) para tentar eliminar o .php mas mesmo assim não consegui, tentei outros caracteres e nenhum funcionou
Como isso não estava funcionando decidi seguir uma outra linha de ação e testei o uso do php wrapper, e dessa vez funcionou, com isso consegui executar comandos no sistema
Com acesso ao sistema, já é possível ler as informações do usuário
lab 09
Com o RCE que consegui no lab passado, podemos ler arquivos no sistema, incluindo alguns arquivos sensíveis
Entre eles o arquivo /var/www/html/prog/db.php que contem a senha e o usuário do banco de dados