00:00:00
os ind hackers estão tão focados em
00:00:02
lançar rápido que esqueceram da coisa
00:00:03
mais importante segurança e o resultado
00:00:06
comprei um plano Premium por 1 centavo
00:00:08
listei todos os usuários e entrei na
00:00:10
conta de qualquer um me tornei
00:00:11
administrador do sistema e Estorei uma
00:00:13
pay completamente quebrada e sabe o pior
00:00:16
esses SAS foram feitos por pessoas
00:00:17
experientes no vídeo eu vou explorar
00:00:19
dois SAS para não ficar muito longo mas
00:00:21
a real é que 80% dos SAS lá do servidor
00:00:24
de discord do ind hacking estão
00:00:26
vulneráveis a esses tipos de ataque na
00:00:27
primeira plataforma eu consegui comprar
00:00:29
um plano prêmium por 1 centavo listar
00:00:31
usuários e acessar qualquer conta no
00:00:34
segundo eu me tornei administrador e
00:00:36
abusei de uma API completamente exposta
00:00:38
se você acha que seu app Tá seguro só
00:00:40
porque ninguém vai tentar hackear pensa
00:00:42
direito vou te mostrar como é que essas
00:00:44
falhas acontecem e como evitar que seu
00:00:46
SAS vir um playground para hacker vamos
00:00:48
lá a primeira coisa que eu faço assim
00:00:50
que eu abro o site primeiro eu scollo
00:00:52
ele vejo que que ele tem de interessante
00:00:54
eu tô vendo aqui que ele tem planos e
00:00:56
preços e logo depois eu venho aqui e
00:00:58
vejo as tecnologias que o site est
00:01:00
usando então ele tá usando react Next O
00:01:01
esp na versel E por que que isso é
00:01:03
interessante sabendo as tecnologias que
00:01:05
ele tá usando eu sei um pouco do que que
00:01:07
tá acontecendo por exemplo por ele est
00:01:09
usando o Next Muito provavelmente o
00:01:10
processamento as requisições vão estar
00:01:12
escondidas do lado do servidor não vão
00:01:14
estar expostos para mim mas isso não é
00:01:16
100% verdade porque quando alguma
00:01:18
aplicação precisa de um input do usuário
00:01:20
como um formulário tipo esse aqui O
00:01:22
código vai ser carregado do lado do
00:01:24
cliente como se fosse injetado mesmo
00:01:25
podendo expor algumas coisas como
00:01:27
algumas Fas de api e coisas do tipo e
00:01:29
então eu vou abrir aqui o sorce e eu vou
00:01:32
procurar por algumas kws dentro do do
00:01:34
código então vou procurar por api por
00:01:37
exemplo aqui é uma coisa interessante
00:01:39
ele tá usando o Mercado Pago para poder
00:01:41
fazer o pagamento e é interessante
00:01:43
porque 80% das pessoas que usam Mercado
00:01:45
Pago para pagamento eles estão fazendo
00:01:46
errado o iniciantes no caso porque só de
00:01:49
ver aqui já dá para ver que tem uma
00:01:51
coisa errada o front Change ele tem que
00:01:53
se comunicar diretamente com seu
00:01:54
servidor abstendo o máximo de coisas
00:01:56
para evitar exposure evitar coisas de
00:01:59
segurança
00:02:01
então aqui nessa requisição ele tá
00:02:03
passando o amount isso é um pouco
00:02:05
estranho porque quem tiver ser
00:02:07
responsável por passar o amount pro
00:02:09
mercado pago é o servidor aqui ok o
00:02:12
servidor tá tá sendo intermediado então
00:02:14
eu sei que essa rota vai mandar pro
00:02:15
próprio servidor do cara só que o amount
00:02:17
tá aqui isso não faz sentido ele devia
00:02:19
só fazer uma rota ap payments Premium
00:02:23
por exemplo e eu passo meu user ID aqui
00:02:24
meu e-mail por
00:02:26
exemplo Vamos então já sei que ele tá US
00:02:29
mercado pago com uma possível
00:02:30
vulnerabilidade a gente não tem certeza
00:02:32
ainda vamos criar uma conta mas antes eu
00:02:34
vou abrir o Bup Switch que eu vou tentar
00:02:35
ver as aquisições que acontecem quando
00:02:37
eu tô logado em um usuário pronto eu
00:02:39
acabei de criar uma conta aqui e dá para
00:02:42
ver que o dashboard foi aberto aqui dá
00:02:45
para ver que a requisição tá sendo feita
00:02:46
do lado do
00:02:47
cliente Ele carrega mesmo depois a pgina
00:02:50
ter sido carregada não faz muito sentido
00:02:52
ele pode muito bem colocar fazer esse
00:02:54
glad no next mas ele deve ter motivo de
00:02:56
ter feito por aqui é vamos ver os
00:02:58
acessar planos aqui e ver o que acontece
00:03:00
quando a gente clica no pagamento do
00:03:03
Premium que a gente já sabe a gente viu
00:03:04
que isso vai mandar uma requisição aqui
00:03:06
na P P mercado pago pix com o
00:03:10
amount vamos trocar esse amount para
00:03:14
0.01 não vou colocar zero Porque o
00:03:16
mercado pago não aceita zero como um
00:03:19
valor eu vou interceptar a resposta
00:03:24
forward sucesso
00:03:27
forward aqui tá para fazer o pagamento
00:03:29
de 1 centavo vi pix já tá um erro o
00:03:32
servidor nunca nunca jamais pode confiar
00:03:35
nos dados que o fron tá mandando não
00:03:37
dessa forma se tiver alguma criptografia
00:03:39
ou coisa do tipo aí não tem problema mas
00:03:42
nesse caso não pode vamos M um set pro
00:03:45
cara e ver se funciona vou ver se meu
00:03:47
dashboard foi atualizado pronto eu t com
00:03:49
acesso Premium no site do cara por por 1
00:03:52
centavo Vamos botar uns dados fictícios
00:03:55
aqui e gerar o mapa vamos interceptar
00:03:58
gerar o mapa
00:04:04
ele tá mandando Birthday time longitude
00:04:08
e latitude mandar pro Repeater vamos
00:04:11
interceptar a
00:04:12
resposta e vamos ver que vai aparecer
00:04:15
para mim
00:04:17
carregando legal criado para
00:04:20
asdasd aqui aparece minha última
00:04:23
pesquisa agora vai ser interessante
00:04:24
vamos interceptar e ver o que acontece
00:04:25
quando a gente clica ele vai mandar
00:04:28
requisição
00:04:30
com o ID vamos interceptar e o que
00:04:33
acontece ele
00:04:35
vai ele me manda aqui direitinho o que
00:04:39
tá acontecendo Vamos mudar uma ideia
00:04:42
agora vamos botar 20 para ver o que
00:04:45
acontece aquário
00:04:47
Uai eu não era não era aquário quem que
00:04:52
é esse pera aí
00:04:54
19 quem que é nest eu não sou n test
00:04:58
Vocês estão entendendo o que tá
00:04:59
acontecendo n ele tá puxando os
00:05:02
registros dos das últimas pesquisas
00:05:05
então aqui eu pego o ID da
00:05:09
pessoa eu tenho nome né então botar o
00:05:16
name então eu consigo listar os usuários
00:05:19
também eu consigo ver quem tá usando o
00:05:20
site Isso aqui precisa de uma
00:05:22
verificação lembra que eu salvei esse
00:05:24
usuário aqui dessa vez quando eu entrar
00:05:27
no dashboard vou interceptar requisição
00:05:29
para trocar todo o ID por esse ID que eu
00:05:31
tenho salvo Então vamos em
00:05:34
dashboard eu vou trocar meu user ID por
00:05:36
esse user ID interceptar a resposta vou
00:05:40
ficar fazendo
00:05:41
isso vou só
00:05:45
trocando
00:05:48
aqui eu tô basicamente logado no outro
00:05:51
ID agora eu tô eu sou Basicamente já
00:05:55
Clara Agora tem todos os mapis que ela
00:05:57
gerou aqui dá para ver direitinho aqui
00:06:00
Então esse sistema tá completamente
00:06:02
falho Só de eu estar logado na conta de
00:06:05
qualquer conta não preciso nem nem pagar
00:06:06
eu consigo já fazer um mapa astral o
00:06:10
próximo da lista ele tá bem bonitinho
00:06:12
uma n page bem bonita vai ser o mesmo
00:06:14
esquema a gente vai vir aqui no
00:06:15
aqualizer e ver as tecnologias então ele
00:06:17
tá usando react e react router mais
00:06:20
interessante por qu dá para ver aqui que
00:06:22
ele não tá usando Next O que significa
00:06:24
que todas as páginas funções textos vão
00:06:27
já tá no código fonte não vai ter um las
00:06:29
load A não ser que ele tenha feito na
00:06:30
mão a gente pode vir aqui e abre o
00:06:33
código fonte e vai est aqui o código
00:06:35
inteiro do react é um código bem grande
00:06:39
mas é muito bom para encontrar
00:06:40
informação então eu posso procurar por
00:06:42
admin aí tem várias fotas admin admin
00:06:46
generate link admin users eu também
00:06:48
posso procurar por procurar por rotas
00:06:51
Então barapi aqui tem alguma P web Hook
00:06:54
Mercado Pago apay webhook abacate pay
00:06:56
apay abacate pay interessante você tá se
00:06:59
perguntando Nossa mas é muito rí a
00:07:01
informação desse jeito Tem muita coisa
00:07:03
muito Unificado não consigo ler nada
00:07:04
você tá certo mas pra nossa sorte ou
00:07:08
azar tudo fica formatado bonitinho no
00:07:10
sorce é como se a gente conseguisse ver
00:07:12
a passa do projeto como se tivesse
00:07:14
aberto github do cara então aqui a gente
00:07:16
tem o Source tem os pages tem todas as
00:07:19
páginas aqui tem os Services do abaca
00:07:21
Pay tem alguns hooks todos os
00:07:23
componentes tá tudo aqui então vai ser a
00:07:26
mesma proposta vamos criar uma conta
00:07:28
entrando no Switch bom criei minha conta
00:07:31
aqui eu t no dashboard do projeto e
00:07:33
vamos procurar antes porque a gente já a
00:07:36
gente acabou encontrando já que existe a
00:07:38
página admin Então vamos procurar por
00:07:40
admin
00:07:41
aqui e a gente tem esse post beleza esse
00:07:47
App Olha tem o admin route interessante
00:07:50
Protect R
00:07:51
aqui tem admin Men items perfeito a
00:07:56
gente no s bar a gente tá vendo todas
00:07:58
asos tem então ele tem o app orçamentos
00:08:01
clientes empresas e também tem o admin
00:08:03
menu items eu chutaria que esse admin
00:08:05
menu items está sendo renderizado por
00:08:06
uma condição isso se o meu Roll é igual
00:08:10
admin de novo por se react eu sei que
00:08:13
ele tá pegando esse profile data.on Roll
00:08:15
pelo lado do cliente por alguma
00:08:16
requisição que tá acontecendo e é
00:08:18
exatamente isso que eu vou fazer eu
00:08:22
vou Abrir meu
00:08:24
intercept e todo Roll que aparecer nas
00:08:27
minhas requisições eu vou trocar para
00:08:28
admin vamos lá nessa equizição apareceu
00:08:32
aqui meu roll de user vou trocar para
00:08:33
admin vou dar
00:08:35
forward de novo vou interceptar toda a
00:08:38
requisição que tá esse profile select
00:08:40
meu ID eu vou vou est interceptando e
00:08:42
trocando o meu Roll para admin
00:08:47
admin e agora em qualquer segundo deve
00:08:50
aparecer aqui perfeito
00:08:52
eh eu vou continuar mexendo só não vou
00:08:55
dropar ões aqui e aqui dá para ver que
00:08:59
abriu o lado
00:09:00
administrador então se eu vir aqui no
00:09:02
web Hook aparece as configurações de
00:09:05
webhook dele que por algum motivo Ele
00:09:07
não colocou no em uma documentação mas
00:09:09
Quis colocar no site
00:09:12
usuários aqui eu consigo listar todos os
00:09:16
usuários mas dá para ver que o botão
00:09:18
aqui ele tá bloqueado eu não tô
00:09:21
conseguindo fazer o botão funcionar no
00:09:22
lado da web então Vamos alterar
00:09:24
diretamente na api Então vamos vir aqui
00:09:26
intercept Vamos alterar o meu PR isento
00:09:30
Ok e aqui vai mudar eu vou receber esse
00:09:33
option aqui ó esse
00:09:36
Patch em vez de mudar is exempt eu vou
00:09:40
mudar o roll
00:09:43
para admin forward Beleza agora eu Sou
00:09:49
administrador eu não tenho nem mais que
00:09:50
falsificar a requisição então
00:09:52
configuração ou gerenciar planos essa
00:09:55
página PR deve est off mesmo então é
00:09:57
basicamente isso em 5 minutos eu vir
00:09:59
administrador nessa
00:10:00
plataforma você com certeza chegou até
00:10:03
aqui pensando Nossa mas que
00:10:04
vulnerabilidades ridículas como é que
00:10:06
eles deixou isso passar acontece quando
00:10:09
você usa a filosofia chip fast e o One
00:10:11
feature only esquecem ou ficam sem
00:10:13
vontade de se preocupar com a segurança
00:10:15
eu gosto de pensar que essas
00:10:16
vulnerabilidades acontecem quando foram
00:10:18
desenvolvidas por dois tipos de pessoas
00:10:20
as que não sabem e as que não querem as
00:10:22
que não sabem simplesmente podem ter
00:10:23
deixado alguma verificação passar
00:10:25
esquece Afinal nós somos humanos e
00:10:27
humanos cometem erros ou até mesmo não
00:10:29
sabe das práticas de saber segurança as
00:10:31
que não querem vão aprender com tempo
00:10:32
que precisa segurança deve ser parte do
00:10:34
processo de desenvolvimento não para ser
00:10:36
feito depois adicionar depois chega até
00:10:38
ser mais difícil e menos eficiente do
00:10:39
que construir desde o início se quiserem
00:10:41
posso fazer um vídeo mostrando alguns
00:10:42
princípios de seguranças e dicas de
00:10:44
segurança para S são bem simples mas
00:10:46
muito eficientes é só comentar aqui no
00:10:48
vídeo é isso falos