Los aspectos de seguridad tienen una importante componente técnica que no podemos ovbiar. Lo que sigue intenta brindar algunas pistas.

Con la sencillez que ofrecen hoy día los instaladores de los sitios Web de administración de contenido (CMS como Joomla, Moodle, WordPress, etc.) es muy común que, una vez que ha finalizado la instalación, el interesado sólo se dedique a cargar su propia información y configurar las opciones (más que abundantes) con lo que, en realmente poco tiempo, se puede tener un importante y profesional sitio Web.

Sin dudas, el uso de estas aplicaciones es tentador por su facilidad de instalación, potencia, variedad de opciones e importantes herramientas que brindan a administradores y usuarios un sinnúmero de ventajas. La eficiencia del lado del usuario, y aún del administrador-Webmaster, es comprobada.

Sin embargo, la contraparte no es tan alegre ya que, normalmente, para poder iniciar o completar la instalación, el mismo proceso indica que ciertos directorios deben tener acceso total (0777) al igual que algún que otro archivo de configuración, lo que debe ser llevado a cabo si se quiere instalar el sistema, desde ya. Una vez finalizada la instalación y, al ingresar por vez primera al sistema desde la Web, en algunos casos (¡los menos!) se previene sobre la situación de modo que la persona pueda asignar relativa seguridad a su sitio Web y al resto de los usuarios que comparten un mismo servidor o unidad.

¿Por qué es tan riesgosa la situación?

Un directorio con acceso total (0777) significa TRES cosas desde el lado de un visitante anónimo por medio de la Web:

1) Puede LEER el contenido de un directorio

2) Puede ESCRIBIR en el directorio (se puede no sólo subir nuevos archivos sino romper o sobrescribir los actuales con el consiguiente daño que ello pueda generar a la funcionalidad de su sitio Web)

3) Puede EJECUTAR lo que se haya subido o modificado.

El punto esencialmente peligroso, como se dará cuenta, es el último.

Es importante notar que la gran mayoría de la gente que sube imágenes hace sólo eso: sube una foto. No intenta romper ni hackear un sitio Web.

El problema se suscita cuando alguien o, mejor dicho, un sistema de monitoreo de determinados CMS o tipos de instalaciones, encuentra un directorio con acceso total: sube lo que necesite para sus propósitos y ¡voila! lo ejecuta. Puede ejecutar un script o sistema para mandar spam desde su dominio; puede intentar propagar troyanos; puede poner en marcha un sistema de PHISHING (conocidos como sistemas para el robo de identidad personal sensible y confidencial) o puede sólo querer dejar su “huella” sobre su pseudo-capacidad (que no habría sido posible sin un acceso global que muy sencillamente se lo ha permitido).

Ahora bien. Si un sitio necesita que los visitantes suban imágenes y de un script que trabaje sobre ellas (creación de miniaturas, resampleos, etc.) necesitará de permisos 0777.

La pregunta que debemos hacernos salta a la vista:

¿Cómo mantener la funcionalidad y no descuidar la seguridad del sitio Web?

Intentaré brindar posibles respuestas.

Algunas sugerencias para mitigar el conflicto

Existen muchas opciones a la hora de asegurar un sitio Web.

Algunas son llevadas a cabo a un nivel interno por parte de nuestra empresa por lo que podemos hacer frente a los miles de intentos a los que un servidor en Internet es afectado cada día… sí, ¡miles al día!

Para comprobarlo y a simple modo ilustrativo, busque “joomla hacking” (recuerde: Joomla es el nombre de un administrador de contenido muy conocid, puede buscar por otro si lo desea) en GOOGLE y verá importante cantidad de enlaces que evidencian la situación.

Veamos las opciones:

Primer caso: acceso global FUERA de public_html

En lo personal, cada vez que necesito un directorio con permisos global (0777), lo pongo al MISMO NIVEL que public_html y no DENTRO de public_html. IMPORTANTE: Nunca asigne permiso 0777 al directorio public_html

Cuando un visitante ingresa a su sitio Web de la forma www.ejemplo.com, está ingresando al servidor que aloja su cuenta y a una estructura que es algo así cómo: /home/ejemplo/public_html. Es particular accede a un archivo del tipo index.html o index.php quedando así el acceso real: /home/ejemplo/public_html/index.html o /home/ejemplo/public_html/index.php

En nuestro ejemplo, y desde la Web, NO se tiene acceso a /home/ejemplo ya que el mismo servidor Web se encarga de “rutear” TODOS los accesos al directorio antes mostrado: /home/ejemplo/public_html

Si se pone una carpeta con acceso global en /home/ejemplo/fotos es inaccesible desde la Web debido a que NO SE PUEDE ir hacía atrás desde la ubicación BASE que es: /home/ejemplo/public_html. No hay manera.

En éste escenario, el directorio fotos está protegido a pesar de tener acceso global debido a la naturaleza misma del servidor Web y no a un principio de seguridad que puede implementarse.

La ventaja queda clara aunque tiene una complejidad que no resulta muy cómoda de implementar: es necesario un script que sepa subir archivos fuera de la estructura accesible desde la Web. Si bien es para nada complejo, implementarlo puede resultarle en un cierto dolor de cabeza. Si le interesa, puedo brindarle algún script a modo de ejemplo. Su uso es libre (GNU).

Segundo Caso: DENEGAR ejecución de todo tipo de archivo MENOS de imágenes

En éste escenario UD. tiene un directorio como el que sigue (a modo de ejemplo siempre): /home/ejemplo/public_html/images

Para que sólo se vean los archivos de imágenes del tipo que desee (jpeg, jpg, gif, etc.), deberá crear un archivo que llamará así: “.htaccess” (el punto inicial es importante) y lo subirá al directorio que tiene las imágenes (/home/ejemplo/public_html/images en nuestro ejemplo)

El contenido del archivo es el que sigue:

# ————————————————————–
# DIRECTIVAS GENERALES
# ————————————————————–
# Evitar acceso por el navegador a una carpeta sin “index”:
Options All -Indexes

# Evitar el listado de directorios:
IndexIgnore *

# Evitar EXEC de scripts
RemoveHandler cgi-script .pl .py .cgi

# ————————————————————–
# No permitir ningún tipo de archivo
# ————————————————————–
<Files *>

# Primero controlaremos las directivas ALLOW y luego DENY
# Significa que debemos especificar TODO lo que permitiremos explicitamente.
Order allow,deny

# Si una directiva ALLOW se cumple, el acceso es concedido (en el presente bloque).

# Si ninguna directiva ALLOW se cumple, se examinan las directivas DENY

# Al ser DENY la directiva que se examina al final, debemos poner todo lo que
# deseemos denegar o nada para que se tome el default de
# la directiva que es: FROM ALL (denegar a todos los orígenes)

# Al NO permitir el acceso desde ningún host o IP al contenido del directorio actual
# (y todos los que se encuentran dentro de éste), no es necesario especificar la
# directiva DENY ya que se toma el default: a todos (FROM ALL)
# Deny from all

</Files>

# ————————————————————–
# Sólo permitir estos tipos de archivos
# ————————————————————–
<FilesMatch “\.(jpeg|jpg|swf|png|xml|gif|ico|html)$”>

# Si se ingresó a este bloque, es que se trata de un tipo de archivo (extension o
# parte final del mismo) permitido (por el FilesMatch)

# Primero controlaremos las directivas ALLOW y luego DENY
# Significa que debemos especificar TODO lo que permitiremos explicitamente.
order allow,deny

# Como se trata de un Order que tiene por default a denied, debemos indicar una
# directiva del tipo ALLOW.  Si se quita la linea que sigue, es denied por default
# (tal lo que se acaba de explicar)
allow from all

</FilesMatch>

# ————————————————————–
# Lo que sigue es a los solos efectos demostrativos y es totalmente equivalente a la
# sección anterior salvo por el esquema de control de las directivas Allow y Deny
# que es el inverso.
# SOLO PERMITIR ESTOS TIPOS DE ARCHIVOS
# ————————————————————–
<FilesMatch “\.(jpeg|jpg|swf|png|xml|gif|ico|html)$”>

# Primero se controlan las directivas DENY y luego ALLOW
# Significa que debemos TODO lo que NO se permite y, sino, es concedido el
# acceso por default
order deny,allow

# Como se trata de un Order que tiene por default el permitir el acceso, NO es necesario
# dar mayores detalles por lo que no es necesaria una directiva ALLOW: allow from all

</FilesMatch>

Sólo es necesario que lo agregue en el directorio protegido. Si, por ejemplo, dentro del directorio con acceso global de nuestro ejemplo (/home/ejemplo/public_html/images) tiene otro directorio también con acceso global (digamos: /home/ejemplo/public_html/images/files) NO necesita ponerlo dentro del directorio “files” ya que se toma la configuración del anterior. De todos modos, si lo copia en todos y cada uno de los directorios con acceso global (0777) no hay problema. Funciona igual.

Con éste archivo NO se impide que se suba NINGÚN tipo de archivo al directorio comprometido, sólo se impide que se EJECUTEN otros archivos que no sean los tipos de imágenes especificados (pueden ser los tipos de archivos que desee).

No es una solución realmente segura en su totalidad debido a que varias vulnerabilidades han sido explotadas por medio de imágenes especialmente preparadas. La ventaja es que no son muy frecuentes los ataques desde imágenes ya que los sistemas de búsqueda prefieren no complicarse y van detrás de sitios sin protección alguna. Piense que son sistemas que corren en modo automático las 24 horas y que avisan al “dueño” si se pudo entrar. Si se encuentran con una traba como la descrita cambian de dominio (casi siempre) salvo que alguien quiera dañarle puntualmente.

Una consideración final

La seguridad de un sitio Web debe ser mantenida entre ambas partes: prestador del servicio y cliente.

El proveedor de hosting debe contemplar las correspondientes actualizaciones de seguridad, upgrades de servicios y demás aspectos ligados a la seguridad de servidores que utilice (ej: modsecurity en Apache)

La parte del cliente puede resultar compleja o no, dependiendo de sus conocimientos, pero independientemente de ello, es necesario invertir tiempo en el tema seguridad de un sitio Web. El medio lo requiere. Internet no está libre de personas mal intencionadas que intentarán utilizarla para fines personales y, muy a menudo, con delictivos propósitos.

Reciban un cordial saludo,

Julio Alfredo Botto
www.sectorhosting.com

Adenda (por la implementación de Suexec):

Si se ha activado el módulo suExec y PHPsuExec, deberá asignar el permiso 775 en lugar de 777 cuando requiera accesibilidad global. De no hacerlo, se recibirán errores 500 (Internal Web Server Error) que indican la asignación inválida de un permiso en un script CGI o PHP.

de www.hispasec.com

El día 7 de junio, se descubría una grave vulnerabilidad en unos ActiveX de Yahoo! Messenger que permitía la ejecución de código arbitrairo a través de la web. El código necesario para aprovechar el problema se hizo público, y obligó a Yahoo! a publicar, apenas unas horas después, una nueva versión de su producto. Ofrecemos una prueba de concepto para que cualquiera pueda comprobar a qué se está expuesto con esta vulnerabilidad.

Las dos vulnerabilidades se encontraban en las utilidades Webcam Image Upload y View de Yahoo! Estos Controles Active X son instalados por defecto como parte de Yahoo! Messenger y son accesibles a través de Internet Explorer. Esto permite crear páginas especialmente manipuladas que ejecuten código en el sistema con los privilegios del usuario que lance la aplicación. El problema concreto reside en Yahoo! Webcam Upload (ywcupl.dll) y Yahoo! Webcam Viewer (ywcvwr.dll) y en sus respectivas propiedades “server”. Se puede provocar un desbordamiento de pila que conllevaría una ejecución de código. Las versiones vulnerables de estas librerías son la 2.0.1.4 (y anteriores) para ambas.

Lo que hace realmente peligrosa esta vulnerabilidad, es que el problema es aprovechable a través de Internet Explorer, capaz de acceder a esas DLL a través de ActiveX. Yahoo! actuó rápidamente y pocas horas después de hacerse público el anuncio lanzó su versión 8.1.0.401, que solucionaba el problema sustituyendo a la 8.1.0.249.

En Hispasec hemos preparado una prueba de concepto que aprovecha la vulnerabilidad y permite la descarga y ejecución de código con sólo visitar una página web. El archivo de prueba que hemos preparado se descarga al directorio raíz (C:) del usuario con nombres aleatorios compuestos por una sola letra (con el formato X.exe). El programa descargado es una aplicación inofensiva alojada en nuestros servidores, que simula que la pantalla se derrite. Cuando se cierra esta aplicación, el proceso explorer.exe puede ser reiniciado, sin causar perjuicio alguno en el sistema. Después de realizar la prueba, si se es vulnerable, se recomienda borrar el archivo descargado. Algunos antivirus detectarán la página que aprovecha la vulnerabilidad como troyano, y el programa como “joke”, o broma, pero insistimos en lo inocuo de la prueba de concepto y el programa.

La prueba de concepto está alojada en: (ATENCIÓN: Si se visita con Yahoo! Messenger sin parchear e Internet Explorer, descargará y ejecutará una aplicación que simula que la pantalla se derrite. Es posible que después de esto el proceso explorer.exe se reinicie):

http://blog.hispasec.com/laboratorio/recursos/yahooi/exploit.html

Si se es vulnerable y el programa llega a ejecutarse, se recomienda encarecidamente actualizar Yahoo! Messenger desde http://messenger.yahoo.com/download.php

Con esta prueba de concepto, se pretende demostrar lo grave de la vulnerabilidad. En lugar de una aplicación inofensiva, que insistimos algunos antivirus pueden detectar como “joke” (broma), un atacante podría utilizar una página web, o un mensaje con formato HTML, para distribuir virus, gusanos o troyanos que infectarían de forma automática y transparente al usuario. La vulnerabilidad a día de hoy sigue siendo aprovechada y no todos los antivirus son capaces de detectar la página del exploit como potencialmente peligrosa. En muchas ocasiones, los usuarios no actualizan el software que no forme parte del sistema operativo. Esta es una excelente excusa para que se siga la misma política con el sistema operativo que con los programas que se ejecutan en él.

Para aquellos lectores que ya hayan actualizado su sistema y no sean vulnerables, pueden visualizar un vídeo en el que se muestra el efecto del exploit en:

http://www.hispasec.com/laboratorio/video_yahoo.htm

Desde Hispasec, como siempre, recomendamos desactivar los ActiveX en la zona de Internet del navegador Internet Explorer, y ejecutar éste con los mínimos privilegios.

de www.hispasec.com

MySpace se ha convertido desde hace algunas semanas, en el objetivo primordial de ataques phishing perpetrados por la banda bautizada como Rock Phish, una de las más eficaces que utiliza las técnicas más sofisticadas.¿Por qué robar credenciales de MySpace que en principio no aportan beneficio económico directo? Lanzamos algunas teorías.

Desde el Laboratorio Hispasec hemos detectado en los últimos días un súbito y descomunal aumento de ataques phishing perpetrados contra MySpace, la red social de moda que aloja millones de páginas de usuarios. Un usuario de MySpace se da de alta y puede construir su propia página donde alojar su perfil. Otros usuarios lo enlazarán como amigos creando una densa red de contactos. Las avalancha de URL

fraudulentas detectadas, donde se alojan las páginas falsas de MySpace, mantienen un estilo inconfundible que las delata como creaciones de la banda Rock Phish. Hablamos de cientos de nuevas páginas falsas de MySpace creadas cada día por estos profesionales del phishing.

Rock Phish, es una de las bandas más peligrosas y efectivas a la hora de crear ataques fraudulentos de robo de credenciales. Han desarrollado metodologías muy avanzadas para evitar que los medios técnicos disponibles impidan su difusión. Tienen la capacidad de crear múltiples y únicas URL para cada ataque, muy complejas (es una de sus señas de identidad) que limitan de forma muy eficaz la labor de las barras antiphishing basadas en listas negras. ¿Qué gana este grupo tomando como objetivo MySpace? ¿Qué beneficio les reporta? Las teorías son varias.

La primera es obvia, muchos usuarios utilizan la misma contraseña para varios servicios. También, el obtener contraseñas de perfiles “privados” les permite acceso a información “sensible” de usuarios (fecha y lugar de nacimiento, por ejemplo) para realizar ataques más específicos y selectivos en el futuro.

Otras teorías son más interesantes. En la página del perfil del usuario al que se le ha robado la contraseña, es trivial introducir código CSS en algunos campos. Al ser interpretado en el navegador, cuando alguien que visite la página haga click en un campo, será redirigido a alguna web donde intentará ser infectado por malware o engañado de alguna forma. Este problema se ha vuelto tan común, que MySpace ha desarrollado un script para limpiar este tipo de enlaces fraudulentos. Pero parece que se han olvidado de limpiar ciertos campos, y todavía es posible inyectarlos en algunos otros.

Otra teoría que revaloriza las credenciales de MySpace, es el uso de las páginas de perfiles robados para de alguna forma, hacer aparecer ventanas emergentes a quien las visite. Se han observado en los últimos días en muchos perfiles un popup muy conseguido que simula ser la ventana de administración de actualizaciones de Windows. Si el usuarioacepta la supuesta “actualización”, se descargará un programa. Una vez ejecutado en el equipo, simulará un icono en la barra de tareas e intentará descargar ficheros que un falso escaneo antispyware de la máquina intentará solucionar. Una forma rebuscada (descargando ficherossupuestamente infectados) de que el usuario instale el spyware.

MySpace, se convierte así en un vector de ataque muy utilizado como objetivo de phishers para realizar posteriormente estafas más sofisticadas o directas. A medida que la banca actúe, contratando servicios antiphishing o antitroyanos y se dificulte la labor de los que intentan robar sus credenciales, es “natural” que la industria del malware migre hacia otras páginas en principio menos “protegidas”, que todavía no han implementado medidas suficientes para paliar de forma eficaz el robo de contraseñas.

¡Bienvenidos al blog de SectorHosting!

Pretendemos crear un espacio de transparencia donde clientes y amigos puedan compartir experiencias y visiones sobre nuestra empresa o aspectos relacionados a Internet y el negocio que ofrecemos.

¡Los esperamos!

El equipo de SectorHosting.

© 2010 SectorHosting BLOG Suffusion WordPress theme by Sayontan Sinha