Post on 23-Jun-2015
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Módulos de seguridad en servidores web
Rafael San Miguel Carrasco
Consultor de Seguridad
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Introducción
Fácil integración en la arquitectura modular de Apache
[httpd.conf] LoadModule ...
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Introducción
Se basa en una operativa sencilla que implementa la estrategia MITM
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Introducción
A nivel funcional es un appliance virtual capaz de interceptar
y bloquear peticiones HTTP
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Introducción
Múltiples mecanismos de protección frente a intrusiones
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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”
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Ejecución remota de comandos arbitrarios
Ejemplo de explotación de una vulnerabilidad reciente en phpBB
exploit utilizado por el gusano Santy
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
ModSecurity bloquea la petición maliciosa y envía como respuesta
una página por defecto
Ejecución remota de comandos arbitrarios
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Rellenamos el formulario con cualquier combinación de login
y password e interceptamos la petición en Paros
Inyección de sentencias SQL
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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&
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
El ataque tiene éxito: hemos conseguido que acepte las nuevas
credenciales sin conocer la password original
Inyección de sentencias SQL
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
La consulta que se ejecuta en el back-end es la siguiente:
Inyección de sentencias SQL
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Cross-site scripting
Phorum es un message board con múltiples vulnerabilidades
de cross-site scripting en las versiones 3.0.x
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
É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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Inclusión de ficheros PHP
OsCommerce es vulnerable al clásico ataque de inclusión de
ficheros PHP
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Inclusión de ficheros PHP
Es posible ejecutar comandos arbitrarios a través de la shell
alojada en el servidor web del atacante
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Inclusión de ficheros PHP
La siguiente configuración detecta el acceso directo al script
vulnerable y bloquea la petición maliciosa
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
La facilidad de logging registra todas las peticiones maliciosas
para facilitar el análisis de intrusiones a posteriori
Inclusión de ficheros PHP
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Fuga de información confidencial
Sólo tenemos que usar la shell del ejemplo anterior, cambiando
el comando dir por more
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Cuando repetimos el ataque se obtiene el mensaje Forbidden
Fuga de información confidencial
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Manipulación de la cabecera Server
Podemos ocultar la firma de nuestro servidor web a través de la
directiva SecServerSignature
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
Cuando un atacante recupera la etiqueta Server, obtiene
información falsa acerca del servidor instalado
Manipulación de la cabecera Server
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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
FIST Conference Junio 2005 @
rafael.sanmiguel@dvc.es
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.