Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Galería de Fallos en Unicornios

Galería de Fallos en Unicornios

Digital Summit 2017, Buenos Aires, Argentina

andresriancho

June 29, 2017
Tweet

More Decks by andresriancho

Other Decks in Programming

Transcript

  1. Galería de Fallas de Seguridad en
    Unicornios
    Digital Summit

    View Slide

  2. /me
    ● Experto en seguridad en aplicaciones (web|API)
    ● Desarrollador (Python!)
    ● Open Source evangelist
    ● Lider de proyecto w3af
    ● Consultor Independiente

    View Slide

  3. Seguridad ofensiva
    +10y experiencia

    View Slide

  4. Agenda
    ● Comprometer cuentas de Facebook
    ● Uber
    ○ Comprometer cuentas
    ○ Viajes gratis
    ○ SQL injection
    ● Lectura de archivos arbitrarios en WhatsApp
    ● Ejecución de comandos en X
    ● Bug bounties
    ● #ItAffectsMe
    ● Preguntas

    View Slide

  5. facebook.com

    View Slide

  6. Password reset
    ● Las funcionalidades de password reset son muy sensibles y, en algunos
    casos, inseguras. En este escenario la vulnerabilidad más buscada es
    cambiar la contraseña de un usuario arbitrario.
    ● En general la funcionalidad de password reset se implementa así:
    ○ Usuario inicia el proceso ingresando su dirección de email
    ○ Aplicación envía un token generado al azar al email del usuario
    ○ Usuario prueba su identidad enviando el token a la aplicación y cambia su contraseña

    View Slide

  7. Implementación de Google

    View Slide

  8. Implementación de Facebook

    View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. Soluciones
    ● Utilizar tokens más largos: 128 chars [a-zA-Z0-9]
    ● Implementar límite de tres intentos para cada proceso (AVoywo13) de
    password reset
    POST /recover/as/code/ HTTP/1.1
    Host: beta.facebook.com
    lsd=AVoywo13&n={code}

    View Slide

  13. View Slide

  14. Password reset
    En general la funcionalidad de password reset se implementa así:
    ○ Usuario inicia el proceso ingresando su dirección de email
    ○ Aplicación envía un token generado al azar al email del usuario
    ○ Usuario prueba su identidad enviando el token a la aplicación y cambia su contraseña
    Cuales son las Top 3 peores fallas que pueden existir en este proceso?

    View Slide

  15. Password reset #FAIL
    POST /password-recovery/start HTTP/1.1
    Host: api.uber.com
    {"email": "[email protected]"}
    HTTP/1.1 200 OK
    Content-Type: application/json
    {"message": "Email sent",
    "token": "0c33cb0b-b521-462f-b34c-f03f2fadd4c3"}

    View Slide

  16. View Slide

  17. View Slide

  18. Reserva un Uber
    POST /api/dial/v2/requests HTTP/1.1
    Host: dial.uber.com
    {"start_latitude":12.925151699999999,
    "start_longitude":77.6657536,
    "product_id":"db6779d6-d8da-479f-8ac7-8068f4dade6f",
    "payment_method_id":"563d569b-b598-4cf4-88c1-94a56bd4d73c"}
    Durante un proceso de reserva de un auto de Uber se envían múltiples peticiones
    HTTP desde la aplicación mobile a la REST API. Una de esas peticiones está
    asociada al pago:

    View Slide

  19. Viaja gratis
    POST /api/dial/v2/requests HTTP/1.1
    Host: dial.uber.com
    {"start_latitude":12.925151699999999,
    "start_longitude":77.6657536,
    "product_id":"db6779d6-d8da-479f-8ac7-8068f4dade6f",
    "payment_method_id":"xyz"}
    En algunos casos el manejo incorrecto de excepciones o casos de borde
    terminan mal. En esta vulnerabilidad vemos como el manejo del caso "no se
    encontró el método de pago" termina en no cobrar el viaje:

    View Slide

  20. View Slide

  21. SQL injection / Not So Bad
    Hackers detectaron una vulnerabilidad de SQL injection en ts02.uberinternal.com
    1. Fuera del datacenter de Uber
    2. Aplicación desarrollada por un tercero: appliance para análisis de riesgo
    3. Contiene informacion (no tan sensible) sobre empleados de Uber

    View Slide

  22. No budget
    ● Todas las aplicaciones van a ser atacadas
    ● Eventualmente los atacantes van a identificar vulnerabilidades y explotarlas
    ● No hay suficiente presupuesto: priorizar

    View Slide

  23. View Slide

  24. Vuln trivial en WhatsApp Web

    View Slide

  25. #FAIL

    View Slide

  26. Análisis de Riesgos
    Esta vulnerabilidad parece bastante
    seria, que podría hacer un atacante
    con ella?

    View Slide

  27. View Slide

  28. Misma vulnerabilidad, riesgo menor

    View Slide

  29. View Slide

  30. Repositorio SVN en sitio productivo
    Una vez detectado que en el sitio productivo se encuentra disponible la metadata
    de SVN en el directorio .svn es posible bajarse el código:
    Con acceso al código el atacante es trivial detectar otras vulnerabilidades.
    svn co http://www.pornhub.com/.svn/trunk

    View Slide

  31. View Slide

  32. Luego de investigar y probar...
    Fue posible para el atacante identificar:
    ● URL del servidor donde hostean el código y se realiza el desarrollo
    ● Usuario stefan
    ● Por medio de fuerza bruta, contraseña para el usuario stefan: 123456
    Con estas credenciales el atacante podría haber realizado modificaciones sobre el
    código de la aplicación Web, posiblemente para capturar tarjetas de crédito en la
    sección de pago de suscripciones.

    View Slide

  33. View Slide

  34. Que es un bug bounty?

    View Slide

  35. Vulnerabilidades reportadas
    https://goo.gl/IpGiU
    3

    View Slide

  36. View Slide

  37. Muchas gracias!

    View Slide

  38. For hire
    ¿Necesitas alguno de estos servicios?
    ● Application Penetration Test
    ● Secure Coding Training for Developers
    ● Source Code Review
    ● Cloud Security Assessment
    Escribime, puedo ayudarte a desarrollar y mantener seguras
    tus aplicaciones web.

    View Slide