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. /me • Experto en seguridad en aplicaciones (web|API) • Desarrollador

    (Python!) • Open Source evangelist • Lider de proyecto w3af • Consultor Independiente
  2. 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
  3. 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
  4. 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}
  5. 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?
  6. 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"}
  7. 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:
  8. 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:
  9. 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
  10. No budget • Todas las aplicaciones van a ser atacadas

    • Eventualmente los atacantes van a identificar vulnerabilidades y explotarlas • No hay suficiente presupuesto: priorizar
  11. 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
  12. 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.
  13. 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.