JF0x0r's Blog
PortfolioBug Hunter ProfileGithub
  • Whoami
  • Aprender Go
    • 🐺¿Qué es GO 🦊
    • 🧠Packages
    • 🎃Modules
    • 🐢Variable - Tipos de Datos
    • 🧌Operadores Matematicos - Lógicos
    • 🥥Flujo If, For, While, Switch
    • 🌼Struct - Methods vs Functions
    • 📽️POO (Programming Oriented Object)
    • 🐯Interface - Interfaces
    • 🎱Punteros * &
    • 🐸Vectores/Arrays, Slices y Maps
    • 🫀El uso de Make en channels, slices, maps
    • 🧛‍♀️Errores en Go - Uso de err ≠ nil
    • 👁️GO Defer
    • 🦷GO Panic
    • 🦋GO Recover
    • 🐦Structs
    • 🐔WaitGroups Go
  • Pentester Lab
  • Guía de Estudio Hacking
  • Bug Bounty
    • 🍓Adobe
    • 🚀Nasa VDP
    • 🧀Figma
      • 🐙User Enumeration via Authentication Flow - Email Exposure
    • 🫐Syfe
    • 🍉Etoro
    • 🥭Glance Networks
  • PortSwigger WebAcademy
    • Server Side Topics
      • SQL Injection
        • 🐔Laboratorio: Inyección SQL ciega
        • 🍫Laboratorio: Datos Ocultos - Aprendiz
        • 🦍Laboratorio: Omitir inicio de sesión Bypass
        • 🔏Laboratorio: Calcular numero Columnas con UNION
        • 🪖Laboratorio: ataque UNION de inyección SQL , búsqueda de una columna que contiene texto
        • 🐧Laboratorio: ataque UNION de inyección SQL , recuperando datos de otras tablas
        • 🧛Laboratorio: ataque UNION de inyección SQL , recuperando múltiples valores en una sola columna
        • 🐬Laboratorio: Inyección SQL con errores condicionales
        • 🐈‍⬛Laboratorio: Inyección SQL basada en errores visibles
        • 💃Laboratorio: Inyección SQL ciega con retrasos de tiempo
        • 🐆Laboratorio: Inyección SQL ciega con retardos de tiempo y recuperación de información
        • 👑Laboratorio: Inyección SQL ciega con interacción fuera de banda
        • 🏞️Laboratorio: ataque de inyección SQL, consulta del tipo y versión de la base de datos en Oracle
        • 🪻Laboratorio: ataque SQLi, consulta del tipo y versión de la base de datos en MySQL y Microsoft
        • 💀Laboratorio: ataque de inyección SQL, enumerando el contenido de la base de datos en bases de datos
        • 🧀Laboratorio: Inyección SQL con omisión de filtro mediante codificación XML
      • Authentication
        • 🐟Laboratorio: Enumeracion de usernames via diferentes responses
        • 👩‍🦽Laboratorio: enumeración de nombres de usuario a través de respuestas sutilmente diferentes
        • ™️Laboratorio: enumeración de nombres de usuario mediante tiempos de respuesta
        • 🦷Laboratorio: protección de fuerza bruta rota, bloqueo de IP
        • 🧢Laboratorio: enumeración de nombres de usuario mediante bloqueo de cuenta
        • 🦠Laboratorio: protección de fuerza bruta rota, múltiples credenciales por solicitud
        • 🐛Laboratorio: bypass simple 2FA
        • 🐯Laboratorio: lógica rota 2FA
        • 👓Laboratorio: 2FA bypass usando un ataque por fuerza bruta
        • 👽Lab: Brute-forcing a stay-logged-in cookie
        • 🦋Laboratorio: Offline password cracking
        • 🧌Laboratorio: Password reset broken logic
        • 👁️Laboratorio: Basic password reset poisoning
        • 👂Laboratorio: Password reset poisoning via middleware
        • 🥻Laboratorio: Fuerza bruta de contraseña mediante cambio de contraseña
        • 🫁Laboratorio: Envenenamiento por restablecimiento de contraseña mediante etiquetas colgantes
      • Path Traversal
        • 🛻Laboratorio: File path traversal, simple case
        • 🦅Laboratorio: File path traversal, traversal sequences blocked with absolute path bypass
        • 🦉Laboratorio: recorrido de ruta de archivo , secuencias transversales eliminadas de forma no recursiv
        • 🍊Laboratorio: File path traversal, traversal sequences stripped with superfluous URL-decode
        • 🕷️Laboratorio: File path traversal, validation of file extension with null byte bypass
      • Command Injection OS
        • 🖥️Laboratorio: OS command injection, simple case
        • 🐹Laboratorio: Blind OS command injection with time delays
        • 👹Blind OS command injection with output redirection
        • 🧛‍♂️Laboratorio: Inyección ciega de comandos del SO con exfiltración de datos fuera de banda
        • 🦟Laboratorio: Inyección ciega de comandos del sistema operativo con interacción fuera de banda
      • Business Logic Vulnerabilities
        • 🧝‍♂️Laboratorio: Confianza excesiva en los controles del lado del cliente
        • 🧙‍♂️Laboratorio: Vulnerabilidad lógica de alto nivel
        • 🤩Laboratorio: Vulnerabilidad falla lógica de bajo nivel
        • 🎻Laboratorio: Manejo inconsistente de entradas excepcionales
        • 🏓Laboratorio: Inconsistent security controls
        • 🥭Laboratorio: Aislamiento débil en terminales de doble uso
        • 🧑‍✈️Laboratorio: Validación de flujo de trabajo insuficiente
        • 📀Laboratorio: Omisión de autenticación a través de una máquina de estado defectuosa
        • 🐦‍⬛Laboratorio: Aplicación defectuosa de las reglas comerciales
        • 🌵Laboratorio: falla en la lógica del dinero infinito
        • 🥑Laboratorio: omisión de autenticación mediante Oracle de cifrado
        • 🧊Lab: Bypassing access controls using email address parsing discrepancies
      • Information Disclosure Vulnerabilities
        • 🧟Laboratorio: Divulgación de información en mensajes de error
        • 🌵Laboratorio: divulgación de información en la página de depuración
        • 🍅Laboratorio: Divulgación del código fuente a través de archivos de respaldo
        • 🤿Laboratorio: omisión de autenticación mediante divulgación de información
        • 🏑Laboratorio: Divulgación de información en el historial de control de versiones
      • SSRF - Server-Side Request Forgery
        • 🧅Laboratorio: SSRF básico frente a otro sistema back-end
        • 🐮Laboratorio: SSRF con filtro de entrada basado en lista negra
        • 🌶️Laboratorio: SSRF con filtro de entrada basado en lista blanca
        • 💽Laboratorio: SSRF with filter bypass via open redirection vulnerability
        • ☎️Laboratorio: SSRF ciega con detección fuera de banda
        • 🥬Laboratorio: SSRF ciega con explotación Shellshock
        • 🐦Laboratorio: SSRF básico contra el servidor local
      • Acess Control
        • 🍑Laboratorio: funcionalidad de administración desprotegida
        • 🍉Laboratorio: funcionalidad de administración desprotegida con URL impredecible
        • 🐱Laboratorio: rol de usuario controlado por el parámetro de solicitud
        • 🐒Laboratorio: La función del usuario se puede modificar en el perfil del usuario
        • 🐴Laboratorio: el control de acceso basado en URL se puede eludir
        • 🍋Laboratorio: El control de acceso basado en métodos se puede eludir
        • 🎾Laboratorio: ID de usuario controlado por parámetro de solicitud
        • 🧆Laboratorio: ID de usuario controlado por parámetro de solicitud, con ID de usuario impredecibles
        • 🦑Laboratorio: ID de usuario controlado por parámetro de solicitud con fuga de datos en redirección
        • 😎Laboratorio: ID de usuario controlado por parámetro de solicitud con divulgación de contraseña
        • 🍗Laboratorio: Referencias directas a objetos inseguros
        • 🧀Laboratorio: proceso de varios pasos sin control de acceso en un solo paso
        • ⛄Laboratorio: Control de acceso basado en referentes
      • File Upload Vulnerabilities
        • 🛼Laboratorio: ejecución remota de código mediante carga de shell web
        • 🥦Laboratorio: carga de shell web mediante omisión de restricción de tipo de contenido
        • ⛵Laboratorio: carga de shell web mediante recorrido de ruta
        • 🛝Laboratorio: carga de shell web mediante omisión de la lista negra de extensiones
        • ⚾Laboratorio: carga de shell web a través de una extensión de archivo ofuscada
        • 🪖Laboratorio: carga de shell web mediante condición de carrera
      • Web Cache Deception
        • 🧀Laboratorio: Explotación del mapeo de rutas para el engaño de caché web
        • 🍨Laboratorio: Explotación de delimitadores de ruta para el engaño de caché web (v2)
        • 🪇Laboratorio: Explotación de la normalización del servidor de origen para el engaño de la caché web
        • 🍺Laboratorio: Explotación de la normalización del servidor de caché para el engaño de la caché web
        • ⚽Laboratorio: Explotación de reglas de caché de coincidencia exacta para el engaño de caché web
      • API Testing
        • 🥨Laboratorio: Explotación de un punto final de API mediante documentación
        • 🛝Laboratorio: Cómo encontrar y explotar un punto final de API no utilizado
        • 🧤Laboratorio: Explotación de una vulnerabilidad de asignación masiva
        • 🍒Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una cadena de co
        • 🥕Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una URL REST
      • XXE Injection - XML Entity
        • 🏸Laboratorio: Exploiting XXE using external entities to retrieve files
        • 🥾Laboratorio: Exploiting XXE to perform SSRF attacks
        • 🧑‍🎤Laboratorio: Blind XXE with out-of-band interaction
        • 🦉Laboratorio: Blind XXE with out-of-band interaction via XML parameter entities
        • 🌋Laboratorio: Exploiting blind XXE to exfiltrate data using a malicious external DTD
        • 👾Laboratorio: Exploiting blind XXE to retrieve data via error messages
        • 🌍Laboratorio: Exploiting XXE to retrieve data by repurposing a local DTD
        • 🫀Laboratorio: Exploiting XInclude to retrieve files
        • 👁️Laboratorio: Exploiting XXE via image file upload
      • Race Conditions
        • 🗣️Mutexes Golang
        • ⛸️Laboratorio: Limit overrun race conditions
        • 👽Laboratorio: Bypassing rate limits via race conditions
        • 👩‍🦯Laboratorio: Multi-endpoint race conditions
        • 🧢Laboratorio: Single-Endpoint Race Conditions
        • 🐛Laboratorio: Partial Construction Race Condition
        • 🔩Laboratorio: Exploiting time-sensitive vulnerabilities
      • No-SQL Injection
        • 🪱Laboratorio: Detecting NoSQL injection
        • 💼Laboratorio: Exploiting NoSQL operator injection to bypass authentication
        • 🪖Laboratorio: Exploiting NoSQL injection to extract data
        • 🦺Laboratorio: Exploiting NoSQL operator injection to extract unknown fields
    • Client Side Topics
      • Cross-site scripting (XSS)
        • XSS Reflected
          • ⛑️Laboratorio: XSS reflejado en contexto HTML sin nada codificado
        • XSS Based DOM
          • 🍖Laboratorio: DOM XSS en document.write, el receptor usando la fuente location.search
        • XSS Stored
          • 🪢Laboratorio: Stored XSS into HTML context with nothing encoded
          • 🥌Laboratorio: Stored XSS into onclick event with angle brackets and double quotes HTML-encoded
    • Advanced Topics
      • 0Auth
      • Insecure Deserialization
        • 🧀Laboratorio: Modificar objetos en serie
        • 🧅Laboratorio: Modificar los tipos de datos en serie
        • 🎋Laboratorio: Usando funcionalidad de la aplicación para explotar la desserialización insegura
        • 🎯Laboratorio: Inyección arbitraria de objetos en PHP
        • 🍿Laboratorio: Inyección arbitraria de objetos en PHP
        • 🕸️Laboratorio: Exploiting Java deserialization with Apache Commons
        • 🥷Laboratorio: Exploiting PHP deserialization with a pre-built gadget chain
        • 🏈Laboratorio: Exploiting Ruby deserialization using a documented gadget chain
        • 🎄Laboratorio: Desarrollo de una cadena de gadget personalizada para la deserialización de Java
        • 👨‍🦽Laboratorio: Desarrollo una cadena de gadget personalizada para la deserialización de PHP
  • Hacking Certifications
    • ACP - APISec University
      • 🌍API Security Fundamentals 2025
      • 🫀OWASP API Security Top 10 and Beyond!
      • 🏓API Authentication
      • 🥥API Documentation Best Practices
      • 🌲Securing API Servers
Powered by GitBook
On this page
  • Cross Origin Resource Sharing (CORS)
  • 💥 ¿Por qué existe?
  • ¿Cómo se permite?
  • ¿Qué hace Cross-Origin-Resource-Policy?
  • 🧱 Valores permitidos y su explicación
  • Quiz:
  • Error Disclosure:
  • Quiz:
  • Information Leak
  • Quiz:
  • Insecure Cookies:
  • Quiz
  • Path Traversal:
  • Quiz:
  • Rate Limit:
  • Resumen de los Tech Tips contra Rate Limits:
  • Quiz:
  1. Hacking Certifications
  2. ACP - APISec University

Securing API Servers


Cross Origin Resource Sharing (CORS)

A grosso modo, CORS (Cross-Origin Resource Sharing) es una política de seguridad de los navegadores que:

❌ Evita que una web cargada desde un dominio (ej: evil.com) haga peticiones a otro dominio (ej: api.victima.com) sin permiso.


💥 ¿Por qué existe?

Para proteger a los usuarios del robo de datos o ejecución de acciones no autorizadas desde scripts maliciosos.

¿Cómo se permite?

El servidor (api.victima.com) debe responder con headers especiales como:

Access-Control-Allow-Origin: https://app.segura.com

Con eso le dice al navegador:

"Sí, permito que este origen me consulte."

  • CORS PERMITE bloquear que un sitio no permitido en la API no pueda compartir recursos maliciosos a otros dominios victimas.

¿Qué hace Cross-Origin-Resource-Policy?

Evita que otros sitios (otros orígenes) incrusten o carguen recursos desde tu servidor si tú no lo permites.

Piensa en esto como una muralla contra ataques tipo CSRF a imágenes, side-channel y data leaks a través de recursos compartidos.

🧱 Valores permitidos y su explicación

Valor
¿Qué permite?

same-origin

🔒 Solo el mismo origen puede cargar el recurso.

same-site

🟡 Orígenes del mismo sitio (subdominios incluidos, ej. a.evil.com, b.evil.com) pueden cargarlo.

cross-origin (o *)

🌐 Cualquier origen puede cargar el recurso.

null

❌ No válido aquí. No es un valor permitido para este header. Si lo pones, se ignora o puede lanzar error.

Quiz:

Question 1
What changes behavior based on CORS settings?
The malicious visitor
The server
The web browser
Correct answer.
Web crawlers

Question 2
The Cross Origin Site Policy header governs:
A data limit that cannot be exceeded
Whether content can be mixed between locations
Correct answer.
The history of website content for reference
Legal references for data handling

Question 3
The Access-Control-Allow-Origin header defines:
Which domains are allowed to request data
Correct answer.
Which user accounts can access the site
What is allowed to go into browser history
A cache of which user agents were allowed access

Error Disclosure:

  • Error generico, exista o no exista el recurso un 404 en github es retornando y es un buen ejemplo de buena practica.

Quiz:

Question 1
Who does NOT benefit from verbose, detailed technical error messages?
Customer support
Malicious actors
Developers
Customers
Correct answer.

Question 2
What is NOT an example of an Error Disclosure?
Tech stack information
Specific libraries
Simple, non-detailed error message
Correct answer.
Debug information

Question 3
Exceptions should be caught:
Early, when anything is unexpected
Correct answer.
Only when the logic can't continue without it
By customer request, when they have issues
In development

Information Leak

  • Google dork: “Uvicorn CVE”

Otro ejemplo:

Quiz:

Question 1
What Header is NOT a concern for sending to clients
Cache-Control
Correct answer.
X-Version
X-Powered-By
Server

Question 2
What is a known vulnerability commonly called?
Malware
Bug
Ticket
CVE
Correct answer.

Question 3
Response Headers are:
Rarely needed data for an API
Information sent to all client applications
Correct answer.
Secure communication to a client from a server
Exclusive API data implementations

Insecure Cookies:

  • Cookies are storing data on a customer's computer, and secure cookies are ones that are created that don't restrict the access to anybody who might want to read that data.

  • When a cookie is created, it has certain security settings that can be created, such as the Secure option, the HTTP Only option, and then restricting what sites are allowed to read the cookie.

Quiz

Question 1
Insecure Cookies are:
Protected data
Server side data that can easily be retrieved
Easily harvested data on customers' machines
Correct answer.
A treat that tastes great and makes you feel guilty

Question 2
Cookie Data should be treated as:
Logic driving state variables
Internal trusted data
Secure state storage
Untrusted input
Correct answer.

Question 3
Which of these is NOT a security flag for cookies:
SSL
Correct answer.
Secure
Httponly
maxAge

Path Traversal:

Quiz:

Question 1
Path Traversal vulnerabilities are:
Course correction from a school counselor on life path choices
Moving paths symlinks across servers
Typing in different paths in the URL
Any file access that wasn’t intended
Correct answer.

Question 2
The parameter definition in a spec can help prevent path traversal by:
Specifically disallowing filenames
Blocking lengthy bypasses of encoding
Correct answer.
Enabling the “No path changes” option
Updating the known paths list

Question 3
Files that are ok to be kept at the webroot are:
Only the ones to be served in responses
Correct answer.
Only files from the applications code repository
Any system and configuration files used for the web service
The same files copied and pasted from each environment

Rate Limit:

  • HTTP Status: 429 too many requests

  • try captCHA that will make the difference.

  • Bloquear luego de muchas requests per second.

  • 4 digits es apura fuerza bruta viendo cual posible combinacion retorne un 200 o un 302

  • user enumeration es tirar lo mismo en busca de diferencias en la response received, length de las respuestas con el fin de poder ver si hay diferencias y de esta manera ir identificando users existentes, etc.

  • scrapping

Resumen de los Tech Tips contra Rate Limits:

  1. Evita operaciones SQL para manejar throttling

    • 🔒 Pro: Son lentas y pueden ser explotadas (DoS, SQLi).

    • 🧠 Idea: Usa almacenamiento en memoria (como Redis o Memcached), mucho más rápido.

  2. Evita operaciones en disco

    • 🔒 Pro: Leer/escribir en disco es lento y escalable solo hasta cierto punto.

    • 🧠 Idea: Guarda el conteo de peticiones en memoria, no en archivos.

  3. Incluye la IP junto con el usuario

    • 🔒 Pro: Previene que varios atacantes usen un solo user/token desde múltiples IPs.

    • 🛠️ Contra para atacante: Cambiar de IP ya no basta, también necesita cuentas nuevas.

  4. Usa caché para respuestas repetidas (misma query)

    • 🔒 Pro: Si muchos usuarios hacen la misma query, mejor devuelve una respuesta cacheada.

    • 🛠️ Contra para atacante: Puede dificultar fuzzing si siempre se recibe la misma respuesta cacheada.

Quiz:

Question 1
User Enumeration is:
Determining valid from invalid accounts through brute force.
Correct answer.
Getting an accurate count of users on the API
Monitoring the concurrent users count vs limitations
Enforcing an endpoint quota on a user

Question 2
The Standard HTTP Status code for “Too many requests” is
411
420
429
Correct answer.
414

Question 3
Which of the following is NOT a vector for an application layer DOS?
Coordinated Botnet activity on an endpoint
XSS links on 3rd party websites point to your endpoint
Legitimate User Activity beyond an environments capacity
Mass DNS reflection attack
Correct answer.

PreviousAPI Documentation Best Practices
🌲