¿Empresas grandes invulnerables?

Iniciado por Mortal_Poison, Enero 29, 2018, 04:47:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 29, 2018, 04:47:14 PM Ultima modificación: Enero 29, 2018, 07:43:12 PM por Mortal_Poison



La representación actual de la seguridad, ha sido una auténtica problemática para las empresas. Sabemos que si destinan dinero, de último recurso será la seguridad. Aclaro que esto está cambiando. Pero como todo, esto no es de la noche a la mañana.
Para los usuarios que no son técnicos ni están en nuestra área, son invulnerables las empresas como Facebook, Spotify, Blizzard, Riot Games, Steam, entre otras. Las personas solemos vislumbrar la seguridad, porque como cualquier otro tema, creemos que nunca nos pasará.

Quizás, esto se deba a la manera en la que nos educan, porque no nos enseñan que somos humanos. A pesar de que el altruismo en nuestra sociedad no es un hecho concebible de manera inconsciente, es irrefutable que somos un defecto hecho personas. Por esa y muchísimas más razones, no es posible confirmar que un sistema es seguro. Ahí lo "razonable" se convierte en irracional, y es cuando debemos aceptar que siempre habrá personas más inteligentes que nosotros y aprender a desaprender.

Una de las concepciones que tenemos los que buscamos vulnerabilidades en los sistemas, es que nuestra curiosidad nos mueve en conjunto a la perseverancia. Es pensar más allá. Es ver puertas donde la gente ve paredes.

Underc0de, ha sido un punto de equilibrio entre gente de un nivel técnico muy alto y también en parte del conocimiento centralizado.

A las empresas(y lo menciono por experiencia) les incomoda cuando les avisan un fallo de seguridad en sus sistemas. Posiblemente porque su mentalidad es un poco cerrada.

Con esta introducción, quiero mostrarles dos vulnerabilidades en dos empresas pragmáticamente grandes, concernientes a vídeojuegos y aclaro que tengo fallos más graves, pero por el momento, publicaré estas.

ABORDANDO AL PIRATA


Hace años, solía jugar un juego llamado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, de la empresa No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. El juego, a groso modo, es de piratas en barcos, donde el juego te ofrece características como pertenecer a clanes, tomar islas, abordar barcos, entre otras que lo hacen un juego divertido.
Como es un juego Pay2win(ahora más que antes), solía buscarle fallos y subirlos al canal de Youtube que creé. Lo menciono porque, me movía la curiosidad saber si podía obtener las mismas características de pago, con algún bug. Y así fue como trascendió mi cuenta, entre los bugs que encontraba y subía, y entre los que no. Esto me hizo bastante grande. No en la cuestión del juego, sino en la cuestión de que aprendí bastante. 

Así que hace unos meses me dispuse a encontrar y reportar vulnerabilidades de este juego, y con esto fue lo que me encontré.

Entrando a la página oficial, nos podemos registrar o crear una nueva cuenta. En éste caso, vamos a registrarnos.


Ilustración 1. Login de Seafight.

Ingresamos nuestros datos para el registro.


Ilustración 2. Datos de registro para ingresar a Seafight.

Una vez presionado el botón de "Juega ahora gratis", vemos el primer anuncio(y apenas entrando xD) de una súper promo de perlas, que las adquieres obviamente con dinero.


...

¡Eh! me equivoqué de imagen.


Ilustración 3. Registro correcto.

Ahora nos remitimos a "Camarote" > "Correo":


Ilustración 4. Pestaña para envíar mensajes entre jugadores.

Ahora, añadiremos en "Nombre de Usuario", nuestro nombre de Usuario. Posteriormente, en el Asunto, podemos poner cualquier cosa. En el cuerpo del mensaje, está el vector de ataque.


Ilustración 5. Vector de ataque en el cuerpo de mensaje.

¿Por qué? ellos mandan por método POST la información, y eso está bien. El problema radica, en que no validan que no pueda inyectar código malicioso de JavaScript. Cuando ocurre esto, en una sección donde el único enfoque es enviarse información entre jugadores, podemos asumir que es un fallo de seguridad grave.

He diseñado el siguiente escenario, donde podrán comprender de manera más detallada cómo podría afectar de manera múltiple a los jugadores de la plataforma. Luego de ello, vendrá la PoC.


Ilustración 6. Diagrama donde se muestra el funcionamiento de los mensajes de Seafight.

POST DATA en realidad vendría siendo nuestro código malicioso. Teniendo claro esto, vamos a proceder a inyectar nuestro payload.

Inyectemos un payload en el navegador de Chrome:


Ilustración 7. Código malicioso en el cuerpo del mensaje.

Y magia, nos bloquea Chrome >:( :


Ilustración 8. Bloqueo de Chrome con XSS_AUDITOR.

Y obviamente, al bloquearlo, no se mostraría nuestra alerta(aunque esté allí pero nuestro cliente«Web Browser» no lo muestre).


Ilustración 9. Código malicioso estático correctamente.

Mozilla Firefox

No estoy patrocinando Mozilla, pero ya notarán las diferencias.
Me cree una cuenta nueva, denominada: "AquilesClavoElBug2" y ahí notarán que puse el código malicioso.


Ilustración 10. Incrustando el código malicioso en nueva cuenta.

Y voilá:


Ilustración 10. El cliente muestra correctamente la alerta.

Como podrán notar, esas son las dos diferencias entre Chrome y Firefox.

Podemos hacer Bypass en éste tipo de casos, pero no me centraré en ello en éste post.

En el próximo post, demostraré cómo explotaremos esto de una forma más sustancial, claro está, a modo de prevención y sin querer hacerle daño a nadie.

Por otra parte, quisiera mostrar el correo que ellos me respondieron ante la explicación que les quise dar mencionandoles que poseen un fallo de seguridad:


Ilustración 11. Respuesta de Bigpoint ante la información de una falla de seguridad.

Luego de eso, no respondieron.

Steam

Ésta página cuenta con varias vulnerabilidades, ahora, les mostraré un Open Redirect.
Los open redirect generalmente tienen una tabla de severidad media, debido a el impacto que puede afectar a cualquier persona que caiga. Por ejemplo, podríamos redirigir desde un sitio original a un sitio de phishing a las personas y así quedarnos con sus datos. La verdad, son muchas posibilidades que tendríamos con ese vector de ataque.

Si entramos a algún vídeojuego(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), que quisiéramos comprar, veríamos algo como esto:


Ilustración 12. For Honor - Juego de Steam.

Si bajamos, podremos notar que hay un botón que se denomina: "Visitar el Sitio Web" y redirecciona a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


Ilustración 13. Redirección desde Steam a páginas de juegos.


El problema viene de Steam, debido a que su "linkfilter" hace una redirección absoluta a una URL proporcionada. Por esa misma razón, las URLs de redirección de Steam quedan de la siguiente manera:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Esto ocurre únicamente cuando desde la página oficial de Steam presionamos el botón "Visitar el Sitio Web".

• Si lo hacemos directamente, nos aparece el aviso que nos indica que "no es un sitio oficial de Steam".
• Si lo hacemos dentro de la página de Steam, como lo he indicado, se redirecciona correctamente.

Pero podríamos hacer lo siguiente:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

La excepción ocurre cuando al abrirlo directamente, nos sale lo siguiente:


Ilustración 14. Filtro de redirección de Steam.

Entonces viendo que no funcionaba de esa manera, creé este pequeño exploit en php, que lo pueden encontrar en:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: php

<?php
$curl_h = curl_init('https://steamcommunity.com/linkfilter/?url=hotmail.com');


# Modify Headers
curl_setopt($curl_h, CURLOPT_HTTPHEADER,
    array(
'Host: steamcommunity.com',
'Cookie: steamCountry=CO"%"7C98139622f4f41de49e0ad1ebcb216d70; steamLogin=76561198809901810"%"7C"%"7C639A3671DD789F0A0A852C7E39F271211527EC59; steamLoginSecure=76561198809901810"%"7C"%"7CF8C6CD7AB23B4060D130444791178356E37B7E7F; sessionid=ce46ae916feb5f18a3e8c6f6; _ga=GA1.2.589967724.1517180624; _gid=GA1.2.1251830587.1517180624; timezoneOffset=-18000,0; recentlyVisitedAppHubs=304390',
              'User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0',
              'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
              'Referer: http://store.steampowered.com/app/304390/FOR_HONOR',
              'Connection: keep-alive',
              'Upgrade-Insecure-Requests: 1'
    )
   
);
# Return Transfer
curl_setopt($curl_h, CURLOPT_RETURNTRANSFER, true);
//Follow Redirections
curl_setopt($curl_h, CURLOPT_FOLLOWLOCATION, true);


//Execute the request
$data = curl_exec($curl_h);

//Close cURL Handle.
curl_close($curl_h);
echo $data;
echo 'This is PoC By: Mortal_Poison #Underc0de #VIINVIDEOSHD';
?>


Como podrán notar, hace una redirección satisfactoria, desde VIINACADEMY > STEAM > HOTMAIL. No es la única manera de explotar esto, pero simplemente es una pequeña prueba de concepto donde demuestro el open redirect(y no menciono de las posibilidades de XSS que posee en ese parámetro[descúbranlo por ustedes mismos]).

En resumen y comprendiendo el exploit, Steam no verifica si sí es legítimo el Referer y el redireccionamiento, ya que como notaron, es como si le estuviera diciendo: "vengo de Steam y voy para VIINACADEMY" y Steam respondiera:"viene de Steam, es correcto, redireccionando...".

Acuérdense que hasta se podría poner ese Open Redirect en herramientas como UFONet que aprovechan éste tipo de vulnerabilidades para hacer ataques de DDoS.

Posdata: Aclaro que reporté las vulnerabilidades, pero es imposible cuando las empresas no se disponen a colaborar para solucionar estas vulnerabilidades donde a la final, los afectados somos nosotros. En otros entornos, será tu novi@, tus amigos, tu familia, tú. Y dime ¿Estás dispuesto/a a exigir que las empresas fortalezcan su seguridad?.

Cualquier sugerencia/duda u opinión es bien recibida.

A continuación, les dejo un vídeo que he preparado para la explicación de éste post :). Un abrazo para todos.


Próximamente puedo mostrar más fallos a más empresas ;D, dependiendo de cómo les parece éste post.
Become the change you seek in the world. -Gandhi.


Video acid repito video caido   :P

Youtube: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Excelente aporte! Son bienvenidos más fallos  ;D

Saludos!!

Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Para ustedes y para los demás, ya quedó de nuevo subido el vídeo xD. La calidad estaba un poco baja, así que decidí subirlo con una mejor calidad(1080p).

Un abrazo.
Become the change you seek in the world. -Gandhi.


Buen post, parece mentira que las empresas con tal de que ellos sigan teniendo sus ganancias le importen tan poco sus usuarios. Es una realidad que se refleja en muchas empresas y sus paginas web.
Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa.

Blaise Pascal (1623-1662)

Me encanto tu post y tu video , me subcribo y espero que sigas subiendo post y videos , explicas muy bien

Gran aporte! Lo peor es cuando no muestran interes en lo que les estas reportando ...

Muy interesante, apoyo la iniciativa de seguir compartiendo estas experiencias!

Muchas gracias !
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Julio 03, 2019, 05:34:13 AM #8 Ultima modificación: Julio 03, 2019, 05:39:27 AM por side000
Es claro que "En cualquier problema con n ecuaciones, siempre habrá n+1 incógnitas."

A medida que un programa se vuelve avanzado o de otra forma un proyecto se vuelve más complejo mucho más difícil es mantenerlo, los programas en si o las máquinas no cometen errores son siempre debido a factores humanos, así que mientras mas complejos se vuelven más difícil de mantener.

Imaginense que estas delante de un proyecto como Facebook, con infinitas variables y objetos: hay partes que se vuelven inmanejables y podrían fallar, en un cuerpo humano por ejemplo esos fallos son por ejemplo el cáncer: "Todo se desmorona si el centro no se puede sostener".

En proyectos como Facebook esto se vuelve real y son los más expuestos a vulnerabilidades.

Yo una vez reporte un error de un XSS imperdonable en Facebook y me di cuenta de la gran verdad: Es imposible hacer algo perfecto, por eso los expertos a menudo dicen cosas como "Nada es 100%" y están en lo cierto.

Por eso siempre hay que tener claro la teoría de los sistemas, hacer lo más independiente la comunicación entre objetos y hacer interfaces adecuadas, como por ejemplo:

El objeto cliente (frontend) debería comunicarse con la base de datos (backend) de forma cliente-servidor con al menos un token para cada petición en caso de fallo el acceso se anula, y el objeto se pierde pero no la función base de datos; Ese tipo de soluciones que permitieron a los astronautas en sus misiones consecuentes de volver a la tierra a pesar de tener un falla catastrófica que los impidio llegar a la luna.

Genial, muy bueno el tema

CitarPróximamente puedo mostrar más fallos a más empresas ;D, dependiendo de cómo les parece éste post.

Estaría de 10, estos temas en la práctica son los que te abren la cabeza sobre que ningún sistema profesional es 100% infalible.
No podemos resolver problemas pensando de la misma manera que cuando los creamos.