Como explorar IDOR - Pentest e Bug Bounty (WEB HACKING) — Transcript
Full transcript
- 0:00Essa é uma das vulnerabilidades mais
- 0:01fáceis de encontrar em programas de
- 0:03Bugund. Imagine que alterando um simples
- 0:05número em uma ORL, você consiga acessar
- 0:08informações confidenciais de outro
- 0:10usuário, de um sistema. Essa
- 0:12vulnerabilidade é conhecida como IDOR,
- 0:14uma sigla para referência direta e
- 0:16segura a objeto. Muito prazer, eu sou
- 0:18Luiz Viana, especialista em segurança
- 0:20ofensiva e neste vídeo a gente vai
- 0:22dessar a vulnerabilidade a Idor. Você
- 0:24vai entender o conceito técnico por trás
- 0:25dessa falha e claro, a gente vai
- 0:27explorar ela na prática. Você vai
- 0:29aprender a identificar esse tipo de
- 0:30falha nos seus penestes ou em programas
- 0:32de bugund. Bom, vamos lá. O Aidor é uma
- 0:34vulnerabilidade de controle de acesso
- 0:36que permite que o atacante consiga
- 0:38manipular recursos que ele não deveria
- 0:40ter permissão. Então, na verdade, como
- 0:41próprio nome já diz, é quando a
- 0:43aplicação expõe identificadores de
- 0:45objetos, por exemplo, ids numéricos,
- 0:48nomes de arquivos, tokens, e utiliza
- 0:51esses identificadores diretamente nas
- 0:53consultas e operações sem verificar a
- 0:56permissão do usuário. Então, na prática,
- 0:57isso significa que se a aplicação espera
- 0:59um identificador em uma request, por
- 1:01exemplo, o ID de um usuário na URL, se
- 1:03não existir validação, um usuário
- 1:05malicioso poderia modificar esse
- 1:06identificador para obter dados de outro
- 1:08usuário ou realizar ações no nome desse
- 1:11outro usuário. Por exemplo, olha só
- 1:12essas URLs aqui. Se a aplicação usa o
- 1:15valor do parâmetro cliente para acessar
- 1:17o perfil ou para fazer alguma
- 1:18modificação, ou no caso aqui de baixo
- 1:20passa por PEF parâmet, ou seja, o
- 1:22parâmetro tá dentro da URL, como se
- 1:24fosse um caminho. Se ela utiliza esse
- 1:26parâmetro diretamente para acessar os
- 1:28dados do banco de dados sem validar se o
- 1:30usuário é realmente aquele cliente ali
- 1:32que tá fazendo aquela requisição. Basta
- 1:34trocar esse número aqui e acessar as
- 1:36informações ou modificar dados de outra
- 1:38pessoa. Isso aqui é o que a gente chama
- 1:40de IDOR. É claro que existem infinitos
- 1:42outros cenários e o mesmo problema pode
- 1:44ocorrer com arquivos. por exemplo, é
- 1:46passado ali com o parâmetro o ID de um
- 1:48extrato bancário. Se não for feita uma
- 1:50validação, qualquer pessoa passando
- 1:52aquele ID conseguiria fazer o download
- 1:54do documento. Pode acontecer em
- 1:55requisições post, onde os parâmetros são
- 1:57passados no corpo da request, em alguns
- 1:59cenários, até nos próprios cookies.
- 2:00Enfim, qualquer lugar que o usuário
- 2:02consiga passar um identificador paraa
- 2:03aplicação pode ser vulnerável. Se não
- 2:05houver uma validação correta, a gente
- 2:07consegue simplesmente alterar esse
- 2:09identificador, principalmente quando é
- 2:10um identificador enumerável. Ou seja,
- 2:12são números que crescem. Então, o
- 2:13usuário um vai ter o ad um, usuário dois
- 2:15vai ter o ad. Uma forma de resolver
- 2:17parte desse problema seria utilizar um
- 2:19ID, ou seja, um identificador único
- 2:22aleatório. Então, mesmo que tenha um
- 2:23problema de falta de validação, o
- 2:25atacante não conseguiria descobrir o
- 2:26identificador de um outro usuário ou de
- 2:28algum outro objeto para fazer o ataque.
- 2:30Mas é claro que o problema ainda existe.
- 2:32Se ele encontrar alguma forma de
- 2:33enumerar esses IDs, a falha ainda vai
- 2:35estar lá. Inclusive, o IDOR pode ser
- 2:37utilizado para escalar privilégios numa
- 2:39aplicação também. Então, a movimentação
- 2:40horizontal é quando você passa aqui uma
- 2:42ID de um outro usuário com o mesmo nível
- 2:44de permissão, você consegue efetuar
- 2:46ações com aquele usuário. Porém, se você
- 2:48colocar um ID de um administrador, de
- 2:51algum usuário com mais privilégios que
- 2:52você, você conseguiria acessar
- 2:54funcionalidades restritas, dados ainda
- 2:55mais sensíveis. E essa vulnerabilidade
- 2:57aqui é extremamente comum. É de longe
- 2:59uma das falhas mais encontradas em pain
- 3:01testes e programas de bugund. É um tipo
- 3:03de falha que praticamente qualquer
- 3:05pessoa consegue encontrar. Você não
- 3:07precisa ser o gênio do hacking para
- 3:09simplesmente alterar um identificador na
- 3:11URL ou algum campo da aplicação. Bom,
- 3:13mas vamos deixar de teoria e vamos ver
- 3:15como explorar essa vulnerabilidade na
- 3:16prática. Para isso, eu vou utilizar um
- 3:18dos laboratórios aqui da Solid One.
- 3:20Inclusive, se você quer se aprofundar em
- 3:21segurança ofensiva, se tornar um
- 3:22profissional completo de pain test, você
- 3:24precisa conhecer a Solid One. Com uma
- 3:26única assinatura, você vai ter acesso a
- 3:27dezenas de cursos, laboratórios
- 3:29práticos, campeonato de hacking entre os
- 3:31alunos, comunidade, suporte, tudo que
- 3:33você precisa para se tornar um
- 3:34profissional no hacking em penest. Mas o
- 3:36melhor de tudo são as certificações
- 3:37práticas, ou seja, você vai sair da
- 3:39Solid One extremamente qualificado e
- 3:41certificado, pronto pro mercado. Vou
- 3:43deixar um link no comentário fixado.
- 3:45Então, beleza. Vamos lá. Eu vou levantar
- 3:46aqui o laboratório de Wis Shop. Eu tô
- 3:48aqui na aba de laboratórios da Solid
- 3:50One. É só clicar aqui em conectar,
- 3:52beleza? Esperar alguns segundos e meu
- 3:54servidor totalmente isolado ali para eu
- 3:55fazer meus testes vai tá pronto. Olha
- 3:57só, nosso laboratório já ficou pronto, é
- 3:59só copiar aqui o IP e acessar o lab.
- 4:01Beleza? Vou abrir aqui o navegador
- 4:03dentro do meu car Linux e acessar o meu
- 4:05laboratório. Esse laboratório aqui
- 4:07simula uma loja online de sucos. Então a
- 4:09gente tem diversos cenários ali
- 4:11extremamente realistas, como se fosse um
- 4:12programa de Bugbound, por exemplo. Então
- 4:14vamos lá. Olha só, a gente tem diversas
- 4:15funcionalidades aqui, os produtos, eu
- 4:18consigo ver os reviews, olha só, eu
- 4:21consigo criar uma conta. Então vamos lá,
- 4:23vamos criar uma conta aqui. Não sou um
- 4:25customer ainda. Criar aqui com o meu
- 4:27e-mail [email protected].
- 4:30Não precisa ser um e-mail real. Colocar
- 4:32uma senha aqui, uma resposta aqui
- 4:33aleatória. Beleza, registrei, vou logar.
- 4:37@example.
- 4:39Beleza, tô logado. Então agora já posso
- 4:41interagir com as funcionalidades. E aqui
- 4:43tá uma dica muito legal. Dentro de um
- 4:45programa de bug, open test, antes de
- 4:48procurar pelas vulnerabilidades, você
- 4:49precisa entender todas as
- 4:50funcionalidades da aplicação, cada
- 4:52cenário de ataque, principalmente quando
- 4:54você tiver buscando por Idor, que é um
- 4:56tipo de vulnerabilidade totalmente
- 4:57relacionado com as regras de negócio da
- 4:59aplicação. Então, o nosso objetivo aqui
- 5:01com foco no IDOR é identificar esses
- 5:03cenários onde é passado um identificador
- 5:06pro back end. Eu posso ver isso através
- 5:08aqui do dev tools, apertando F12, vindo
- 5:11aqui na aba Network, consigo ver aqui
- 5:12todas as requests que meu navegador tá
- 5:15fazendo. Olha só, ele tá dando um get
- 5:16aqui em reviews, product reviews. Ele
- 5:19passa um identificador aqui, ou seja, eu
- 5:22já consigo enumerar os reviews, muito
- 5:24provavelmente alterando esse número.
- 5:26Como resultado aqui, olha só, eu tenho
- 5:28um array, ou seja, então esse número
- 5:30aqui é referente ao produto e aqui eu tô
- 5:31pegando todos os reviews. Enfim, eu
- 5:33posso fazer esse teste até pelo próprio
- 5:35navegador aqui, utilizando o editand,
- 5:37mas o ideal é que a gente tenha um proxy
- 5:39para interceptar todas as requisições e
- 5:41conseguir manipular melhor esses IDs e
- 5:44até para testar outros tipos de
- 5:45vulnerabilidade. Então, para isso eu vou
- 5:46utilizar o Burp sutch, beleza? abrir
- 5:48aqui o burp, ele vai interceptar todas
- 5:50as requisições e também tem um monte de
- 5:52ferramenta aqui que ajuda bastante. Eu
- 5:54vou iniciar o próprio browser aqui do
- 5:56Burp, que ele já vem configurado com
- 5:58proxy pra gente interceptar todas as
- 6:00requests. E vou acessar o nosso labi.
- 6:03Vou copiar aqui. Beleza? E olha só,
- 6:05olhando aqui no Burp, já vão aparecer
- 6:07todas as requisições que o meu navegador
- 6:09tá fazendo lá pra aplicação. Beleza,
- 6:12fechou? Vou fazer meu login aqui
- 6:14novamente. Accountana.com.
- 6:17Tô logado. Agora sim, vamos analisar as
- 6:20requisições. Logo de cara aqui, a gente
- 6:22viu que tem como enviar reviews pros
- 6:24produtos. Vamos analisar essa
- 6:26funcionalidade. Vou clicar aqui no Apple
- 6:28Juice. Olha só, tem um review aqui do
- 6:30admin shop. Assim que eu cliquei ali,
- 6:33ele já fez aquela request, olha só, nos
- 6:35products para listar todos os reviews.
- 6:37Posso clicar aqui com o botão direito e
- 6:39enviar pro repeater para repetir essa
- 6:41request e alterar tudo isso aqui. Então,
- 6:43por exemplo, enviando essa request, eu
- 6:45tô pegando os reviews do produto com ID
- 6:48um. Se alterar aqui para dois, olha só,
- 6:50as reviews do produto dois. Outro user
- 6:52aqui é outro review. Então, legal. Aqui
- 6:54nesse cenário não é um IDOR, porque de
- 6:57fato os reviews são públicos, porém se
- 6:59fosse uma informação confidencial aí sim
- 7:01teria um problema de controle de acesso.
- 7:03Mas beleza, vamos lá. Vamos enviar um
- 7:05review para ver como é que funciona. Vou
- 7:06escrever aqui teste e vou clicar em
- 7:09submit. Beleza, tá aqui a request. Eu
- 7:11vou enviar pro repeater novamente. Show.
- 7:13Então ele faz, ao invés de um get, ele
- 7:16faz um E no corpo da requisição tem
- 7:18aqui a mensagem e o autor desse review.
- 7:22Então olha só que loucura. eu consigo
- 7:24alterar esse autor. Nesse caso aqui, o
- 7:27e-mail do usuário tá sendo utilizado
- 7:29como identificador. Vamos fazer esse
- 7:30teste. Se não houver uma validação do
- 7:33autor com a minha sessão ativa, isso
- 7:35aqui é um IDOR. Então, vamos lá. Eu vou
- 7:37utilizar o e-mail do admin. Vou pegar
- 7:40aqui. Olha só, por enquanto existe aqui
- 7:42o meu review com o meu e-mail e eu vou
- 7:44colocar aqui o e-mail do admin. Vou dar
- 7:47um send. E olha só, created.
- 7:50Aparentemente o review foi criado. Vamos
- 7:52dar uma olhada lá. Vou reiniciar aqui a
- 7:54página, acessar aqui o Apple Juice. Olha
- 7:57só, nosso comentário apareceu aqui como
- 7:58se fosse o admino. Num contexto real, só
- 8:01esse cenário aqui já seria bem sensível,
- 8:03mas imagina isso aqui em funcionalidades
- 8:05ainda mais críticas. Por exemplo, na
- 8:07alteração de senha. Se eu clicar aqui no
- 8:08meu perfil, consigo alterar informações
- 8:10do usuário ou consigo ver informações do
- 8:13meu usuário. Vamos ver como que ele faz
- 8:14essa request. Nesse caso aqui, a sessão
- 8:16do profile, ele tá pegando as
- 8:18informações de acordo com o meu token de
- 8:20sessão. Ou seja, nesse cenário aqui em
- 8:22específico, se não tiver nenhuma
- 8:24vulnerabilidade com JWT, não teria um
- 8:26cenário de IDOR, teria que testar mais a
- 8:28fundo. Mas são muitos, muitos, muitos
- 8:30cenários. Aqui dentro do Shop, por
- 8:32exemplo, vamos ver aqui no carrinho.
- 8:34Olha só, clicando ali no carrinho, ele
- 8:36faz uma request. Olha só, rest basket.
- 8:40Então ele faz uma request paraa API e
- 8:42coloca um ID ali. Vou enviar isso aqui
- 8:43pro repeater. Vou alterar isso aqui pro
- 8:46ID um. Então vou acessar o carrinho com
- 8:49ID1. E olha só, tô acessando o carrinho
- 8:50de outros usuários. Imagina que no
- 8:52processo de pagamento ele passa o ID
- 8:54ali, uma forma de pagamento de outro
- 8:56usuário. Eu consigo utilizar o cartão
- 8:58dele para fazer uma compra ou alterar a
- 9:00senha desse outro usuário. Enfim, são
- 9:02muitos, muitos cenários. De acordo com
- 9:04as regras de negócio da aplicação, podem
- 9:06chegar em impactos extremamente
- 9:07críticos. Então, qual que é o segredo
- 9:09para identificar esse tipo de
- 9:10vulnerabilidade dentro de programas de
- 9:12bug bount? Eu recomendo você criar
- 9:14diferentes contas e, se possível,
- 9:16diferentes níveis de permissão e testar
- 9:18o ID de um usuário na outra conta para
- 9:21verificar se existe essa validação. O
- 9:23outro ponto importante também é varrer
- 9:25toda a aplicação, entender cada
- 9:26funcionalidade, porque às vezes uma
- 9:28vulnerabilidade aidor só é uma falha no
- 9:30contexto daquela aplicação por conta da
- 9:32regra de negócio. Então, muitas vezes
- 9:34pode passar despercebido e absolutamente
- 9:36qualquer funcionalidade que passe algum
- 9:38identificador pode ser vulnerável. E a
- 9:40pergunta que você tem que se fazer em
- 9:42cada um desses cenários é: "O que que
- 9:43acontece se eu simplesmente alterar esse
- 9:45valor?" Nem sempre um ataque envolve
- 9:47técnicas complexas e ferramentas de
- 9:49automação, apesar de ser simvel
- 9:52automatizar muita coisa paraor, isso
- 9:53pode ficar para um próximo vídeo, mas
- 9:55uma simples troca de um ID na URL pelo
- 9:57seu navegador já basta para identificar
- 9:59um cenário que muitas vezes pode ser bem
- 10:01crítico. Yeah.
About this transcript
This page contains the full transcript of Como explorar IDOR - Pentest e Bug Bounty (WEB HACKING) by Solyd Offensive Security, generated from the public captions YouTube serves with the video. The transcript has 1,949 words across 304 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.