Modulos de Seguridad en Servidores Web

37
FIST Conference Junio 2005 @ [email protected] Módulos de seguridad en servidores web Rafael San Miguel Carrasco Consultor de Seguridad

Transcript of Modulos de Seguridad en Servidores Web

Page 1: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Módulos de seguridad en servidores web

Rafael San Miguel Carrasco

Consultor de Seguridad

Page 2: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

PSM vs NSM Introducción Evaluación funcional

Ejecución remota de comandos arbitrarios Inyección de sentencias SQL Cross-site scripting Inclusión de ficheros PHP Fuga de información confidencial Manipulación de la cabecera Server

Conclusiones Referencias

Contenido de la presentación

Page 3: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

PSM vs NSM

El PSM (Modelo de Seguridad Positiva) se basa en identificar los patrones de

tráfico legítimo y permitir sólo aquellas peticiones consideradas como tal

El NSM (Modelo de Seguridad Negativa) se basa en identificar patrones de

ataque y permitir todo aquello que no sea considerado un ataque

El PSM se considera más efectivo:

Es la estrategia adoptada en firewalls de red Protege de ataques conocidos y desconocidos

El NSM es más straight-forward, se basa en tecnología sencilla, y además es gratuito

Page 4: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Introducción

Fácil integración en la arquitectura modular de Apache

[httpd.conf] LoadModule ...

Page 5: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Introducción

Se basa en una operativa sencilla que implementa la estrategia MITM

Page 6: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Introducción

A nivel funcional es un appliance virtual capaz de interceptar

y bloquear peticiones HTTP

Page 7: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Introducción

Múltiples mecanismos de protección frente a intrusiones

Page 8: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Introducción

La configuración se define en un fichero de texto y se compone

de directivas globales y un conjunto de reglas

Múltiples condiciones

- Acceso al script a.cgi

- Con el parámetro p

- Con el contenido “|ls”

Page 9: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Ejecución remota de comandos arbitrarios

Ejemplo de explotación de una vulnerabilidad reciente en phpBB

exploit utilizado por el gusano Santy

Page 10: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

ModSecurity bloquea la petición maliciosa y envía como respuesta

una página por defecto

Ejecución remota de comandos arbitrarios

Page 11: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Regla que detecta el acceso al script vulnerable y uno de los

caracteres incluidos en el parámetro utilizado por el exploit

Ejecución remota de comandos arbitrarios

La acción de respuesta es un redirect a la página que informa al

usuario de la condición de error detectada

Page 12: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Fragmento de código vulnerable en Geeklog

La validación del cambio

de contraseña sólo

depende de que la

sentencia SQL retorne una

fila

Inyección de sentencias SQL

Page 13: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

El formulario de autenticación de la página principal nos permite

inyectar una cadena SQL al script vulnerable

Utilizaremos Paros para interceptar la petición y

hacer los cambios necesarios

Inyección de sentencias SQL

Page 14: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Rellenamos el formulario con cualquier combinación de login

y password e interceptamos la petición en Paros

Inyección de sentencias SQL

Page 15: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Ahora sustituimos el contenido de la petición por los valores que

nos permiten inyectar una cadena SQL arbitraria

Inyección de sentencias SQL

mode=setnewpwd&passwd=xyz&rid=3’+or+uid=‘1&

Page 16: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

El ataque tiene éxito: hemos conseguido que acepte las nuevas

credenciales sin conocer la password original

Inyección de sentencias SQL

Page 17: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

La consulta que se ejecuta en el back-end es la siguiente:

Inyección de sentencias SQL

Page 18: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Podemos evitar esta vulnerabilidad incluyendo una regla en

el fichero de configuración de ModSecurity

Identificamos el script vulnerable y un patrón SQL en el

parámetro rid

Inyección de sentencias SQL

Page 19: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

La acción de respuesta en este caso consiste en invitar al usuario

a que se registre en el website

Inyección de sentencias SQL

Es una buena forma de evidenciar las medidas de seguridad sin

revelar detalles acerca de su funcionamiento

Page 20: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Cross-site scripting

Phorum es un message board con múltiples vulnerabilidades

de cross-site scripting en las versiones 3.0.x

Page 21: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Ésta es una posible configuración que nos permite bloquear

cualquier ataque de cross-site scripting

Cross-site scripting

Cuidado con los falsos positivos: muchas aplicaciones incluyen

código HTML en las peticiones de forma legítima

Page 22: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

La página de respuesta debe alertar al usuario del intento de

engaño: en este caso el atacante es la propia víctima

Cross-site scripting

Page 23: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Inclusión de ficheros PHP

OsCommerce es vulnerable al clásico ataque de inclusión de

ficheros PHP

Page 24: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Inclusión de ficheros PHP

Es posible ejecutar comandos arbitrarios a través de la shell

alojada en el servidor web del atacante

Page 25: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Inclusión de ficheros PHP

La siguiente configuración detecta el acceso directo al script

vulnerable y bloquea la petición maliciosa

Page 26: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Cuando repetimos el ataque, se obtiene un mensaje en el que

se informe al atacante de las medidas de seguridad de la web

Inclusión de ficheros PHP

Page 27: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

La facilidad de logging registra todas las peticiones maliciosas

para facilitar el análisis de intrusiones a posteriori

Inclusión de ficheros PHP

Page 28: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Fuga de información confidencial

Con la vulnerabilidad de OsCommerce es posible visualizar el

contenido de cualquier fichero del sistema

En este ejemplo vamos a acceder al fichero que almacena todas

las transacciones realizadas a través del website

Page 29: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Fuga de información confidencial

Sólo tenemos que usar la shell del ejemplo anterior, cambiando

el comando dir por more

Page 30: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

El resultado de repetir el ataque con el nuevo comando es el

contenido del fichero con tarjetas de crédito válidas

Fuga de información confidencial

Page 31: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Para evitar este tipo de intrusiones activamos el motor de filtrado

hacia fuera (FilterScanOutput) y especificamos el formato de los

datos que deben protegerse

Fuga de información confidencial

Page 32: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Cuando repetimos el ataque se obtiene el mensaje Forbidden

Fuga de información confidencial

Page 33: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Manipulación de la cabecera Server

Podemos ocultar la firma de nuestro servidor web a través de la

directiva SecServerSignature

Page 34: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Cuando un atacante recupera la etiqueta Server, obtiene

información falsa acerca del servidor instalado

Manipulación de la cabecera Server

Page 35: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Conclusiones

ModSecurity es una herramienta potente que puede proteger Apache frente a

los ataques web más comunes No tiene un impacto apreciable en el rendimiento ¡Es gratuito! (para uso personal)

Pero:

Requiere actualización manual de las firmas Puede afectar a la disponibilidad del servicio (falsos positivos) No puede gestionarse de manera centralizada No es PSM

Page 36: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Referencias

Versión reducida Red Seguridad Nº 16 Mayo 2005

Versión completa http://www.rafaelsanmiguel.com/articulos/ModSecurity.pdf

Versión traducida http://www.owasp.org/docroot/owasp/misc/ModSecurityforApache_OWASP.pdf

Página oficial de ModSecurity http://www.modsecurity.org

Page 37: Modulos de Seguridad en Servidores Web

FIST Conference Junio 2005 @

[email protected]

Attribution. You must give the original author credit.

For any reuse or distribution, you must make clear to others the license terms of this work.

Any of these conditions can be waived if you get permission from the author.

Your fair use and other rights are in no way affected by the above.

This work is licensed under the Creative Commons Attribution-NoDerivs License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nd/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Creative Commons Attribution-NoDerivs 2.0

You are free:

•to copy, distribute, display, and perform this work

•to make commercial use of this work

Under the following conditions:

No Derivative Works. You may not alter, transform, or build upon this work.