Jump to content
Walderlan Sena

DnsDragon - Pesquise por diretórios ocultos em aplicações web

 Read 3 minutes

Recommended Posts

 Read 3 minutes

 

Pesquise por diretórios ocultos em aplicações web [Repositório Oficial: GitHub Click aqui!]

O DnsDragon é um script para escanear aplicações web em busca de diretórios como: administracao/ login/ dashboard/ etc.

Citar

ATENÇÃO: A ferramenta foi desenvolvida para ser utilizada por profissionais/usuários éticos no processo de teste de intrusão em sistemas de informação. 

No processo de intrusão em aplicações web geralmente se faz necessário explorar contexto relacionado a segurança de diretório. De modo que com os mesmos desprotegidos pode causar um grande problema como a visualização de arquivos indesejados. Com isso desenvolvi um programinha em Shell Script, bem básico para realizar este processo.

Use:

./dnsdragon https://www.SiteQueDesejaScanear.com dragon.txt

 

Códigos de retorno

"A linha inicial de uma resposta HTTP indica ao cliente se sua requisição foi bem sucedida ou não Essa situação é fornecida através de um código de retorno (Status-Code) e uma frase explicativa (Reason-Phrase). De acordo com Fielding, o código de status é formado por três dígitos e o primeiro dígito representa a classe que pertence classificada em cinco tipos:

  • 1xx: Informational (Informação) – utilizada para enviar informações para o cliente de que sua requisição foi recebida e está sendo processada;
  • 2xx: Success (Sucesso) – indica que a requisição do cliente foi bem sucedida;
  • 3xx: Redirection (Redirecionamento) – informa a ação adicional que deve ser tomada para completar a requisição;
  • 4xx: Client Error (Erro no cliente) – avisa que o cliente fez uma requisição que não pode ser atendida;
  • 5xx: Server Error (Erro no servidor) – ocorreu um erro no servidor ao cumprir uma requisição válida.

O protocolo HTTP define somente alguns códigos em cada classe descritos na RFC 2616, mas cada servidor pode definir seus próprios códigos." - Fonte: Wikipedia  

Como a verificação de diretório funciona?

Sabendo que uma requisição HTTP terá um código de retorno, capturamos o mesmo e fazemos o teste de existência do diretório ou arquivo especifico:

Cod Significado
200 OK Diretório ou arquivo encontrado
403 Forbidden Diretório encontrado mas não há permissão de acesso
302 Moved Temporarily O cliente para executar um redirecionamento temporário

 

:) Código do Software:

#!/bin/bash

# DnsDragon - Pesquise por diretorios em sistemas web
# Description : Encontre diretórios ocultos em websites com a requisição via Curl
# Use         : ./dnsdragon [ https://www.siteparaanalisar.com ] dragon.txt
# Developer   : Walderlan Sena - <https://www.mentesvirtuaissena.com>
# Email       : contato@mentesvirtuaissena.com
# LINCENSE    : Lincense GPL <http://gnu.org/lincense/gpl.html>

# Variaveis Globais
scriptversion="v1.1.2"

ok="\033[1;32m[ Iniciado a busca ]\033[0m"

error="\033[1;31m[ ERROR ]\033[0m"

found="\033[1;32mFOUND DIRECTORY »»»»»»»\033[0m"

notfound="\033[1;31mNOT FOUND »»»»»»»\033[0m"

found2="\033[1;32mFOUND FILE »»»»»»»\033[0m"

# Tela de splash
splash(){
clear # Limpando a tela do terminal
echo -e '''\033[1;32m
       ____            ____
      |  _ \ _ __  ___|  _ \ _ __ __ _  __ _  ___  _ __
      | | | |  _ \/ __| | | |  __/ _  |/ _  |/ _ \|  _ \
      | |_| | | | \__ \ |_| | | | (_| | (_| | (_) | | | |
      |____/|_| |_|___/____/|_|  \__,_|\__, |\___/|_| |_|
                                       |___/       v1.1.2
        \033[1;33m"Pesquise por diretórios e arquivos em websites"\033[0m
       contato@walderlna.xyz - Developer: Walderlan Sena
         https//www.github.com/WalderlanSena/dnsdragon
    \033[0m'''
} # end function

# Opções do script
usage="\
Usage: $0 [SITE] [WORDLIST] [OPTION]...
   or: $0 [SITE] [WORDLIST] -v  [ Opção padrão ]
   or: $0 [SITE] [WORDLIST] -s  Host/Diretorio encontrados
Options:
\t--help     exibir esta ajuda e sair.
\t--version  exibir informações sobre a versão e sair.
\t-v  (Opção padrão) Mostra o scaneamento em funcionamento
\t-s  Mostra apenas os Host/Diretorio encontrados
\t-i  instalar no seu desktop no diretorio /usr/bin/
Exemplo execute:
\t./dnsdragon.sh http://www.sitealvo.com dragon.txt
Caso esteja instalado no seu PC utilize:
\tdnsdragon [ Site ] [ wordlist ] [ opcoes ]
"

# Verifica se os parametros foram passador corretamente
if [ ! -z "$1" ] && [ ! -e "$2" ] && [ -z "$2" ]
then
    # Verifica se o usuario deseja um help a versão ou instalar
    case $1 in
        --help)
            splash
            echo "$usage";;
        --version)
            echo $scriptversion;;
        -i)
            echo -e "\033[1;32m[ + ]\033[m Iniciando a instalação em /usr/bin/"
            if sudo cp dnsdragon.sh /usr/bin/dnsdragon
            then
                echo -e "[!] Instalado com sucesso em /usr/bin/ agora realize a chamada do software\n Apenas com 'dnsdragon [ Site ] [ wordlist ] [ opcoes ]'"
            else
                echo -e "$error Não foi possivel realizar a instalação..."
            fi
            echo "";;
        *)  echo "$usage";
    esac
elif [ ! -z "$1" ] && [ -e "$2" ]
then
    # Chamando tela de Boas Vindas
    splash
    # Obtendo a quantidadde de linhas da wordlist passada
    word=$(cat $2 | wc -l)
    echo -e "
    \t[ \033[1;34mWordlist:\033[0m $word  \033[1;34mInicio:\033[0m `date +"%T"` ]
    "
    echo -e "$ok Iniciando a busca..."
    # Iniciando a leitura da lista passada via parâmetros
    for search in $(cat $2);
    do
        # Realiza a requisição via HTTP com o curl e captura o valor de retorno
        result=$(curl -s -o /dev/null -w "%{http_code}" $1/$search/)        # Busca por diretórios
        result2=$(curl -s -o /dev/null -w "%{http_code}" $1/$search)        # Busca por arquivos
        # Verifica se a opção de pesquisa silênciosa foi selecionada
        if [ "$3" != "-s" ]
        then
            # Verifica se é um diretorio acessivel ou forbidden
            if [ "$result" == "200" ] || [ "$result" == "403" ];
            then
                echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found $1/$search/"
            else
                echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $notfound $1/$search/"
            fi
            # Verifica se um diretório foi encontrado e realiza o download do mesmo
            if [ "$result2" == "200" ]
            then
                echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found2 $1/$search"
                curl -s $1/$search --output $search
            fi
            # Caso exista a opção -s passada como parametro mostra apenas os diretórios e os arquivos encontrados
            else
                if [ "$result" == "200" ] || [ "$result" == "403" ]
                then
                    echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found $1/$search/"
                fi
                if [ "$result2" == "200" ]
                then
                    echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found2 $1/$search"
                    # Realizando o download do arquivo
                    curl -s $1/$search --output $search
                fi
            fi
        done
else
    # Opção padrão quando não há solicitação correta via parâmentro para o script
    splash
    echo -e "$usage"
fi

   Para mais informações sobre o funcionamento, basta acessar o repositório no Github.

 

Grande Abraço.

Edited by Walderlan Sena
Atualização para a nova versão do software...

Share this post


Link to post
Share on other sites
 Read less than a minute

Bash :x

hehehe

Esse tratamento do código de retorno me lembrou dessa imagem:

http.jpg.3dbf10c390b25e3050155a5cf2771cd2.jpg

Vou fazer algumas sugestões pra pensar no futuro, caso queira, claro:

  • Instalar em /usr/bin ao invés de /bin ("usr" vem de "user", que seriam programas instalados pelo usuário, ou seja, não nativos do SO).
  • Uma wordlist padrão com os nomes de diretórios mais comuns acho que seria legal.
  • Fazer download do que encontrar aberto (seria útil pra deixar rodando em C&C de malware por exemplo).
  • Rodar como um serviço.

Abraço!

Share this post


Link to post
Share on other sites
 Read less than a minute

A imagem hehehehe.

Existe sim um exemplo de wordlist. Esqueci de upar :D. O download ainda não adicionei, vou colocar na próxima versão ! Haaa verdade a parada da instalação, vlw !

 

Grade Abraço !

dragron.txt

Edited by Walderlan Sena
Adicionar nova explicação

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...