Sign up
Login
New
Trending
Archive
English
English
Sign up
Login
New Paste
Add Image
Puedo explicarte **cómo comprobar IDOR y BOLA con Burp Suite** *solo en entornos donde tengas autorización* (tu app, laboratorio, programa bug bounty con permiso, etc.). A nivel práctico, **IDOR** y **BOLA** son variantes de lo mismo: fallas de **autorización a nivel de objeto** (Broken Access Control). La diferencia típica es: * **IDOR**: suele verse en apps web “normales” (URLs/requests con IDs predecibles). * **BOLA**: el mismo problema, pero en **APIs** (REST/GraphQL), muy común con tokens (Bearer/JWT). Abajo te dejo un flujo seguro y útil con Burp en Kali. --- ## 1) Preparación en Burp (Kali) 1. Abre **Burp Suite** (Community sirve). 2. Configura el navegador para pasar por el **proxy** de Burp (127.0.0.1:8080). 3. Instala el **certificado** de Burp en el navegador para interceptar HTTPS (en Burp: *Proxy → Intercept → Open Browser* suele simplificar). 4. En *Proxy → HTTP history* confirma que ves tráfico. **Tip clave:** Para probar autorización necesitas **dos identidades**: * Usuario A (dueño de objetos) * Usuario B (no debería acceder a objetos de A) * (Opcional) un usuario “admin” o rol distinto si aplica --- ## 2) Cómo detectar posibles IDOR/BOLA (qué buscar) En el tráfico, busca requests donde haya “referencias a objetos”, por ejemplo: * IDs en la ruta: `/users/123`, `/orders/987`, `/invoices/555` * IDs en query: `?userId=123`, `?account=44` * IDs en JSON: `{"id":123,"ownerId":44}` * Identificadores “opacos” pero reutilizables: UUID, hashes, etc. También fíjate en operaciones típicas: * `GET /resource/{id}` (leer) * `PUT/PATCH /resource/{id}` (editar) * `DELETE /resource/{id}` (borrar) * Acciones: `/transfer`, `/refund`, `/changeEmail`, etc. --- ## 3) Prueba base para IDOR (web) con Burp **Objetivo:** confirmar si puedes acceder a un objeto que no te pertenece. ### Flujo recomendado 1. **Inicia sesión como Usuario A**. 2. Navega hasta un recurso que sea “de A” (por ejemplo su perfil, una orden, un archivo). 3. En Burp, toma el request correspondiente (de *HTTP history*) y envíalo a: * **Repeater** (clic derecho → *Send to Repeater*). 4. En Repeater, identifica el **ID** del objeto y cámbialo por otro valor (un ID distinto). 5. Repite el request y evalúa: ### Qué confirma una falla (señales) * Te devuelve **200** y datos de otro usuario. * Te permite **editar/borrar** un objeto que no es tuyo. * Respuestas “parciales” con datos sensibles (nombre, email, dirección, etc.). ### Qué sería lo correcto * **401/403** (no autorizado) o * **404** (ocultar existencia del objeto) o * Respuesta filtrada (solo datos permitidos). **Consejo práctico:** Haz la misma prueba con **Usuario B** logueado: copia el request de A y **reemplaza su cookie/token** por la sesión de B (o repite navegación como B y compara). --- ## 4) Prueba base para BOLA (API) con Burp BOLA suele aparecer cuando la API valida autenticación (token válido) pero **no valida que el objeto pertenezca** al usuario. ### Flujo recomendado 1. Captura un request API como Usuario A (por ejemplo `GET /api/accounts/1234`). 2. Mándalo a **Repeater**. 3. Cambia el **identificador de objeto** (accountId/orderId/etc.) a uno que NO sea de A. 4. Repite: * Con token de **A** * Con token de **B** 5. Observa si hay acceso indebido. ### Puntos donde suele esconderse BOLA * Endpoints “de listado” con filtros controlados por el cliente: `GET /api/orders?userId=...` * Endpoints “de acción” (transferencias, cambios de rol): `POST /api/users/{id}/role` * GraphQL: IDs en variables/queries (muy común). --- ## 5) Cómo usar Burp para hacerlo más ordenado (sin “ruido”) * **Target → Site map**: te ayuda a localizar endpoints repetidos con IDs. * **Logger/HTTP history**: filtra por `/api/` o por palabras como `id`, `user`, `account`. * **Comparer**: compara respuestas cuando cambias IDs (¿cambia el contenido?). * **Repeater**: tu herramienta principal para pruebas controladas. * **Intruder (con cuidado)**: útil para **pequeñas variaciones** de ID en laboratorio (evita fuerza bruta o grandes rangos). *(Si usas Burp Pro existen funciones más avanzadas, pero con Community alcanza para confirmar el fallo.)* --- ## 6) Evidencia mínima que deberías recolectar (para reportar bien) * Request original (Usuario A → objeto A) * Request modificado (Usuario B o ID cambiado → objeto ajeno) * Respuesta que demuestra acceso (código HTTP + fragmento relevante) * Impacto: lectura / modificación / borrado / ejecución de acción * Condiciones: roles, endpoint, parámetros exactos donde falla --- ## 7) Cómo se corrige (por si estás auditando tu propia app) * **Autorización server-side** en cada endpoint por objeto: “¿este usuario puede acceder a ESTE id?” * No confiar en `userId` recibido del cliente (tomarlo del token/sesión). * Políticas ABAC/RBAC consistentes (y tests). * Logging + rate limits para reducir enumeración. --- Si me pegas **un ejemplo de request (sin secretos)**: ruta + método + un JSON de ejemplo (redactando token/cookies), te digo **dónde suele estar el vector IDOR/BOLA** y qué variaciones probar de forma segura para confirmar si es bug real o falso positivo.
Settings
Title :
[Optional]
Paste Folder :
[Optional]
Select
Syntax :
[Optional]
Select
Markup
CSS
JavaScript
Bash
C
C#
C++
Java
JSON
Lua
Plaintext
C-like
ABAP
ActionScript
Ada
Apache Configuration
APL
AppleScript
Arduino
ARFF
AsciiDoc
6502 Assembly
ASP.NET (C#)
AutoHotKey
AutoIt
Basic
Batch
Bison
Brainfuck
Bro
CoffeeScript
Clojure
Crystal
Content-Security-Policy
CSS Extras
D
Dart
Diff
Django/Jinja2
Docker
Eiffel
Elixir
Elm
ERB
Erlang
F#
Flow
Fortran
GEDCOM
Gherkin
Git
GLSL
GameMaker Language
Go
GraphQL
Groovy
Haml
Handlebars
Haskell
Haxe
HTTP
HTTP Public-Key-Pins
HTTP Strict-Transport-Security
IchigoJam
Icon
Inform 7
INI
IO
J
Jolie
Julia
Keyman
Kotlin
LaTeX
Less
Liquid
Lisp
LiveScript
LOLCODE
Makefile
Markdown
Markup templating
MATLAB
MEL
Mizar
Monkey
N4JS
NASM
nginx
Nim
Nix
NSIS
Objective-C
OCaml
OpenCL
Oz
PARI/GP
Parser
Pascal
Perl
PHP
PHP Extras
PL/SQL
PowerShell
Processing
Prolog
.properties
Protocol Buffers
Pug
Puppet
Pure
Python
Q (kdb+ database)
Qore
R
React JSX
React TSX
Ren'py
Reason
reST (reStructuredText)
Rip
Roboconf
Ruby
Rust
SAS
Sass (Sass)
Sass (Scss)
Scala
Scheme
Smalltalk
Smarty
SQL
Soy (Closure Template)
Stylus
Swift
TAP
Tcl
Textile
Template Toolkit 2
Twig
TypeScript
VB.Net
Velocity
Verilog
VHDL
vim
Visual Basic
WebAssembly
Wiki markup
Xeora
Xojo (REALbasic)
XQuery
YAML
HTML
Expiration :
[Optional]
Never
Self Destroy
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Status :
[Optional]
Public
Unlisted
Private (members only)
Password :
[Optional]
Description:
[Optional]
Tags:
[Optional]
Encrypt Paste
(
?
)
Create Paste
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Site Languages
×
English