Protector ¿de que me protege? ¿cuales son los peligros?

Requested and Answered by Bezoops on 24-Jan-2008 23:13

Protector ¿de que me protege? ¿cuales son los peligros?

Aclaraciones de algunas opciones de Protector


Centro de protección
El listado de la parte inferior de la página es el registro de eventos o log.

Para indicar que eventos se graban, configure las siguientes opciones de las preferencias del módulo:

- Nivel de registro de eventos
- Acción al detectar una contaminación de variables
- Acción al detectar un comentario solitario
- Acción al detectar una UNION
- Acción contra ataques F5
- Acción contra Crawlers de rastreo reiterado

Asesor de seguridad
Consejos para mejorar la protección

Verificar si Protector funciona correctamente
En "Bloqueo de Ataques", desactivar previamente "Bloqueo de IP". Después Pulsar sobre los enlaces de aquí abajo (1 y 2)
Si Protector funciona, han de aparecer resultados en Registro log en listado inferior de "Bloqueo de Ataques". Después, vuelva a activar "Bloqueo de IP".

Contaminación de variables. (Intento de modificar una variable de Xoops desde dirección URL):
... Enlace 1 donde pulsar
Etiqueta de comentario php /* solitaria (sin su pareja de cierre */):
... Enlace 2 donde pulsar

Gestor de prefijos
Una opción muy interesante es la de hacer copia de seguridad de la base de datos (opción backup) sin necesidad de usar phpMyAdmin.

Breve descripción de los tipos de ataque
DoS (denegación de servicio): desde varios ordenadores de usuarios del mundo
(con troyanos dentro y sin que lo sepan) realizan peticiones constantes a un
sitio web a la vez y en muy poco tiempo hasta la saturación. Entonces, a un
usario normal que intenta visitarla, el servidor le deniega dicho servicio.

Bytes nulos: atacantes insertan caráteres (bytes) con valores nulos en una
URL válida, para hacer que el programa de un error y muestre en el mensaje de
salida el código fuente. En xoops, dado que el código es abierto y accesible,
suelen buscar otros datos, como el prefijo de la base, path de directorios
críticos, scripts que permiten subir ficheros, nombres de usuarios,
contraseñas, direcciones de correo, etc. Y con esos datos, el atacante
descubrirá como enviar comandos mucho más peligrosos.

Crawlers (robots indexadores): los robots que rastrean en busca de datos en
los sitios web, pueden ser bien o malintencionados. Se identifican a través
de una serie de carácteres llamados User-Agent y que se usan para reconocerlos.
Desde luego, los mejor bienvenidos son los de Google, Yahoo, etc, que situan tu
página en una buena posición, pero otros suplantan su identidad para buscar
datos como direcciones de correo, llegando incluso algunos a robar una buena
cantidad de ancho de banda. También los pueden programar para buscar información
que permita hacer cosas mas dañinas, como buscar vulnerabilidades conocidas.
Y por otro lado, existen listas con los troyanos y donde se han introducido
troyanos, que se pueden activar mucho tiempo después, para realizar ataquesde DoS.

Inyección SQL: a través de comandos SQL en la URL o en los campos de formularios,
el atacante intenta realizar operaciones que permitan ver el contenido de la
base de datos (Select), o peor todavía, manipularla borrando datos, insertándolos
o modificándolos (Insert). No solo los datos de la base, sino también su
estructura, lo que permitiría otros ataques más peligrosos.

Comentario solitario: como sabeis, para poner un comentario dentro del código
de un programa php, se usa /* comentario */. Pues una de las formas de intentar
introducir por ejemplo, un comando SQL, consiste en escribirlo abriendo el
comentario sin cerrarlo. Para php es solo un comentario, pero en ocasiones,
el servidor lo lee y lo ejecuta pues para él no es un comentario. Para evitarlo
se cierra el comentario y ya no pasa al servidor.

XSS (cross-site scripting, programación de sitio cruzado): en este caso el
ataque se realiza al usuario que visita la web (y sin que lo sepa) aprovechando
alguna vulnerabilidad del navegador, e introduciendo un scrip en su ordenador
que después se ejecuta en el servidor (por eso el nombre de cruzado). Puede ser
inofensivo, o más peligroso como robar la cookie del usuario para suplantar
su sesión.

Ataques de fuerza bruta: se mandan de manera continua datos de entrada a un
formulario, como por ejemplo nombre y contraseña, probando hasta dar con la
correcta. Se usan listados con las más habituales (1111, 9999, año de nacimiento,
nombres típicos como admin, password, clave, webmaster,...), y después de
manera aleatoria.

Robo de sesión: el atacante intenta suplantar al administrador para tener sus
privilegios obteniendo los datos de la sesión que tiene abierta. Una de las
formas de hacerlo es robando una cookie.

Salto de directorio: se introducen los dos puntos (..) de subir y bajar de
directorio para llegar a otros a los que no se puede acceder directamente, como
mas allá del public_html. Ej: ../../../etc/password

Contaminación de variables del sistema: se intentan alterar las variables php
del servidor o de xoops para obtener permiso de acceso a determinadas
zonas del sistema.

Ataques F5: consiste en realizar peticiones constantes de recarga, como pulsando
la tecla F5 en el programa del navegador.

Resumen de los peligros de ataque con éxito

- DoS - Denegación de Servicio [7,10]
- Bad Crawlers - Robots rastreadores que buscan en las páginas, eMails... [2,10]
- SQL Injection - Inyección SQL [2,3,5,8]
- XSS - Ataque de sitio cruzado [2,4,9]
- System globals pollution - Contaminación de variables globales del sistema. [1,3,5,8]
- Session hi-jacking - Robo de sesión [2,4,5]
- Null-bytes - Bytes nulos. [1,8]
- Wrong file path specifications - Error en las especificaciones de ficheros. [1]
- Algunos tipos de CSRF (Falsificación peticiones sitio cruzado) (fatal in XOOPS <= 2.0.9.2) [2,4,9]
- Brute Force - Fuerza Bruta. [5,10]

[1] Obtención de información para preparar ataque. Rutas, ingeniería inversa,...
[2] Robo de información confidencial (usuarios, correos, tarjetas,...)
[3] Control sobre la base de datos, incluido su borrado total (inhabilitación del sitio)
[4] Robo de sesiones de otros usuarios para suplantación. Acceso total si es del administrador.
[5] Obtención de claves de entrada.
[6] Escalada de privilegios. Puede manipular el sitio. Si existe programa de acceso a ficheros por el administrador, puede borrar todos los ficheros de la aplicación.
[7] Impide acceso de usuarios legítimos. Bloqueo total de acceso al sitio.
[8] Control completo del sitio, de las aplicaciones y de las bases de datos. Puede obtener lo que quiera o destruirlo.
[9] Introducción de troyanos u otros programas en ordenadores de otras personas que acceden al sitio.
[10] Lentitud del sitio, por robo del ancho de banda o peticiones reiteradas

Variables que vigila Protector
Variable Register Globals

PHP tiene una serie de registros o parámetros, que almacenan determinada
información, alguna dinámica que contiene valores que usa esa aplicación (la IP
del usuario, puerto remoto, ID de sesión, valor actual de la cookie, nombre
usuario, rutas, etc) y otras estáticas (aunque se pueden modificar) como la
versión PHP, rutas, librerías usadas, método de autentificación, etc.

Si un atacante puede leer estos parámetros, tiene información para empezar
a preparar el ataque. Y si los puede modificar, ya puede atacar.

Si dichos parámetros están activados como de acceso global, son accesibles
desde cualquier código que se logre introducir en la aplicación o en el servidor.
A veces está register_globals = On para que antiguas aplicaciónes puedan compartir
datos entre todas sus partes, como una Urls, sesión,etc.

Con las nuevas versiones de PHP, no hace falta que estén visibles globalmente (en Off),
pues Xoops u otro programa bien diseñado, puede grabar y usar las que necesite para
gestionar sus valores.

En On y en una aplicación no protegida, un atacante puede muy facilmente modificar
los valores y las variables usando esa aplicación, a traves sus formularios o de
la URL. Puede obtener los datos que desee o destruir la web.

Si usa aplicaciones antiguas que lo necesitan en On, mantenga limpia su web de
carpetas y ficheros que no use y de aplicaciones no protegidas (xoops 2.0.9).
El riesgo es menor, pero no deja de existir.

Variable Allow Url FOpen

Como su nombre indica al traducirlo, permite (allow) que desde una URL (en un
navegador) se pueda "abrir" (osea, enviar y ejecutar) un fichero (FileOpen).

Un atacante puede realizar cualquier acción mediante Http o Ftp contra el servidor.
Por eso es tan peligroso mantener este parámetro en On. No solo peligra Xoops,
sino el propio servidor.

Si no se puede modificar, contacte con el servicio técnico de su alojamiento web,
pues algunos tienen instaladas otras herramientas que lo protegen. Si no las tienen,
cambie de alojamiento inmediatamente por inseguro.

Variable Use Transs ID

Un usuario que hace entra/login en una aplicación, mientras navega por sus páginas,
ha de mantener su identidad para asignarle los permisos de acceso a determinados
recursos. Puede ser un administrador o un usuario registrado. Se puede mantener
la identidad de su sesión de varias maneras:

1- con ID de sesión (en la url se vé, .php&PHPSESSID=3bc4992818eb67Bfdq8..., )
2- mediante cookies
3- combinando las dos.

Xoops intenta instalar una cookie, pero si no puede, mantiene la sesión a traves de una ID.

Una sesión es el tiempo desde que se Entra/login hasta que se acaba de alguna
de estas maneras:
1- por usuario con salir/logout
2- por cerrar el navegador
3- por caducidad de un tiempo de expiración de sesión

El robo de sesión consiste en obtener esa ID o conseguir una copia de la cookie
y navegar en esa web (sin hacer login de usuario-contraseña) como si fuese ese
usuario. Si roba la del administrador, tienen sus privilegios.

GRACIAS

Espero que todo esto le sea útil para entender mejor este programa y darse cuenta
de que ahora está un poco más seguro con su Xoops gracias a este gran trabajo.
Gracias Gijoe y amigos

Por Mel Bezos www.bezos.cc

This Q&A was found on XOOPS España : http://www.esxoops.com/modules/smartfaq/faq.php?faqid=2