fala pessoal Andre Alonso aqui e nessa aula nós vamos criar a nossa primeira ferramenta juntos nós vamos criar uma ferramenta de hacking capaz de encontrar pastas e arquivos privados dentro de sites quando um programador cria um site quando uma empresa cria um site Seja um site de notícia rede social qualquer coisa que tá na internet tem um servidor muitas vezes eles deixam arquivos e pastas dentro desses servidores arquivos e pastas são acessíveis e qualquer pessoa pode entrar lá e ver mas a questão é que muitas vezes esses arquivos eles são privados vamos supor que um programador deixou um arquivo com um documento confidencial dentro do servidor do site só que esse arquivo ele nunca imaginaria que alguém encontraria o nome dele lá dentro um arquivo específico um arquivo de backup e a única forma de encontrar esses arquivos é testando é tentando colocar urls testar urls eu vou mostrar isso na prática aqui na minha tela eu tenho o site da prefeitura um site da Prefeitura de São Paulo e após utilizar algumas técnicas para poder encontrar arquivos secretos eu consegui encontrar um arquivo de backup desse mesmo site registro. sp. gov.
br a não deu uma olhada mas eu vi que eles estão expostos na internet e que são backup de banco de dados o que que é guardado em banco de dados emils senhas informações confidenciais CPF ainda mais um arquivo da prefeitura E se você ver aqui a gente tem o site principal então eu vou pegar aqui a URL e colocar aqui na tela para vocês verem a gente tem o site principal aqui do registro e a gente também tem o local onde esse arquivo ele tá exposto Então vou colocar aqui também Lembrando que esse arquivo que eu tô colocando ele tá literalmente exposto pra internet pro Google Então se a gente ver aqui na URL principal do site a gente tem o site. gov ele tá no local Barra na pasta barra mas se você entrar na pasta serest arquivos backup DB backups você encontra um arquivo secreto de backups onde tem todos os servidores mas a única forma de você encontrar essas pastas é simplesmente Na tentativa e erro você pode pegar um um site padrão uma url e testando Será que existe um arquivo chamado backups uma pasta chamada backups você vai lá testa backups Será que existe uma pasta chamada tal coisa vai lá testa ela Existem muitos nomes de pasta padrão inclusive de tecnologias por exemplo no sites WordPress que é o maior criador de site que existe se você colocar tentar entrar na pasta WP traço admin você vai encontrar um painel de administrador se você tentar entrar em uma pasta chamada não sei senhas Às vezes o programador tem uma pasta lá dentro que chamada senhas e para fazer esses testes existe as ferramentas de escamento de diretórios então por exemplo o de search é uma ferramenta que consegue escanear diretórios ela pega uma URL e vai testando várias possibilidades backups senhas backup. db tal coisa inclusive PR fazer isso existem listas onde tem vários diretórios que você pode testar as chamadas Word lists a gente vi aqui Sec list aqui ó a gente tem uma um repositório do HUB onde tem várias listas para testes Então se a gente ver aqui ó fing a gente vem em fing que é o nome dessa técnica de testar várias coisas a gente vem aqui user ag Vamos colocar aqui não sei diretórios diret diret aqui tem vários diretórios pode testar tem com diversas coisas vamos ver URL URL in várias Word list listas de coisas que você pode testar em em URL para tentar encontrar pastas então aqui ó top 100 domains vamos ver mais um aqui o r RX vamos ver environment buing deixa tentar encontrar uma outra Word list aqui payloads aqui ó Discovery aqui nessa aqui é nessa pasta de discovery que a gente consegue encontrar mais coisas aqui ó web content aqui em web content a gente tem todas as wordlist que a gente pode encontrar conteúdos web conteúdo seja banco de dados seja seja arquivos de de configuração então Eh como um DB backups aqui ó esses são as pastas padrão de backup de banco de dados aqui se gente testasse Sei lá mylt aqui dentro testasse aqui a talvez encontrasse Então a gente tem vários url que dá para testar e o nosso programa Vai simplesmente pegar uma lista uma lista de urls de diretórios e testar isso em um site e tentar encontrar em um site inclusive nos responder se essa URL é válida ou ela não é válida então é exatamente isso que a gente vai fazer aqui a gente tá na nossa pasta principal nosso primeiro código aqui e para criar esse projeto a gente pode fechar e criar uma nova pasta Então vou vir aqui criar uma nova pasta vou colocar nossa ferramenta pode criar um nome para ela não sei ah directory scanner vou colocar TDI de scanner ISO vai ser o nome da nossa ferramenta TDI dir scanner colocar aqui vou renomear dessa forma TDI de scanner is aqui vai ser o nome da nossa ferramenta após isso aqui Dent a gente vai criar um novo arquivo eu vou criar um novo arquivo chamado também o mesmo nome que TDI dir scanner ppai dessa forma ou a gente poderia colocar um nome por exemplo muita gente coloca m.
P que é o arquivo principal Vou colocar até M pon pai porque fica um pouquinho mais fácil a gente digitar na hora de executar então agora a gente criou uma pasta aqui main. py e a gente pode executar esse arquivo Então vou colocar até um print pra gente executar ele Oi e eu vou salvar e agora dando Play a gente consegue ver aqui diminuir um pouquinho para cá a gente executou o nosso arquivo e agora o que que a gente precisa para criar uma ferramenta de escaneamento de diretórios eu vou executar por exemplo o de search que é uma ferramenta que faz isso a gente consegue passar para ela URL e ela encontra diversas pastas lá dentro então se eu vir aqui entrar na pasta do de search eu vou executar ele dir search vou passar um parâmetro para ele menos u e um site que a gente quer Vamos colocar por exemplo o próprio site da prefeitura aqui registro e vou passar uma url Opa é Python Python 3 de search. py confundi ó search.
py e aí dando Play o que que ele vai fazer ele vai começar pegar o RL que a gente quer vai começar a testar vários diretórios tentar várias possibilidades olha encontrou um aqui e aqui ele deu 406 e o que são esses códigos 406 Esses códigos pra gente testar se um site se um diretório ele existe ou não a gente testa a partir do status code o que que é o status code quando você se comunica com o site ele te responde com um status code e o status code padrão o código de status é 200 e é que o site tá tudo certo um status code que provavelmente você já viu é o 404 quando você entra em um lugar numa pasta e ela não existe provavelmente já viu erro 404 e existe o erro 200 no caso não o erro o código de sucesso 200 que é quando você entra existe o código de erro 406 que é também algum erro de se eu não me engano não autorização e existem vários códigos de status código de status de um de um site quando você entra dentro dele isso eu tô falando por trás dos panos quando a gente envia uma requisição Então se a gente vir aqui ó códigos de status http a gente tem ó olha só os códigos aqui que a gente tem do código 100 ao 199 respostas de informação do 200 a 299 resposta de sucesso então o que quer dizer que uma pasta o diretório exist 300 a 399 que você foi redirecionado para algum outro local então Muito provavelmente talvez não exista porque quando você entra em uma pasta que não existe alguns sites te redireciona PR aba Inicial Então quer dizer que não existe 400 a 499 um erro a gente pode considerar um erro como algo que existe porque se não existisse retornaria talvez aqui ó mas na verdade correção aqui erros de cliente então aqui tá entrando também o 404 e uma pasta não existe então esse daqui a gente poderia descartar já aqui a gente tem erros de servidor erros de servidor são quando você manda alguma coisa e o servidor quebra então talvez a gente poderia considerar isso porque quando a gente entra em uma pasta que não existe o servidor não quebra el simplesmente fala que essa pasta não existe um erro de cliente então vocês já vão entender isso um pouquinho mais na prática mas para você ver um um erro desse na prática um código na prática você pode apertar Ctrl f12 você pode apertar f12 na verdade ou clicar com o botão direito e inspecionar quando você inspeciona um site ele abre essa aba de de desenvolvedor mas se você vir aqui em rede Olha só você pode ver todas as requisições todas as comunicações que seu computador tá fazendo com site então se eu recarregar o meu site aqui olha só tudo que tá carregando carregando imagem carregando um monte de coisa mas aqui se você ver nesse monte de informação el gente tem ó código de status 200 é o código confirmado talvez coisas aqui ó Deu Deu erro aqui vamos ver aqui não deu nem 400 nemum código de status aqui 200 tal se eu entrar em um local que não existe eu vamos tentar entrar nesse site num local que não existe página não encontrada Será que ele vai nos dar ó 304 ele nos deu um código de status diferente nessa página que não existe então a gente pode ver que em páginas que existem a gente recebe um código 200 mas caso ela não exista você vai receber um código diferente um código 404 um código de erro alguma coisa por exemplo nesse outro site aqui que eu encontrei um um arquivo secreto também de backup SQL se eu tentar colocar qualquer coisa aqui dentro o que que vai acontecer o site nem tá carregando aparentemente el demora para carregar quer dizer que o o arquivo não existe eu tentar entrar no site de São Paulo e colocar uma coisa aleatória Olha só coloquei uma coisa aleatória aqui 404 página não encontrada se eu inspecionar e ver o que que tá acontecendo na rede vir aqui recarregar a página olha só a primeira requisição aqui que é a requisição do site ela deu com status de 404 então assim que a gente descobre que um site uma url que uma pasta existe ou não então resumindo quando você tentar acessar um site ele der 200 existe no caso Não especificamente que esse local existe mas deu sucesso e muitas vezes quando dá sucesso quer dizer que uma pasta existe se der 404 não existe esse esse arquivo não existe você foi em um local que não existe dentro do site agora se der por exemplo código de erro de status code autorização negada é um status code interessante aqui ó 401 se der o status code 401 não autorizado é uma coisa interessante também porque você tentou acessar um local no site que você não foi autorizado não quer dizer que ele não existe quer dizer que ele existe mas você não conseguiu entrar você não pode entrar então já é alguma coisa interessante no âmbito do hacking então esses seriam os status code principais aqui a gente ficaria atento no nosso programa para saber se um site existe se um site não existe e agora vamos lá você já entendeu e vários pontos aqui vou até abrir um comentários aqui no nosso código para para colocar isso você já entendeu aqui que a gente tem os status code e os sites quando a gente entra em contato com ele eles nos dão um status code de 200 404 vários status code que podem existir aqui e que remetem a erros ou sucessos você entendeu que as nossas ferramentas Elas têm que encontrar diretórios testar diretórios diretórios que vão ficar depois da URL Então vamos supor globo. com barra o diretório essa parte aqui é o diretório a gente testaria isso globo. com bar notícias uma pasta normal globo.
com barbs se globo. com bar backups existisse seria alguma coisa até que esquisita globo. com bar senhas mas esquisito ainda então a gente teria que testar esses diretórios e ver se eles Retornam no status code Mas agora como que a gente faz isso como que a gente vai entrar em contato com o site mandar uma requisição para um site saber o status code dele para isso a gente vai utilizar a biblioteca o módulo do Python chamado requests e no requests a gente pode entrar em contato com sites a gente pode enviar comunicações sit inclusive requests é uma das bibliotecas que eu mais uso no Python inteiro Tod as ferramentas que euo em todos os programas que euo eue uso request então sempre domine ela porque vai ser uma ferramenta um módulo muito importante módulo que você vai importar no Python muito importante então aprenda a utilizar ela vamos lá primeiramente vamos instalar o request pra gente instalar ele a gente vai vir no nosso terminal aqui embaixo PIP 3 Install requests e dá enter E aí ele vai fazer a instalação no seu computador nesse caso foi até que rápido porque já tinha tudo instalado mas aí ele vai começar o processo de instalação e agora vamos importar ele no nosso código vamos vir aqui Import requests Acabei de importar o requests e vamos fazer a nossa primeira comunicação com site agora eu queria destacar aqui que a gente vai entrar aluma coisa mais específica na questão de comunica mas Peg esse código tenta aplicar testar isso porque você vai comear a pegar o jeito como funcion essas requisições Vamos requ eu V fazer reisi chamada de fazer uma rei de site para pegar dados os dados que eu peguei tô pegando o logo da prefeitura tô pegando o background tô pegando todas essas informações aqui eu não tô enviando nada pra prefeitura tô simplesmente pegando o site e mostrando ele para mim então o get Ele simplesmente faz isso ele pega o site mas agora se eu enviasse algo pro site por exemplo se eu pesquisasse algo aqui e desse enter eu enviaria um post que é quando você envia informações pro site então enviaria uma requisição do tipo post então exe esses dois tipos de requisição aqui nesse caso a gente não vai utilizar post porque a gente não quer enviar dados pro site a gente não quer fazer login Por exemplo quando você faz o login você envia um post com informação de login senha nesse caso a gente tem que diferenciar aqui que a gente vai querer uma requisição do tipo get que pega informações e que existe requisição do tipo post e simplesmente envia informações a gente tem esses dois tipos de requisições Então vamos lá a gente quer fazer uma requisição do tipo get enviando um site Então vou importar request eu vou colocar requests.
get E aí colocando essa função aqui dentro eu vou colocar o site que a gente quer v colocar o site da prefeitura mesmo vamos L coloc aqui dentro colocar naing um dessa função aqui vou dar um print aqui dentro ou posso criar uma variável aqui também a variável requisição vai tá aqui eu posso dar um print nela aqui ó PR requisição agora eu vou salvar e vou dar um play para ver o que que vai acontecer vamos ver deixa dear essa essa aba aqui aí ó vamos ver ó Parece que deu um erro aqui deixa eu dar um Clear um play de novo então eu dei Play aqui ele tornou um erro aqui conexão abortada request exceptions e eu analisei esse erro aqui que ele nos deu eu testei fiquei pensando será que tem algum problema aqui no código e quando eu fui verificar Olha só site da prefeitura ele tá fora do ar aqui não é possível acessar o site pode ter acontecido duas coisas aqui que é uma coisa interessante que eu quis mostrar aqui na aula ou s deles caíam ou eu fui bloqueado pelo site porque eu tinha acessado muitos locais aqui dentro do site então TZ eles me bloquearam aqui do site site caiu então vou pegar um outro site aqui então eu encontrei um outro site aqui encontrei o site da CNN site de notícias que a gente pode tentar encontrar pastas aqui dentro então vamos lá eu vou ir no site da CNN então encontrei o site da CNN aqui que a gente pode testar coisas aqui dentro Vamos tentar scanear alguns diretórios Então vou vir aqui colocar CNN Brasil a URL deles salvar e dar um play E olha que interessante response 200 quer dizer que o site existe que a página existe agora se eu vir aqui e colocar qualquer coisa dar play response 404 não existe talvez se a gente tentasse acessar algum Arquivo Confidencial nos dese response 40 não autorizado então a gente pode testar coisas aqui e agora como que a gente pode fazer para poder colocar isso em uma ferramenta que pode entrar numa lista eí testando a gente aprendeu na última aula que a gente pode nas últimas aulas vários elementos pra gente fazer isso O primeiro é as listas Então vamos lá vou criar uma lista aqui de diretórios agora eu vou colocar vários diretórios nessa lista existem diretórios famosos assim se eu lembrar de cabeça a gente pode tentar backups a gente pode tentar não sei vamos pegar aqui da nossa Sec listas copiar alguns vamos vir aqui ó combs eu não vou querer de banco de dados vou tentar Web Services Web Services functions vamos ver ah eix tem vários aqui vou pegar de cabeça mesmo colocar backups senha a do WordPress as pastas padrão do WordPress WP admin ó WP WP user WP content Vamos tentar colocar aqui não sei Database várias coisas aqui vários diretórios tô colocando de exemplo por enquanto depois a gente pode colocar várias outras coisas aqui dentro então cria aqui diretórios aqui uma lista e agora como que a gente pode percorrer uma lista utilizando for for vou colocar pasta em diretórios ou diretório em diretório vou colocar pasta porque fica mais legal for pasta em diretórios E aí aqui dentro eu vou colocar requisição Então vou jogar ela aqui dentro do for então a pasta aqui ela vai est como Cada um desse daqui vai ser percorrendo e essa variável vai ser cada um desses depois disso a gente pode vir aqui nas requisições colocar aqui no final deletar e concatenar adicionar o final mais pasta e vamos ver vamos ver o que que vai acontecer vou colocar o print aqui também eita mais pastas pasta eu vou colocar o print aqui e vamos dar play no nosso código Play nele aqui olha só olha que legal el testou várias vezes aqui 44 404 ó 200 200 as pastas do WordPress aqui que eu coloquei pastas padrão elas existem 404 Olha que interessante Então você tentar entrar em CNN Brasil bar WP admin é um painel de administrador um painel que funcionários usam um painel que administradores programadores usam Então nesse caso que eu coloquei algumas coisas que eu lembro de de cabeça da minha experiência de hacking eu coloquei aqui você poderia usar uma lista com 1000 diretórios e tentar ir encontrando locais escondidos aqui mas primeiramente nosso código ele não tá nada intuitivo Olha só se a gente executar ele é simplesmente ele mandando response 404 200 404 que que é isso ele não fala se o site existe ou não ele só fala é resposta como que a gente pode deixar isso de uma forma Bonita vamos verificar então a resposta do site só que nesse caso a gente tá simplesmente printando a requisição a gente não consegue pegar literalmente o número do código do status code para isso vamos ir na documentação documentation requests Python Vamos ir na documentação do requests para ver como que a gente pode fazer isso aqui requests já de cara olha que legal a gente tem requests. get tem até autenticação aqui usar a gente não vai usar autenticação r. status code se a gente colocar a nossa variável requests P status code ele nos dá o número exato o número exato do status code r.
text ele nos dá o texto o texto retornado pela página Vamos testar colocar o texto pon Tex Tô vendo que vai vai bugar aqui ó vamos ver vou dar play aqui e E olha que legal ele nos deu o código fonte inteiro da página aqui todo o código fonte tá aparecendo porque eu tô simplesmente Acessando ele com python Então seria a mesma coisa que eu vim aqui aqui ó exibir código fonte da página e ver esse monte de coisa aqui monte de caracter e tá sendo retornado aqui no caso a gente quer o status code vamos aqui ponto status code dessa forma e agora vamos salvar e dar play agora ele tá exibindo de uma forma melhor somente os números a gente tem que verificar se ele tá online se o site existe ou não para isso vamos vir aqui criar um if if requisição status code colocar iG iG 200 quer dizer que nosso site existe 200 di el existe ou a gente pooc també no momento só 200 então if requisição status C igual 200 eu vou colocar print site ou diretório diretório encontrado E aí aqui eu vou colocar o nome do diretório eu posso até colocar esse diretório já em uma variável então ó teste vou colocar dentro de uma variável essa esse monte de coisa teste que aí eu consigo usar ele aqui também teste Então vamos lá percorrendo a pasta para encontrar diretórios criar uma variável do diretório que vai testar enviar a requisição Vê se a requisição é 200 dá um print diretório encontrado vamos testar novamente vamos dar play e olha só ao invés daquele monte de coisas que ele tava lá 404 404 404 uma lista com 1000 testes imagina 1404 você tem que procurar os 200 lá no meio ele já nos mostra direto os diretórios encontrado olha só que legal e se a gente quisesse também colocar outros avisos aqui por exemplo Vamos colocar um elsif para mostrar a requisição as requisições que são de acesso negado 401 você consegue colocar uma mensagem diferente colocar aqui acesso acesso negado e colocar também a URL eu coloquei aqui um elsif de ver que parece que alguma coisa tá no erro teste ah não não é oif é elif fudir com outra outra linguagem de programação elif testar outro status code e a gente tem Vou colocar aqui status code l para nos dar alguma um guia que a gente pode verificar aqui então por exemplo aqui ó status code list client error mais existem 401 eles lá level 400 level 200 sucesso então em todos que tem levvel 200 a gente poderia colocar aqui se o status code tá entre Olha só se ele tá entre 200 Então vou colocar assim se ele é maior ou igual maior ou igual a 200 e and ele é E se ele for menor que 300 quer dizer que ele tá na faixa do level 200 ele tá no sucesso se ele estiver no 400 então aqui ó Bad request não autorizado forbidden not found conflito nesse caso o único que nos importa aqui é o not found os outros parecem Interessante não autorizados uma coisa bem interessante a gente pode colocar aqui somente 404 Mas se a gente colocar aqui ó se ele for igual a 401 Vou colocar aqui entre 401 ele for igual 401 ou or 400 e deixa eu ver 403 ou 403 Esso aqui forbiden acesso negado E aí a gente já tem meio que uns status code categorizados aqui a gente poderia fazer um status code bem mais avançado aqui de 200 de cada mensagem de erro tem uma coisa específica mas eu quero simplesmente passar a ideia para vocês e essa ferramenta ela já é meio que efetiva você já pode utilizar ela se gente forse tentar entrar no código do dis Search por exemplo Vamos tentar entrar aqui dentro tentar entender o que que tem aqui dentro dis search. py já um código bem maior tentar analisar ele aqui ó uma coisa interessante em códigos maiores que ele tem várias funções que são importadas funções dele então eles são divididos em vários códigos testing andb gente tem os diretórios olha os diretórios que ele Testa ele testa um monte de diretórios Lib ó Lib ele tem bibliotecas aqui testes Connection o vamos ver se eu consigo encontrar o de códigos status code vamos ver init só tem várias coisas no no código report par civ tentar pesquisar aqui ó 200 ó status se aparece no código status tem bastante coisa aqui no sear Mas enfim então agora a gente já criou Nossa ferramenta que é capaz dear encontrar os diretórios agora vamos tentar deixar um pouquinho mais mais visual eu aqui colocar dentro uma uma variável aqui que vai ser o site dentro deloc input vou colocar site para escanear dois pontos eu vou colocar mais e aqui eu vou colocar não no caso só isso Sanear no input e agora no nosso teste a gente vai colocar site mais pasta Então a gente vai editar o site que a gente quer escanear nesse caso se gente vir aqui vir aqui no site esar Play a vaier selecionar o site que a gente quer se gente quiser sei lá ttps técnicas de invasão com s requests não tá definido ah ter deletado sem querer request pronto no código SS tcnicas inv. com Vamos ver que deu algum outro problema URL node name deixa eu ver vamos ver https técnicas técnicas de invasão pcom Vamos colocar ele aqui de novo talvez tenha dito alguma coisa errada vamos lá Eita técnicas de invasão pcom olha só a gente tem um problema aqui olha que interessante quando a gente digita um site O que que tá acontecendo vamos lá agora agora a gente tá resolvendo um problema aqui no nosso no nosso código só para finalizar porque quando você tiver programando você também vai ter vários erros é importante você analisar os erros olha aqui o que que apareceu no Nosso Erro vamos lá com backups Olha só alguma coisa deu erro tal tem um erro gigantesco Mas ele nos deu uma coisa específico ele deu erro em técnica de invasão com backups então isso quer dizer que a gente tentou acessar técnica de invasão com backup isso aconteceu esse erro tá acontecendo porque a gente tá tentando juntar a RL que a gente passou mas a palavra que a gente quer testar mas a gente pode passar a pessoa que vai est executando Nosa ferramenta ela pode passar tanto técnicas de invasão com quanto ela pode passar técnicas de invasão pcom barra que aí já vai não daria erro Se eu fizer isso se eu colocar https 2 bar técnicas de invasão com bar ele escaria tranquilamente mas se eu colocar sem barra ele vai dar erro então a gente pode no nosso código verificar vamos lá V um outro if aqui ó if o site que a gente tá passando agora a gente vai utilizar uma forma aqui que a gente vai meio que quebrar um um string a gente vai passar aqui um texto só que a gente pode selecionar uma letra em específico do nosso texto então se eu pegar a última letra do nosso texto da nossa URL L aqui ó Lan site menos um que que eu tô fazendo eu tô pegando o último caracter do texto que tá sendo passado se o último caracter fo igual a barra aqui ele vai a variável de teste vai ser site mais pasta mas se não for se o último caracter não for barra el Nossa variável de teste vai ser mais barra mais barra mais pasta Então olha que legal a gente tá verificando pegando aqui ó site nos caracteres do site Qual que é o último caracter verificando se ele é barra se ele não for barra ele adiciona barra então seria um bug corrigido no nosso código vou dar um Clear vou tentar executar ele aqui por exemplo tecnic vaz.
com vamos lá agora tá funcionando se colocar aqui técnica de.