Resumen ejecutivo
El 28 de febrero de 2022 se activó la alerta SOC169 — Possible IDOR Attack Detected (Caso #119) tras detectarse múltiples peticiones HTTP POST consecutivas dirigidas al endpoint /get_user_info/ del servidor interno WebServer1005 (172.16.17.15), originadas desde la dirección IP externa 134[.]209[.]118[.]137 (alojada en DigitalOcean, LLC y catalogada como maliciosa por motores de inteligencia de amenazas).
La correlación de los logs HTTP permitió confirmar un Verdadero Positivo (True Positive) con explotación exitosa: el atacante iteró manualmente el parámetro user_id entre los valores 1 y 5, recibiendo en los cinco casos estado HTTP 200 OK con tamaños de respuesta variables (158 a 351 bytes), lo que demuestra la exposición no autorizada de información perteneciente a distintos usuarios. Aun sin observarse ejecución de comandos a nivel de sistema operativo en el EDR, al haberse concretado la fuga de datos se procedió al aislamiento de WebServer1005 y al escalamiento del caso a Tier 2.
Veredicto: True Positive — ataque exitoso (exposición no autorizada de registros vía IDOR). Se aisló
WebServer1005en el EDR y se escaló a Tier 2 para remediación.
Detección inicial y triaje
| Campo | Valor |
|---|---|
| ID de Alerta / Regla | LetsDefend Alert #119 — SOC169 - Possible IDOR Attack Detected |
| Fecha del Incidente (Logs) | 2022-02-28 (16:45:00 – 16:48:01 SIEM) |
| Fecha de Investigación | 2026-10-19 |
| IP de Origen | 134[.]209[.]118[.]137 (AS14061 — DigitalOcean, LLC) |
| Activo Afectado | WebServer1005 (172.16.17.15) |
| Endpoint / Método | POST hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=[1..5] |
| Acción del Dispositivo | Allowed |
Hipótesis inicial: Al observar dos primeras peticiones consecutivas (16:45:00 sobre user_id=2 y 16:45:43 sobre user_id=1) provenientes de la misma fuente externa que retornan código 200 OK con longitudes de cuerpo diferentes (253 bytes vs. 188 bytes), se plantea la explotación activa de una vulnerabilidad Insecure Direct Object Reference (IDOR) que expone perfiles de usuarios sin validar permisos de sesión.
Análisis e investigación técnica
Secuencia de peticiones y evidencia de éxito
El análisis de los registros de red sobre 172.16.17.15 reveló una secuencia de 5 peticiones HTTP POST en un intervalo de 3 minutos. En cada solicitud se modificó de forma incremental el parámetro user_id:
POST /get_user_info/?user_id=2 HTTP/1.1 --> 200 OK (253 bytes)
POST /get_user_info/?user_id=1 HTTP/1.1 --> 200 OK (188 bytes)
POST /get_user_info/?user_id=3 HTTP/1.1 --> 200 OK (351 bytes)
POST /get_user_info/?user_id=4 HTTP/1.1 --> 200 OK (158 bytes)
POST /get_user_info/?user_id=5 HTTP/1.1 --> 200 OK (267 bytes)
Host: 172.16.17.15
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
| Hora | URI Solicitada (Defanged) | Parámetro | Estado HTTP | Tamaño | Interpretación |
|---|---|---|---|---|---|
16:45:00 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=2 |
user_id=2 |
200 OK |
253 B |
Consulta inicial exitosa |
16:45:43 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=1 |
user_id=1 |
200 OK |
188 B |
Prueba de IDOR hacia id=1 exitosa |
16:46:14 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=3 |
user_id=3 |
200 OK |
351 B |
Enumeración secuencial (dispara alerta) |
16:47:37 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=4 |
user_id=4 |
200 OK |
158 B |
Extracción de cuarto registro |
16:48:01 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=5 |
user_id=5 |
200 OK |
267 B |
Extracción de quinto registro |
¿Por qué sabemos que el ataque fue exitoso?
- Código
200 OK+ tamaños variables: Si la aplicación hubiera bloqueado el acceso o devuelto un mensaje de error genérico, veríamos códigos401/403/500o un tamaño de respuesta idéntico en cada intento. La variación en bytes (253,188,351,158,267) demuestra que el servidor devolvió efectivamente el contenido de 5 registros de usuario distintos.
Inspección en Endpoint (EDR) y Threat Intelligence (CTI)
- Telemetría EDR en
WebServer1005: Se revisaron los procesos en ejecución, historial de comandos y conexiones de red enWebServer1005(172.16.17.15), sin registrarse actividad anómala a nivel de sistema operativo. Esto es esperable en un ataque IDOR, ya que la vulnerabilidad reside en la lógica de autorización de la aplicación web y no implica ejecución de código en el host. - Inteligencia de Amenazas (CTI): La IP origen
134[.]209[.]118[.]137pertenece a DigitalOcean, LLC (AS14061) —indicativo del uso de un VPS o VPN— y cuenta con detecciones previas de motores de seguridad (vendor analysis) que la marcan como maliciosa. - Huella de User-Agent: El cliente declaró
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)(Internet Explorer 6 sobre Windows XP), un valor obsoleto típico de cabeceras falsificadas o herramientas de prueba HTTP.
Evolución del razonamiento analítico (Autocrítica y lecciones aprendidas)
Documentar cómo evoluciona una hipótesis durante el triaje es clave para afinar el criterio operativo:
- Razonamiento inicial: Al observar que las peticiones tenían intervalos irregulares de entre 24 y 83 segundos (enumeración manual, sin escáner automatizado) y que el EDR en
WebServer1005no presentaba ningún proceso malicioso ni movimiento lateral, mi primera inferencia fue considerar que se trataba de un usuario curioso “no malicioso” que había descubierto accidentalmente el parámetrouser_id, sin llegar a catalogarlo como una intrusión hostil que requiriera contención. - Revisión y corrección metodológica: Al reevaluar el caso bajo el modelo de respuesta a incidentes, identifiqué dos puntos críticos:
- Explotación lógica ≠ ejecución en EDR: En vulnerabilidades de control de acceso como IDOR, el objetivo del atacante no es ejecutar un binario en el servidor, sino leer datos ajenos. El hecho de recibir
HTTP 200 OKcon 5 perfiles distintos significa que el ataque ya tuvo éxito y produjo una brecha de confidencialidad. - Origen externo y CTI: El tráfico provino de Internet (
134[.]209[.]118[.]137, VPS/VPN en DigitalOcean reportado como malicioso) con unUser-Agentanómalo (MSIE 6.0). Aunque el ataque haya sido manual u oportunista (“no planeado” con herramientas masivas), es una acción maliciosa confirmada que exige contener el servidor afectado y escalar a Tier 2.
- Explotación lógica ≠ ejecución en EDR: En vulnerabilidades de control de acceso como IDOR, el objetivo del atacante no es ejecutar un binario en el servidor, sino leer datos ajenos. El hecho de recibir
Contención y recomendaciones
- Contención inmediata del activo: Se aisló el servidor
WebServer1005(172.16.17.15) en el EDR para detener la exposición pública del endpoint/get_user_info/hasta su corrección. - Escalamiento a Tier 2: Se elevó el incidente a Nivel 2 detallando los 5 identificadores comprometidos (
user_id=1..5) para auditar qué información sensible fue expuesta. - Remediación de control de acceso (OWASP Broken Object Level Authorization):
- Validar en el servidor que el usuario autenticado en la sesión activa sea propietario o tenga permisos sobre el
user_idconsultado, o tomar la identidad directamente desde el token de sesión en el backend. - Sustituir los identificadores numéricos secuenciales por UUIDv4 no predecibles.
- Validar en el servidor que el usuario autenticado en la sesión activa sea propietario o tenga permisos sobre el
- Bloqueo perimetral: Bloquear la IP
134[.]209[.]118[.]137en el Firewall perimetral y WAF.
Cronología
- 16:45:00Primera petición POST a /get_user_info/?user_id=2 — HTTP 200 OK (253 B)
- 16:45:43Cambio manual del parámetro a user_id=1 — HTTP 200 OK (188 B), confirmando acceso a otro registro
- 16:46:14Enumeración hacia user_id=3 dispara la alerta SOC169 (#119) — HTTP 200 OK (351 B)
- 16:47:37Extracción de información del perfil user_id=4 — HTTP 200 OK (158 B)
- 16:48:01Quinta petición exitosa sobre user_id=5 — HTTP 200 OK (267 B)
- CierreInspección EDR en WebServer1005, aislamiento del host por fuga de datos confirmada y escalamiento a Tier 2
Mapeo MITRE ATT&CK
Indicadores de compromiso
defanged134[.]209[.]118[.]137Atacante externo · AS14061 (DigitalOcean LLC / VPN)WebServer1005 (172.16.17.15)Servidor web interno contenidohxxps://172[.]16[.]17[.]15/get_user_info/?user_id=1[.][.]5Endpoint vulnerable a IDOR vía HTTP POSTMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)User-Agent obsoleto (IE6 / WinXP) en las 5 peticionesExecutive Summary
On February 28, 2022, the alert SOC169 — Possible IDOR Attack Detected (Case #119) triggered following a sequence of HTTP POST requests targeting the /get_user_info/ endpoint on internal server WebServer1005 (172.16.17.15), originating from external IP 134[.]209[.]118[.]137 (allocated to DigitalOcean, LLC and flagged as malicious by threat intelligence vendors).
Web access log correlation confirmed a True Positive with successful exploitation: the adversary manually iterated the user_id parameter from 1 to 5, receiving HTTP 200 OK responses with distinct body sizes (158 to 351 bytes) on every request—proving unauthorized disclosure of five different user records. Although EDR telemetry showed no OS-level command execution on the host, the confirmed data breach required immediate containment of WebServer1005 and escalation to Tier 2.
Verdict: True Positive — successful attack (unauthorized user data disclosure via IDOR).
WebServer1005was isolated via EDR and the case was escalated to Tier 2 for remediation.
Initial Detection & Triage
| Field | Value |
|---|---|
| Alert ID / Rule | LetsDefend Alert #119 — SOC169 - Possible IDOR Attack Detected |
| Incident Timestamp (Logs) | 2022-02-28 (16:45:00 – 16:48:01 SIEM) |
| Investigation Date | 2026-10-19 |
| Source IP | 134[.]209[.]118[.]137 (AS14061 — DigitalOcean, LLC) |
| Affected Asset | WebServer1005 (172.16.17.15) |
| Endpoint / Method | POST hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=[1..5] |
| Device Action | Allowed |
Initial Hypothesis: Observing two initial consecutive requests (16:45:00 with user_id=2 and 16:45:43 with user_id=1) from the same external IP returning HTTP 200 OK with different payload lengths (253 bytes vs. 188 bytes) immediately established the hypothesis of an active Insecure Direct Object Reference (IDOR) attack exposing user records without session-level authorization checks.
Technical Analysis & Investigation
Request Sequence & Evidence of Successful Exploitation
Inspecting the network logs for 172.16.17.15 revealed 5 HTTP POST requests across a 3-minute window, sequentially modifying the user_id parameter:
POST /get_user_info/?user_id=2 HTTP/1.1 --> 200 OK (253 bytes)
POST /get_user_info/?user_id=1 HTTP/1.1 --> 200 OK (188 bytes)
POST /get_user_info/?user_id=3 HTTP/1.1 --> 200 OK (351 bytes)
POST /get_user_info/?user_id=4 HTTP/1.1 --> 200 OK (158 bytes)
POST /get_user_info/?user_id=5 HTTP/1.1 --> 200 OK (267 bytes)
Host: 172.16.17.15
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
| Time | Requested URI (Defanged) | Parameter | HTTP Status | Size | Assessment |
|---|---|---|---|---|---|
16:45:00 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=2 |
user_id=2 |
200 OK |
253 B |
Initial successful record retrieval |
16:45:43 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=1 |
user_id=1 |
200 OK |
188 B |
Successful IDOR pivot to id=1 |
16:46:14 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=3 |
user_id=3 |
200 OK |
351 B |
Sequential enumeration (triggers alert) |
16:47:37 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=4 |
user_id=4 |
200 OK |
158 B |
Fourth user record exfiltrated |
16:48:01 |
hxxps://172[.]16[.]17[.]15/get_user_info/?user_id=5 |
user_id=5 |
200 OK |
267 B |
Fifth user record exfiltrated |
Why is this confirmed as a successful attack?
HTTP 200 OK+ variable response lengths: Had the application rejected unauthorized access or returned a static error page, we would observe401/403/500status codes or identical byte counts. The varying sizes (253,188,351,158,267 bytes) prove that each request returned a distinct user profile from the database.
Endpoint Telemetry (EDR) & Threat Intelligence (CTI)
- EDR Inspection on
WebServer1005: Reviewing running processes, command history, and network connections onWebServer1005(172.16.17.15) showed no suspicious OS-level activity. This aligns with the nature of an IDOR vulnerability: exploitation occurs entirely within the web application’s authorization logic (data disclosure) rather than through remote code execution. - Threat Intelligence (CTI): The source IP
134[.]209[.]118[.]137belongs to DigitalOcean, LLC (AS14061) —indicating a cloud VPS or VPN exit node— and is flagged as malicious by security vendor analysis. - User-Agent Anomaly: All requests carried
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)(Internet Explorer 6 on Windows XP), a legacy signature commonly used in spoofed headers or custom HTTP scripts.
Analytical Reasoning Evolution (Post-Review & Lessons Learned)
Reflecting on how the initial hypothesis evolved during triage highlights an important SOC distinction:
- Initial Reasoning: Because the requests were spaced 24 to 83 seconds apart (manual pacing rather than an automated scanner) and the EDR showed zero malicious processes on
WebServer1005, my initial inclination was to view the actor as a non-malicious user who stumbled upon theuser_idparameter without “exploiting” the server. - Post-Review Methodological Correction: Re-evaluating the evidence against incident response standards clarified two critical points:
- Application-layer exploitation ≠ EDR process execution: In access control flaws like IDOR, the attacker’s objective is unauthorized data collection, not shell execution. Receiving
HTTP 200 OKresponses with 5 different user records means exploitation already succeeded and caused a confidentiality breach. - External Threat Context: The traffic originated from the public internet (
134[.]209[.]118[.]137, a CTI-flagged DigitalOcean VPS/VPN) using a spoofedMSIE 6.0User-Agent. Even when conducted manually/opportunistically (“unplanned” without heavy automation), unauthorized extraction of user records is a malicious and successful attack that mandates host containment and Tier 2 escalation.
- Application-layer exploitation ≠ EDR process execution: In access control flaws like IDOR, the attacker’s objective is unauthorized data collection, not shell execution. Receiving
Containment & Recommendations
- Immediate Host Containment: Isolated
WebServer1005(172.16.17.15) via EDR to halt ongoing exposure of the vulnerable/get_user_info/endpoint. - Tier 2 Escalation: Escalated the case to Tier 2 documenting the 5 accessed user IDs (
user_id=1..5) to assess the sensitivity of the leaked data. - Access Control Remediation (OWASP Broken Object Level Authorization):
- Enforce server-side session validation ensuring the authenticated user is authorized to request the target
user_id, or derive the user identity directly from the signed session token/JWT. - Replace predictable sequential integer IDs with UUIDv4 identifiers.
- Enforce server-side session validation ensuring the authenticated user is authorized to request the target
- Perimeter Blocking: Block source IP
134[.]209[.]118[.]137at the perimeter Firewall and WAF.
Timeline
- 16:45:00Initial POST request to /get_user_info/?user_id=2 — HTTP 200 OK (253 B)
- 16:45:43Manual parameter change to user_id=1 — HTTP 200 OK (188 B), confirming access to another user record
- 16:46:14Sequential enumeration of user_id=3 triggers alert SOC169 (#119) — HTTP 200 OK (351 B)
- 16:47:37Unauthorized retrieval of user_id=4 profile — HTTP 200 OK (158 B)
- 16:48:01Fifth successful request targeting user_id=5 — HTTP 200 OK (267 B)
- ClosedEDR inspection on WebServer1005, host containment due to confirmed data exposure, and Tier 2 escalation
MITRE ATT&CK Mapping
Indicators of Compromise (IOCs)
defanged134[.]209[.]118[.]137External attacker · AS14061 (DigitalOcean LLC / VPN)WebServer1005 (172.16.17.15)Contained internal web serverhxxps://172[.]16[.]17[.]15/get_user_info/?user_id=1[.][.]5Endpoint vulnerable to IDOR via HTTP POSTMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)Outdated User-Agent (IE6 / WinXP) across all 5 requests