Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso...

23
Malas Compañías Fabian Martinez Portantier Co-Founder, Securetia OWASP LATAM Tour 2017 - Argentina

Transcript of Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso...

Page 1: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Malas Compañías

Fabian Martinez PortantierCo-Founder, Securetia

OWASP LATAM Tour 2017 - Argentina

Page 2: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Caso Real: Penetration Test

No se va a divulgar el nombre real del cliente

El cual maneja información confidencial

Page 3: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Caso Real: Penetration Test

Infraestructura con dos aplicaciones web:

-> Sitio web principal de la empresa-> Aplicación para carga de reclamos

Page 4: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Sitio Web Principal

-> Ubuntu GNU/Linux-> Apache HTTPd-> MySQL-> Wordpress

Page 5: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Sitio Web Principal

-> Ubuntu GNU/Linux- Actualizado

-> Apache HTTPd-> MySQL-> Wordpress

Page 6: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Sitio Web Principal

-> Ubuntu GNU/Linux- Actualizado

-> Apache HTTPd- Actualizado

-> MySQL-> Wordpress

Page 7: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Sitio Web Principal

-> Ubuntu GNU/Linux- Actualizado

-> Apache HTTPd- Actualizado

-> MySQL- Sólo accesible desde localhost

-> Wordpress

Page 8: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Sitio Web Principal-> Ubuntu GNU/Linux

- Actualizado-> Apache HTTPd

- Actualizado-> MySQL

- Actualizado y sólo accesible desde localhost-> Wordpress

- Desactualizado, sin nada grave

Page 9: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Aplicación de Reclamos

-> Ubuntu GNU/Linux-> Apache HTTPd-> PHP 5.x

* Aplicación legacy, sin mantenimiento* Evidentemente, desarrollada muy rápido

Page 10: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Aplicación de Reclamos

Vulnerabilidad en el módulo de file upload

-> Permitía subir cualquier tipo de archivo-> Permitía acceder a los archivos subidos

Page 11: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Aplicación de Reclamos

Subir cualquier archivo + Accederlo = Web Shell

Page 12: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Remote Hell - PHP Shell

-> Shell PHP propia-> 54 líneas de código-> Soporta GET y POST-> Permite autenticar las peticiones-> Servidor: rhell.php-> Cliente: rh (Bash)

Page 13: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Remote Hell - PHP Shell - ¿Why?

-> Curiosidad

-> No querer meter nada “raro” en el server

Page 14: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Remote Hell - PHP Shell

# enviar config.php remoto a nuestro equipo

rh cat config.php | grep PASSWORD > pass.txt

https://github.com/portantier/rhell

Page 15: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Aplicación de Reclamos

-> Shell con permisos de www-data (apache)-> Base de usuarios en formato YAML-> Usuarios con password por defecto (123456)

(la aplicación NO permitía cambiar password)

Page 16: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Aplicación de Reclamos

La aplicación, en si misma, no contenía ningún dato de interés, pero...

Page 17: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Apache

MySQL

Wordpress Reclamos

Todo en el mismo servidor !

Page 18: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Elevación de Privilegios

1) Shell con acceso al filesystem2) Acceso a wp-config.php (password MySQL)3) Login a la base de datos4) Extracción de datos confidenciales5) Usuarios y hashes de Wordpress6) Cracking -> Passwords de Wordpress7) Reutilización de Passwords -> más accesos

Page 19: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Solución: Separación de Ambientes

1) Servidores separados físicamente

2) Servidores virtuales

3) Contenedores (docker)

Page 20: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Solución: Análisis de MIME Type

1) Definir formatos de archivo permitidos

2) Verificar tipo de archivo subido

3) Bloquear o eliminar archivos no permitidos

Page 21: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Solución: Apache mod_app_armour

1) Cada virtual host con permisos diferentes

2) Definición de permisos granulares

Page 22: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Solución: Apache mod_security

1) Reglas para bloquear archivos con código

2) Detección de exfiltración de datos

Page 23: Malas Compañías - OWASP · Elevación de Privilegios 1) Shell con acceso al filesystem 2) Acceso a wp-config.php (password MySQL) 3) Login a la base de datos 4) Extracción de datos

Muchas Gracias!

¿Preguntas?