fala pessoal Andre Alonso aqui e eu tenho uma pergunta para você você sabe onde que as informações das empresas são guardadas onde os usuários e senhas ficam cartões de crédito cpfs informações confidenciais da empresa e dos usuários quando você coloca alguma informação em algum site envia algum documento onde que ele é armazenado nessa aula eu vou te mostrar como explorar uma falha de segurança em banco de dados o local onde todas as informações são guardadas todas as informações confidenciais de uma empresa ficam eu vou te mostrar na prática como entender e explorar falhas de segurança
em bancos de dados SQL um dos bancos de dados mais famosos mais utilizados em sites atualmente Então bora pra minha tela que a gente vai ver isso na prática a falha que a gente vai ver hoje é a falha de S inje uma falha que explora banco de dados que permite a gente acessar editar e ver banc de dados é o local onde a maioria das informações confidenciais estão por exemplo informações de um banco onde que um banco guardaria as informações deles o registro de clientes transações até talvez senha de cartão de crédito tudo isso
tá em bancos de dados numa rede social por exemplo os usuários fotos privadas as mensagens que eles trocam estão em bancos de dados o local que as empresas que os sistemas os desenvolvedores usam para armazenar os dados armazenar dados em massa milhares e milhares de usuários de informações e essa falha que eu vou mostrar aqui é capaz de hackear banc de dados especificamente banc de dados SQL uma das principais linguagens e você vai ver ela na prática e como fazer isso primeiramente Vamos partir agora pra falha de skl injection primeiramente o que que é skl
isso é uma sigla Isso é uma linguagem de programação isso é um banco de dados o que que é isso skl é a linguagem dos bancos de dados a linguagem de programação dos bancos de dados inclusive ela tem um diferencial que queria mostrar para vocês ela é uma linguagem bem peculiar deixa eu mostrar aqui eu vou abrir um código em SQL SQL C exemple PR poder mostrar PR vocês então esse daqui é um código em SQL vou copiar ele aqui aqui eu tô com código eml e essa linguagem ela peculiar porque ela parece muito com
instruções instruções em inglês então se a gente perceber aqui nas palavras que estão sendo usadas a gente pode ver aqui a palavra Create criar selecionar selecione asteriscos de customers e clientes usuários que Where que idade é maior que 25 crie stram select selecione from Então ela é uma linguagem que ela tem muitas instruções a gente vai brincar um pouquinho com ela então essa linguagem ela passa instruções para um banco de dados para criar para editar para deletar e onde que esses bancos de dados fica eu vou desenhar uma estrutura aqui de um site para vocês
poderem entender melhor também quando a gente tem um site por exemplo o site de um banco a gente tem o site aqui site principal servidor onde tá hospede site onde a gente tem todas as coisas visuais imagens textos tudo que você vê do site quando nós acessamos que nós acessamos o site do banco o banco ele pega de um banco de dados todas as informações do nosso per então acessa o site do Banco servidor e o servidor entra em contato com o banco de dados Então tem um banco deos servidor ent em contato el perguntando
por exemplo pindo osos do usu tal vamos supor que a gente vai fazer uma transferência banco aqui a gente tem o sistema do banco né área de transferência você pode transferir deixa eu dar uma desenhada um pouquinho melhor aqui então aqui a gente tem o local de transferir do banco a gente tem a tela de transferência ah os ícones os textos transferir de tal pessoa para tal pessoa Coloque seu CPF tudo a gente vai com o nosso computador transferir um valor transferir da pessoa a pra pessoa B dinheiro o que que acontece por trás dos
panos por trás dos panos o site ele entra em contato com o servidor e o servidor vai no banco de dados e o que que ele fala ele fala ele vai e fala selecione selecione o usuário a e retire vamos su que ele vai transferir R 100 a gente pega e transfere R 100 do usuário a pro B no banco de dados ele vai falar selecione o usuário a e retire R 100 selecione o usuário b e adicione adicione R 100 ele passa instruções pro banco de dados o site o banco o aplicativo ele passa
instruções pro banco de dados que tá aqui então se a gente fizer outra coisa por exemplo a gente Deleta a nossa conta no site a gente vai no site na rede social vai lá e deleta nossa conta quero deletar a conta o que que vai acontecer quais instruções que o site vai mandar pro banco de dados ele vai lá no banco de dados ele vai falar selecione a conta de fulano e delete e vai deletar conta de fulano se a gente cria uma postagem no Instagram adicione adicione não sei um no número de postagens de
fulano ele dá instruções pro banco de dados o servidor ele dá instruções pro banco de dados então assim que funciona no caso nosso computador nosso celular se comunica com o servidor e o servidor se comunica com banco de dados e pede para deletar alguma coisa adicionar alguma coisa e assim que funciona e a linguagem cql assim que funcion essas instruções que estão sendo passadas aqui tá tendo instruções para criar usuários Olha só select tal que o gênero é feminino Create tal produto tá tendo várias instruções aqui no banco de dados Então essa aqui é a
linguagem a que L Então esse é o diferencial dela ela é muito parecida com instruções com palavras que a gente dá e a gente pode até programar um pouco utilizando ela eu dei alguns exemplos de coisas que a gente pode fazer tem um site que você pode treinar skl e o skl ele é parecido com isso daqui ele é parecido com uma planilha do Excel um banco de dados parecido com uma planilha Então como que funciona um banco de dados o banco de dados que eu que eu tô mostrando aqui a gente tá adicionando deletando
usuários é como se fosse uma planilha uma tabela que a gente tem nome a gente tem vamos supor um banco nome do usuário o e-mail dele a gente tem não sei dinheiro CPF tem vários dados e e os usuários são colocados quando é criado um usuário em uma conta é adicionado no banco de dados esse usuário uma planilha então Andres Alonso Alonso e-mail Alonso @ tdi.com dinheiro R 100 CPF e tal é adicionado quando a gente cria algo é adicionado no banco de dados ele é como se fosse uma planilha e com esse site aqui
a gente consegue dar algumas instruções para ele então vamos lá a instrução mais básica que eu queria mostrar PR vocês aqui no canto tá mostrando o banco de dados Então tem um banco de dados com categorias empregados produtos várias coisas e a instrução mais básico é selecione asterisco que é a mesma coisa que selecione tudo Custom selecione tudo de usuários de de customers a tradução seria deixa eu ver customers seria clientes isso não usurios clientes selecione tudo de clientes e se a gente D Play aqui deixa eu deixa eu recarregar esse site aqui carregar ele
se a gente desse Play aqui Database lá se gente desse Play aqui olha só ele selecionou tudo de clientes e elorn como se fosse uma tabela isso que tá num banco de dados D do cliente o nome dele e o endereço dele uma cidade então a gente pode selecionar select to from customers select T for orders posso dar Run e ver todas os pedidos que tiveram produtos products products a gente pode ver os produtos Então nesse site a gente pode dar instruções a cql para ver um banco de dados a pode selecionar então selecionar os
clientes a gente pode criar inclusive criar uma Database criar uma tabela se a gente quiser criar uma tabela aqui então tudo que que tem aqui são tabelas no skl um banco de dados a gente tem databases banc de dados dentro dos bancos de dados a gente tem tabelas são tabelas de de clientes de produtos tal coisa tal coisa E aí dentro das tabelas a gente tem as colunas as linhas a gente tem como se fosse uma tabela mesmo do Excel se a gente quiser criar uma tabela a gente poderia vi em Create colocar em ma
Create table Vamos colocar alunos TDI e a gente poderia passar para eles aqui ó eu dei de exemplo a gente pode passar os dados desses alunos a gente vai entrar em uma parte um pouquinho mais complexa que seria é de números de definir o as variáveis aqui então por exemplo a gente teria uma variável ó nos alunos a gente criaria os alunos colocaria entre parênteses aqui uma variável chamada nome name essa variável ela é uma var varar que é como se fosse uma string caracos que não pode ser nula o nome a poderia criar mais
dados aqui não sei cpf também uma varchar a gente queria aqui o dinheiro dele ou pontos por exemplo pontos do aluno pontos e aí a gente cria não uma bachar a gente cria um int pontos in not nu então aqui o que que a gente tá fazendo a gente tá criando uma tabela tá criando uma tabela s l aqui chama alunos TDI com a variável name CPF pontos com a coluna no caso coluna name CPF pontos então a gente tá fazendo isso e agora bora dar um Run para ver o resultado clicar em Run aqui
ele precisou de deletar essa vírgula aqui no final aqui ponto barra também ponto vírgula para terminar um comando e olha só eu cliquei em Run e ele criou aqui no canto alunos TDI se eu selecionar o alunos TDI não tem nada a gente pode vir aqui e colocar inserir dados nessa tabela então insert inserte in alunos TDI então PR inserir nos alunos a gente poderia colocar insert alunos TDI passar o que a gente vai inserir então aqui a gente tem nem lembro era name era name a gente tinha pontos tinha email também não lembro que
que a gente tinha nos alunos TDI vou colocar inser alunos TDI E aí colocar aqui value value e aí colocar os valores a gente pode colocar aqui nome Alonso pontos 10 eu vou dar um Run vai dar erro porque ele vai pedir mais coisas name pontos aqui faltou CPF então name pontos e CPF aqui pronto inser alunos TDI name CPF e a gente pode colocar aqui do lado o que que a gente vai inserir então cpf também era uma string a gente poderia colocar aqui qualquer coisa então se a gente quiser inserir nos alunos TDI
a gente colocaria alunos TDI nome P CPF e values Alonso 10 e o CPF eu posso clicar em Run é um ponto vírgula no final e Run e olha só a gente fez uma mudança a gente clicar nos alunos name Alonso CPF e pontos então assim que se programa em skl É claro que eu não vou entrar muito especificamente em skl aqui e porque seria mais conta de desenvolvimento a questão de desenvolvimento de como criar Como programar um banco de dados do zero mas eu tô passando alguns comandos básicos que você pode utilizar no seu
processo por exemplo se você quiser deletar uma uma tabela drop table alunos TDI fazer isso dá um drop e você deleta Run você deletou a tabela Então são assim que funcionam os comandos agora bora partir PR falha de segurança em si você já entendeu os bancos de dados tem linguagem de programação a linguagem de programação skl você passa instruções para ele e funciona esse fluxo aqui seu celular seu computador ent em contato com o servidor e o servidor entra em contato com o banco de dados como que funciona essa injeção skl Como assim injetar skl
e eu vou dar alguns exemplos para você de como que funciona essa injeção vamos lá num banco de dados quando você dá alguma instrução para ele vamos colocar por exemplo aqui quando você vai fazer login em algum site Então você tem a tela de login aqui do site você seleciona seu nome e o seu e-mail seu nome e sua senha nome e senha como que isso funciona no banco de dados quando você vai fazer login o banco de dados ele tem que comparar comparar para ver se existe algum usuário com esse nome e essa senha
no banco de dados entendido para ver se esse usuário existe lá dentro então por exemplo se a gente quer é se a gente faz login com usuário é aluno TDI e a senha TDI 456 o banco de dados servidor ele vai mandar essa instrução pro banco de dados select PR PR alunos por exemplo Where nome é igual a aluno TDI e senha [Música] senha end end senha igual a TDI 456 esse daqui vai ser o código que vai ser passado pro banco de dados eu posso até mostrar um código na prática para vocês esse daqui
é um código de uma aplicação web em PHP que faz login de uma pessoa Então olha só aqui no código você não precisa entender Tod ess pontos mas você pode ver que o código ele insere ele manda um comando pro banco de dados chamado select ID eil senha from users from usuários que o e-mail é igual o e-mail inserido do usuário a senha é igual a senha inserida do usuário ele seleciona isso do banco de dados então ele procura um usuário que o nome seja tal e a senha seja tal mas agora a gente entra
no problema o problema é que muitas vezes quando um desenvolvedor vai enviar esse código pro banco de dados ele não trata ele da forma certa ele não insere o nome aluno TDI e a senha TDI 456 da forma certa Como assim vamos supor que você esse login Ok com o nome PR alunos we nome aluno TDI ind senha TDI 456 ele vai verificar se tiver um usuário ele vai nos retornar se não tiver não vai deixar a fazer login Mas e se o aluno se a gente não colocar o nome aluno TDI e se colocar
aluno TDI or 1 ig a 1 Como assim que que é isso que que é esse código maluco Se você pegar esse código Maluco e enviar e os desenvolvedores não processarem esses dados da forma certa quando esse código quando esse nome cair no banco de dados o que que vai acontecer select PR alunos Where nome é igual a aluno TDI ou um é igual a um a gente quebrou a lógica a gente injetou o código skl aqui e o que que essa lógica vai ser quebrada ele vai ser acionar de alunos um aluno que tiver
o nome aluno TDI ou que um seja igual a um e um é igual a um Então isso é válido ele tá comparando aqui ou o nome é igual no TDI ou um é igual a um e um é igual a um então ele vai deixar a gente passar a gente poderia fazer isso na senha também por exemplo olha só se a gente colocar essa senha TDI 456 ou 1 ig a 1 que que aconteceria a senha seria TDI 456 ou 1 iG 1 E aí olha só como que seria a comparação do banco de
dados el ia chegar aqui ó selecionei de alunos Ok eu ten que selecionar um aluno que o nome seja aluno TDI não tem nenhum usuário aqui ou tem ele vai verificar se tiver um usuário ele vai fazer login Ok tá certo o usuário ou um é igual a um então de qualquer forma ele vai te deixar passar e aí na senha a senha tá incorreta você errou a senha então selecione um aluno que seja o nome dele aluno TDI e a senha seja TDI 456 não deixou passar ou que um seja igual a um então
um é igual a um ele deixou passar é a mesma comparação na programação pode ficar um pouquinho estranho porque eu tô mesclando várias coisas fazendo várias comparações Mas no banco de dados o que você tem que entender é que a gente consegue inserir códigos a gente consegue inserir uma coisa a mais porque quando o esse dado é colocado no banco de dados ele não é tratado ele não é considerado como string às vezes ele junta no meio de tudo e o banco de dados ele interpreta ele então ess é o skell injection e agora bora
ver ele na prática como que ele acontece ele pode acontecer tanto em telas de login Como eu disse aqui olha só na tela de login ele faz isso ele verifica e a gente consegue injetar isso PR fazer a gente logar na conta de qualquer pessoa vamos supor que você quer logar na conta da sei lá do El musk o usuário é Elon musk e a senha é qualquer coisa coisa ou um é igual a um E aí o que que vai acontecer vamos passar isso para B de dados o nome Elon musk a conta do
Elon musk existe ok então aqui tá sem o 1 igual a 1 deixa eu colocar aqui qualquer coisa quando você enviar isso o nome do musk existe ok a senha dele não existe então tá desconsiderado ou um é igual 1 um É iG 1 existe então a gente fez login na conta do elomask e a gente pode fazer isso também em pesquisas o que acontece quando você pesquisa algo em algum local o seu computador ele pesquisa não sei gatinhos E aí o site uma loja virtual um local de pesquisa que que ele faz ele se
comunica com o banco de dados o banco de dados perguntando banco de dados Existe alguma coisa relacionada a gatinhos E aí ele retorna ou uma uma loja você vai na Americanas e pesquisa liquidificador o seu computador vai pro servidor pesquisar liquidificador na Americanas E aí o servidor Ele pergunta banco de dados tem liquidificador Se tiver me entregue todos os resultados e te entrega mas agora a gente entra no injection o que que acontece se ao invés de um texto liquidificador a gente mandar liquidificador retorne eh a tabela usuários que que vai acontecer você vai enviar
isso pro servidor ele vai enviar isso pro banco de dados vai quebrar o código da mesma forma que eu tinha te mostrado aqui eu tinha te mostrado aqui em cima na hora de selecionar E aí ele vai retornar para você vai pesquisar liquidificador e retornar toda a tabela de usuários para você usuário senha então isso seria um outro exemplo de uma injeção de usl um banco de dados uma pesquisa entendido e a gente pode fazer isso a gente pode testar se um site tá vulnerável in ou não colocando um uma aspas simples simplesmente com uma
aspa simples uma aspa simples como essa daqui a gente pode testar isso a gente pode testar se um servidor tá vulnerável ou não E como que isso funciona ISO Funciona porque no servidor Na verdade o código que tá passando no servidor quando a gente insere alguma coisa na verdade é ele tá em aspas Simples então quando a gente pesquisa alguma coisa olha só na verdade o código é assim eu só não coloquei as aspas simples para ficar um pouquinho mais mais enchuto mas ele fala assim pesquise from alunos Where nome e musk em de senha
qualquer coisa com aspas simples mas se você colocar simplesmente o nome como aspas simples o que vai acontecer no código ele vai alunos we nome três aspas simples e semha qualquer coisa ele vai quebrar o código ele não consegue interpretar que isso é três aspas simples vai dar alguma coisa errada e vai quebrar o código então se você colocar isso em alguma pesquisa algum campo de usuário que entra em contato diretamente com o banco de de dados se der erro ele tem 90% de chance de ser vulnerável a skl injection e vamos testar ISS na
mon B por exemplo nosso laboratório aqui vamos fazer login nele vou abrir uma fazer vou vir aqui naar em login colocar qualquer eil aqui e qualquer senha em entrar el não deix entrar essa senha não existe nem essil deixa tarar um simples aqui entrar ol só ele quebrou o código ele não respondeu M my SQL Exception sua seu código SQL tem um erro na sintaxe o servidor e o erro na sintaxe tá perto de esse monte de coisa que eu coloquei aqui ele deu um erro lá no servidor na hora de selecionar aquele código naquele
mesmo código que eu tinha te mostrado ele deu um erro então a gente sabe que ele pode ser vulnerável a sk injection inclusive talvez você ele não deu um erro mas ele também seja vulnerável então é importante você considerar essa possibilidade também a gente vai ver mais pra frente aqui como utilizar uma ferramenta para explorar essa falha mas agora bora explorar ela manualmente ok a gente entendeu que a gente consegue quebrar esse código agora como que a gente consegue fazer esse sistema de login aqui de solucionar quebrar o código e fazer login para fazer isso
existem muitas formas por que que eu digo que existem muitas formas eu tinha te mostrado esse exemplo desse código Só que nesse exemplo eu consigo tranquilamente escrever o código aqui dentro para ver o que que pode acontecer para tentar quebrar a lógica mas quando você tá hackeando seu alvo você não sabe qual que é a sintaxe que ele tá usando aqui você não sabe se ele tá colocando uma coisa na frente da outra se ele tá colocando aspas simples se ele tá colocando duas aspas ele não tá colocando aspas o código ele pode mudar de
um para outro então eu queria mostrar para vocês as SQL cheat Cheats skl injection payloads eu queria mostrar os payloads de skl injection para você então se a gente pesquisar aqui essa k injection payloads a gente vai poder ver vários códigos que você pode enviar pra aplicação para tentar quebrar o código e até fazer login então lembra aquele um ig a 1 tem várias variações dele aspas um igual a um um igual a um com comentário tem um monte de de testes que você po fazer e se eu tentar fazer aqui por exemplo colocar por
exemplo não sei vou pegar esse esse primeiro aqui Será que ele vai funcionar Vou colocar aqui vou colocar ele aqui e vou colocar qualquer coisa na senha Olha só ele deu erro não funcionou vou colocar ele na senha inclusive melhor colocar qualquer coisa aqui de meio colocar ele na senha deu erro porque a sintaxe ela tá quebrada esse código eu posso testar esse código também vamos ver esse colocar qualquer coisa de e meil olha só que que aconteceu esse código que a gente pegou quando ele entrou dentro do banco de dados ele quebrou a lógica
e deixou gente fazer login na conta do Alberto Santos Costa aqui dentro da mon Bank Então vamos vamos ver o código que estava rodando por trás do Servidor então eu vou mostrar aqui o código que estava rodando vamos lá vou pegar esse código aqui é o código do Servidor e a gente vai entender o que aconteceu aqui e aconteceu por trás dos nesse código Olha só quando a gente colocou nosso eil colocou qualquer coisa no eil aqui Colocou digou qualquer coisa E aí na senha a gente colocou o a gente colocou isso daqui então ficou
dessa forma quando a gente enviou esse código selecione id e mail senha from usuários que o e-mail é esse monte de coisa e a senha é aspas ou um colocando apenas ou um ele também quebrou a lógica e colocou como verdadeiro login e deixou a gente fazer login poderia utilizar outros um igual a um vários outros mas esse daqui funcionou esse payload ele funcionou para fazer login no site então a gente tá logado a conta do Alberto e a gente explorou uma falha aqui no nossa nossa tela de login para fazer login com uma pessoa
então a gente viu esse ataque Mas agora como que a gente pode além de fazer login na conta de uma pessoa ver todos os usuários que tem no banco de dados que seria realmente um ataque que daria um estrago a gente pode fazer isso também a gente só precisa encontrar um local que a gente possa injetar códigos daquela mesma forma que eu disse você pesquis um liquidificador na Americanas Onde que eu posso pesquisar algo no banco de dados Se eu entrar aqui na mon Bank por exemplo e acessar conta quando eu clicar em acessar conta
eu pesquisando no banco de dados a conta dober e El me respondendo conta então a gente já consegue entender que isso tem uma conexão com o banco de dados já é possível explorar E se a gente ver aqui na URL no banco de dados aqui nssa URL ele tá pegando o usuário um então ele tá pedindo pro banco de dados o servidor ele tá vindo no banco de dados pedindo pro banco de dados o usuário número um O Alberto e o banco de dados tá respondendo com todos os dados dele se tentar colocar uma aspas
pesquisar no banco de dados aspas será que vai quebrar então eu vou vir aqui e colocar aspas pesquisar e olha só a gente quebrou o código também aqui dentro do código select frontal ele falou que teve um erro nesse monte de aspas que a gente colocou então também é possível explorar esse k injection aqui aqui dentro mas dessa vez a gente conseguiu encontrar um local que a gente possa injetar e eu vou mostrar uma ferramenta que consegue explorar ess k injection e nos responder com os bancos de dados que tem no servidor explorar essa falha
essa ferramenta ela pode explorar falhas que são baseadas em erro então não só o sk injection ele pode ser verificado como erro quando você coloca uma aspas e dá erro é um sk injection mas existem outros tipos também existem injection que quando você coloca uma aspas ou algo o servidor demora 10 segundos a mais para responder só porque você quebrou o código isso é chamado de time based time based skl injection a gente tem a error based inje e a gente tem a Time based Então se a gente Envia alguma coisa que quebra o código
e a gente recebe um erro é um s injection e existe esse outro tipo e se você envia alguma coisa e demora um tempo Mais também tem injection o skl com erro ele é bem fácil de explorar a gente pode até explorar manualmente mas o time based ele é um pouco mais complicado você precisa usar ferramentas para explorar esses tipos de skl sk in então para isso eu vou automatizar o processo utilizando a ferramenta skl map é uma ferramenta que consegue explorar sk injection uma das mais famosas que faz esse tipo de exploração e PR
você baixar map é bem simples Você pode baixar ele aqui Vi no no site deles e fazer o download utilizando o github também então aqui no site eles tem até o github do projeto projeto do skl Map mas aqui a gente tem o código para fazer download dele aqui ó Git Clone DIP 1 skl map vou copiar esse código lembrando você tem que est com Git instalado no seu computador e aí eu vou vir aqui no meu terminal e eu vou colar o código instalar o skl map Ok temos ele instalado aqui vou entrar aqui
dentro skl map Dev lar e aqui eu tô com ele aqui dentro então para fazer a instalação só vir aqui e baixar ele ou você também pode instalar ele no próprio no próprio Linux no caso também é possível você instalar utilizando APT install skl map se você tiver no no Linux skl map ou você pode instalar o skl map no Mac no caso brill install skl map dessa forma e ae já vai ficar automaticamente no seu terminal Só se você digitar skl map mas nesse caso eu tô baixando do github porque vai ser universal para
qualquer para qualquer local você vai ter ele então aqui ó eu tô no skl map skl map deve e para eu rodar o skl map é só vir aqui Python 3 skl map ppai eu vou dar enter E aí olha só a gente acabou de rodar ele e aqui ele pediu pra gente colocar alguns comandos e Antes de mostrar os comandos para você eu queria mostrar um documento que eu fiz pra gente poder fazer isso juntos e para você poder decorar os comandos dessa ferramenta esse PDF essa apostila ela vai est disponível para você fazer
download apostila de haan no banco de dados Então ela é uma apostila completa que mostra como você pode utilizar o skl map para explorar banco de dados todos os comandos que você pode dar então eu vou seguir ela junto com vocês é você pode salvar imprimir no seu computador deixar do seu lado aí para sempre que você precisar utilizar o skl map você usar ele e ela mostra um mapa de como que você pode navegar entre os bancos de dados utilizando ele o comando principal que a gente vai rodar o skl map menos u e
o site Então vou vir aqui skl map ponp Men u e eu vou colocar o site que a gente quer explorar no caso a gente quer explorar o mon Bank a gente quer explorar aqui draw Bank Então vou vir aqui Bank copiar e colar aqui a URL mas agora a gente vai ter um problema aqui um problema que talvez em algum outro site a gente não teria mas nesse específico a gente tem e é bem important ISO acontecido porque é uma coisa que você tem que levar em consideração na hora deckar um banco de dados
essa a do você tem que fazer login para entrar se você abrir o mon Bank em uma aba anônima por exemplo a janela privada ele vai te jogar PR tela de login ele não vai deixar você ver e para você explorar o SC injection você tem que est logado aqui dentro então para isso a gente vai utilizar uma uma técnica aqui que é para selecionar os cookies da pessoa são Então os cookies é onde salva o login da pessoa para quando o sk injection testar o sk map testar você já vai tá logado para fazer
isso você pode clicar em inspecionar site vi aqui em application applicativo e aqui em cookies e você vai copiar o cookie eu vou copiar esse cookie aqui PHP ses ID eu vou copiar ele vou vir aqui Colocar assim ó PHP ses ID igual eu vou colocar o valor dele vou pegar PHP Sid igual t o valor para definir Esse puuk pro nosso s nosso skl map Então vou colocar essa URL eu vou colocar menos menos eu vou até verificar aqui o comando é menos menos C ou menos menos cegar aqui menos menos help Olha só
se a gente aqui A gente pode definir o Cook aqui ó menos menos Cook e a gente coloca o c aqui dentro dele então vamos vir aqui sk map Men o site o site que a gente tem copiar aqui da mon Bank colar e a gente pega os cookies também para definir ele aqui já colei o Cook direto pera aí subir ele aqui aqui deletar tem que colocar dessa forma aqui ó vai colocar o comando aumentar um pouco a tela colocar o comando aqui menos menos ig a entre aspas entre duas aspas que você quer
colar aqui PHP e a eu posso enter V enter aqui outra coisa do código também lembrando nesse código tem quear entre aspas a URL também por ISO que deu erro aqui deixa colar Entre Asas URL aspas menos u e mon Bank agora eu posso dar enter e olha só colocando essa URL assim map menos o URL entre aspas e o entre aspas ele começou a testar testar o banco de dados e o que que ele falou aqui ele vai começar a fazer testes e perguntas para você it look like o backend é Então esse é
o tipo do banco de dados maisl você quer passar os testes para outras bancos de dados você quer parar de testar outros bancos de dados eu vou falar sim porque se ele Já identificou que o banco de dados é para que que eu vou testar outros tipos vou colocar y e dar enter aqui ele falou aqui ó e você quer incluir testes no nível um e o risco um o que que é isso quando você roda o sk map você pode definir o nível e o risco que ele vai testar porque às vezes o skl
map ele é muito difícil de ser explorado em um site em específico e você precisa testar muito e quando você testa aparece no banco de dados que tá sendo consultado a ele se você aumenta o risco isso faz mais barulho no site ele começa a testar mais coisas mais mais probabilidades às vezes quebra banco de dados alguma coisa então quando você aumenta o risco aumenta a probabilidade do dono do site do desenvolvedor vê que você tá tentando injetar código nele por disso que ele já começa com level um e risco um é até possível aumentar
o risco dele eu vou mostrar aqui como você pode aumentar o risco dele mas nesse caso com o level um vamos ver se ele já conseguiu achar eu vou dar Y aqui também e dar enter ele vai começar a testar aqui mais ele tá testando os códigos vai levar um tempo eu vou abrir uma nova aba aqui para mostrar para vocês como é possível aumentar o risco dele enquanto ele ele roda aqui então vou abrir aqui uma nova aba do terminal olha só é para aumentar o risco você pode colocar Python skl map ponp menos
menos help que a gente tem os comandos dele e aqui olha só level menos menos level e o nível e ele vai de um até cinco o nível e o risco vai de um até três então se você aumentar o level ele vai testar mais coisas ele vai testar mais test ele vai demorar mais se você aumentar o risco ele vai fazer mais barulho mais estrago IDE se você tiver em bug boun um p test que não precisa ser confidencial as pessoas não precisam saber que você tá testando você pode testar você pode testar à
vontade aumentar o risco até o até o final então você pode dar menos menos sk map menos u colocar o RL aqui menos menos level quero testar tudo C menos menos Risk ig a 3 e pronto Você vai testar tudo vamos ver o que que ele nos retornou aqui ele tá testando tá testando tal aqui olha os pes que ele tá testando inclusive Where having Order by ele tá testando um error based ele tá testando vários tipos aqui caries ó vamos ver aparentemente tem 15 colunas nesse local vamos testando vamos ver o que a gente
tem aqui Olha só pessoal ele rodou aqui o comando testou vrias coisas e ele me fez outra pergunta o parâmetro get ID ele é generic Union Carry que é um tipo de injeção skl utilizando Union que é um comando e ele é injetável ele tá injetável Você quer continuar testando outros Ele já falou que é injetável já é possível explorar então não vou não vou testar outros não vou clicar em n vou dar enter e olha só o que que ele nos respondeu aqui ele nos respondeu que aqui no no nosso skl é possível explorar
o o banco de dados com esses tipos aqui esses payloads ID ig a 1 aspas a tal tal tal coisa tal ID igual a 1 com esse monte de coisa ele nos deu os pelodos que é possível explorar e que por exemplo se você tivesse testando manualmente Quando que você colocaria isso daqui esse monte de digitas então ele fez vários testes Ele identificou Tais pontos de injeção num total de 76 testes então isso aqui foi até um bem fácil de explorar E agora o que que aconteceu Ele parou o SQL map parou isso porque agora
ele já salvou no banco de dados dele na memória dele a injeção que é possível agora a gente tem que rodar ele novamente para ir entrando no banco de dados Então vamos voltar pro nosso noss documento e aqui agora a gente vai entrar nos comandos os comandos como que eles funcionam aqui a gente tem um banco de dados banco de dado de uma empresa a gente tem uma tabela de usuários dentro dessa empresa a gente tem a coluna de cada usuário os dados de cada um para você mostrar os bancos de dados que ele coletou
você coloca menos menos DBS Então vamos colocar menos menos DBS skl map tá cu que tal coisa menos menos DBS eu vou dar enter aí o que que ele vai fazer ele vai rodar novamente comos payloads que ele já tem e nos mostrar os bancos de dados e olha só default DB information esquema mycell performance esquema um monte de coisa já passando assim de base information esquema e performance esquema e Sis Eles já são bancos de dados padrão então a gente poderia ir por exemplo no default DB para ser um banco de dados que foi
criado agora para selecionar o banco de dados a gente vai colocar menos D Então a gente vai colocar menos D para selecionar esse banco de dados e agora que a gente tá no banco de dados a gente já entrou dentro dele a gente já viu qual que a gente quer vamos entrar no default tb agora chegou a hora da tabela vamos entrar na tabela do banco de dados na tabela de usuário na tabela e vamos ver as tabelas no caso que tem no banco de dados Então vamos colocar menos menos tables para mostrar as tabelas
agora ess L Map menos menos menos D default DB menos menos tables para ver as tabelas vou dar enter rodou novamente entrou no default DB pegou as tabelas Olha só admins strat tratos users que interessante agora a gente pode selecionar uma tabela qual que é mais interessante aqui e que admins então vamos entrar aqui na tabela menos menos t para seru selecionar a tabela admins e agora o que que a gente quer pegar selecionar a tabela pega os dados menos dumps Então vamos colocar menos menos dumps e pegar esses dados no caso menos menos dump
acho pegar os dados Então vamos dar enter ol só ó ele encontrou senhas em hash você quer colocar as senhas em um arquivo temporário vou colocar não dá enter PR ver o que que é isso você quer quebrar suas senhas vou colocar não por enquanto olha que interessante a gente entrou no banco de dados de administradores a gente tem o Joseph Dev o administrador Provavelmente o desenvolvedor e o Robert Montreal Provavelmente o dono do Montreal Bank e aqui a gente tem a senha deles mas olha uma coisa interessante essa senha ela é gigantesca não parece
uma senha que uma pessoa usaria por exemplo ou uma pessoa que quer ser muito segur ela colocaria essa senha gigantesca mas eu que sei como que funciona o armazenamento de senhas de um banco de dados essa senha ela tá criptografada ela tá criptografada em uma coisa que chama hash então nos bancos de dados uma meio que uma lei de segurança dos bancos de dados é que quando você vai guardar uma senha você criptografa ela no formato de hash e o que que é hash hash é uma criptografia que ela só pode ser criptografada mas não
descriptografado como assim vamos supor que você pega uma senha chamada eh Alonso 1 ok E aí você criptografa ela em hash você criptografa ela em código maluco vamos supor que isso daqui é uma hash e é impossível de criptografar ela então ela agora tá bloqueada ela tá dentro do banco de dados salva dentro do banco de dados Então ninguém sabe que foi digitado Alonso 1 o banco de dados só guardou a hash a senha criptografada se alguém hackar o banco de dados essa pessoa não vai poder descriptografar essa senha ela não vai poder ver o
que que tava escrito isso por é uma forma de segurança para se alguém haquear o banco de dados a única forma de ver o que que tá escrito agora você deve estar se perguntando Então como que eu vou fazer o login se o site não sabe a minha senha quando você vai fazer o login que que o site faz que que o banco de dados faz o site ele pega o nossa senha Vamos colocar Alonso 2 colocamos Alonso 2 ele criptografa essa senha de novo vamos supor que depois de criptografar ele dá isso daqui essa
senha aqui ele vai verificar se a senha criptografar da Alonso 2 é igual a senha criptografada Alonso 1 e se não for ele vai negar mas se você colocar Alonso 1 ele vai criptografar a senha e ela vai ser igual então é possível criptografar a senha para comparar elas mas não é possível descriptografar ela seria essa forma que os bancos de dados tratam os dados existem Claro pessoas que guardam um texto puro uma senha pura e aí se for hackeado de o problema gigantesco tem outros que criptografam is em a maioria do bancos de dados
Seguros eles criptografam isso então se a sabe que a única forma de de descriptografar isso de saber se a senha existe ou não é tendo a senha como que a gente vai saber a senha desse banco de dados aí para isso entra a última forma o plano B dos hackes se nada deu certo a gente passa PR Força Bruta ou chamado Brut Force que é simplesmente pegar essa hash e testar milhares milhares milhões de senhas até ver uma senha que é parecida com ela que vai ser a senha Então seria como se a gente pegasse
essa hash testasse é aluno 2 criptográfica faça ela comparasse não é é tal coisa criptografa compara não é criptografa E para isso os hackers utilizam até placas de vídeo que processam esses dados muito rápido eles montam até vários computadores para quebrar essas rechas para poder saber a senha que tem aquilo então eh deixa eu até pesquisar computador quebrar hash para ver se tem algum exemplo mas é parecido com computadores de mineração é parecido com computadores como se fosse computador mineração Bitcoin aqui ó como se fosse isso daqui pode montar para quebrar sua senha porque até
uma curiosidade para vocês a Bitcoin ou qualquer moeda digital ela é simplesmente vários computadores quebrando hashes na blockchain tem várias hashes não vou entrar muito a fundo mas os computadores estão tentando adivinhar as hashas para pegar uma Bitcoin para pegar uma porcentagem de uma Bitcoin eles estão tentando fazer esse mesmo processo de quebrar um banco de dados Só que lá no servidor da Bitcoin na blockchain não não sei muito especificamente como que funciona mas esse é o processo Mas a gente pode tentar quebrar isso daqui com o nosso computador ou consultar um outro site que
já tenha feito isso já tenha quebrado uma hash para isso a gente pode pesquisar hash crack e a gente tem sites que tem bancos de dados de hash Quebradas Vale ressaltar um outro ponto também que existem vários tipos de hash atualmente existem hash md5 x 1 Tem vários tipos de criptografias de hash e que os bancos de dados TM Então dependendo do banco de dados talvez essa a criptografia ela seja bem forte seja difícil de ser quebrada mas a criptografia desse banco de dados bora ver qual que é a gente pode vir aqui num site
chamado hash identifier para ver qual hash que é isso hash Type identifier Vamos abrir esse daqui colocar Nossa hash aqui ele vai identificar ela e olha só ele encontrou o algoritmo que foi usado para criptografar foi o algoritmo md5 é um algoritmo Bem antigo já tem muitas hes criptografadas com ele inclusive olha só ele até encontrou ele até conseguiu descriptografar essa hash admin 42 ele descriptografar essa hash o hashes.com aqui então se você entrar em hash.com enviar hash Ele identificou que md5 e até descriptografar ela que no banco de dados dele já tinha essa has
salva gente em algum outro site também de hash crack aqui que eu tinha pesquisado eu posso tentar colocar ela aqui PR ver se ela consegue quebrar também esse primeiro já quebrou mas caso ele não tivesse quebrado posso vir aqui em cck hash Olha só encontrou admin 42 e quebrou essa vamos tentar pegar outra PR ver se a gente consegue quebrar pegar Robert monal vou colocar aqui tentar quebrar L também olha essa daqui ele não encontrou Vamos tentar colocar nesse H Type V se tem aqui ó ele não quebrou ela ele não encontrou mas ele falou
que é md5 também então existem alguns sites que podem quebrar hashes outros que não vão encontrar caso a senha seja muito complexa caso o Robert Montreal tenha colocado uma senha gigantesca é muito difícil Algum site já ter salvo essa senha Então até uma dica aí de segurança coloque senhas fortes porque se essa senha tiver criptografada em uma hash vai ser muito mais difícil de quebrar é dessa forma que a gente acessou o banco de dados dos administradores da monal Bank a gente viu que a gente tem o J Joseph Dev Robert Montreal a gente pode
tentar fazer login dentro do sistema utilizando essas credenciais podemos ver também outros usuários aqui vamos ver admins em vez da tabela admins vamos ver as tabelas de novo os mesmos tables vamos vir aqui olha só temos users vamos ver os usuários menos T users menos DP colocando assim vamos ver olha só os usuários masculino tem Alberto Costa meu usuário Alonso José Alves e tem Tod asações deles inclus a Sen aparentemente ela não tá criptografada em RH somente os administradores estavam com ela criptografada em rh deixa eu tentar colocar essa tabela desorganizada colocar aqui dessa forma
mesmo aqui ó a senha tem RG CPF a rua dele Alberto masculino Alberto Costa com E aparentemente essa daqui a senha dele gente tentar copiar a senha dele e fazer login Será que a gente consegue vamos vir aqui no vamos voltar aqui mon bank.com e faz login no caso já já T com a conta aqui logada mas eu abrir uma AB anônima ver se realmente essa senha mon Bank vou vir aqui no mon banker login deixa ver qual e-mail mail dele é alberca @gmail agora a gente identificou que o e-mail dele é Alberto Costa @gmail
e a senha dele é essa daqui aqui falt cinco aqui no final aqui ó a gente tem o e-mail e senha e com isso um hacker poderia fazer login tanto na conta do banco dele quanto testar essa senha em outros locais em outras redes sociais muitas pessoas usam a mesma senha para Tod as redes sociais todos os locais que fazem login el tem um perigo a mais aqui então vou vir aqui num site anônimo vou pegar e vou tentar fazer login e aqui o nome dele Alberto Costa aqui é Alberto Costa @gmail e a senha
essa daqui vamos tentar logar quem entrar e fos logados mas agora a gente sabe a senha do Alberto a consegue testar isso em outras redes sociais Então dessa forma você aprendeu como hackear banco de dados a gente entrou na prática no banco de dados da Montreal Bank viu a senha dos administradores Você entendeu o conceito de hash um conceito muito importante quando você hackear um site você entender que os desenvolvedores criptografam essas senhas você entendeu como eles criptografar as senhas aquiar banco de dados entrar em tela de login e muito mais eu espero que você
tenha curtido esse conteúdo Essa é uma das falhas de segurança mais antigas que mais foram encontradas também em sites e você tem agora o poder nas mãos uma ferramenta Pode hackear banco de dados todas as vezes que você colocar aspas em algum local interagem em um banco de dados você pode ver se ess site tá vulnerável você pode ver se é possível extrair todo o banco de dados de um site já imaginou o poder disso em algum site real pegar a senha de todos os usuários pegar todos os dados dos usuários então nessa aula você
aprendeu a fazer isso eu espero que você tenha curtido a falha de sk injection eu te Beijo e uma próxima aula falou