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 full-size slide

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

    View full-size slide

  3. Seguridad ofensiva
    +10y experiencia

    View full-size 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 full-size slide

  5. facebook.com

    View full-size 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 full-size slide

  7. Implementación de Google

    View full-size slide

  8. Implementación de Facebook

    View full-size slide

  9. 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 full-size slide

  10. 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 full-size slide

  11. 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 full-size slide

  12. 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 full-size slide

  13. 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 full-size slide

  14. 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 full-size slide

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

    View full-size slide

  16. Vuln trivial en WhatsApp Web

    View full-size slide

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

    View full-size slide

  18. Misma vulnerabilidad, riesgo menor

    View full-size slide

  19. 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 full-size slide

  20. 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 full-size slide

  21. Que es un bug bounty?

    View full-size slide

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

    View full-size slide

  23. Muchas gracias!

    View full-size slide

  24. 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 full-size slide