(OWASP) [2] en el que anualmente se publica un documento en el que se describen
las vulnerabilidades web m as comunes. El documento publicado en 2013 incluye las
siguientes vulnerabilidades:
1. Inyección
La inyección es un método de infiltración de código que explota una vulnerabilidad de la aplicación al realizar la validación de los datos de entrada. Puede causar perdida o corrupción de datos, perdida de privilegios o denegación de acceso de manera que pueden comprometer todo el sistema. Hay varios tipos de inyecciones:
- Inyección SQL
Fundamentos teóricos
Afecta a las bases de datos. Se explota mediante la introducción de una
consulta SQL parcial o completa en un campo de texto de entrada de la
aplicación o mediante otros modos de entrada. Es bastante común alterar la sentencia where de una select añadiendo una condición
"or 1=1" que provoca que la condicion del where sea siempre verdad, por ejemplo, dada una sentencia:
select * from empleados where id=\$id
al modicar la consulta para buscar el empleado con
\$id "10 or 1=1"
devuelve todas las de la tabla empleados. - Inyección LDAP (Lightweight Directory Access Protocol)
Es un ataque que se realiza desde el servidor que afecta a los directorios
LDAP y puede provocar que informacion sensible acerca de usuarios y hosts sea revelada, creada o modi cada. Se explota mediante la introducción de una consulta LDAP parcial o completa, por ejemplo, la consulta searchfilter="(cn="+user+")"
se crea a partir de la peticion HTTP
http://www.example.com/ldapsearch?user=Juan
si se reemplaza por:
http://www.example.com/ldapsearch?user=*
la consulta resulta en:
searchfilter="(cn=*)"
que devuelve cualquier objeto con el atributo cn igual a cualquier valor. - Inyección XPATH
XPATH es un lenguaje que permite, entre otras cosas, la búsqueda de elementos en un fichero xml. Si el atacante tiene éxito podrá saltarse los mecanismos de autenticación o acceder a determinada información sin la autorización necesaria. Por ejemplo, es posible realizar un ataque similar al
mostrado anteriormente en el apartado de Inyeccion SQL. Dado un xml en
el que se almacenen nombres y contraseñas de usuario, que se utilice para la autenticacion en el sistema, si se utiliza la siguiente consulta XPATH:
string(//user[username/text()='Juan' and password/text()='!c3']/account/text())
y si la aplicación no valida correctamente los parámetros de entrada, se
podrá introducir
"' or '1' = '1"
en el campo username y en el campo password. Esto permitir a entrar en el
sistema sin proporcionar un nombre de usuario ni una contraseña. - Perdida de autenticación y gestión de sesiones
Este punto se refiere a vulnerabilidades relacionadas con la autenticación y gestión de sesiones (cuentas expuestas, contraseñas, identificadores de sesion, etc.) que se pueden explotar con el objetivo de suplantar la identidad de los usuarios.
Tiene un serio impacto sobre las cuentas de usuario, sobre todo si las cuentas poseen privilegios de administrador. Por ejemplo, si un usuario no cierra sesion explícitamente y si otra persona accede mas tarde (antes de que expire la sesion) desde el mismo navegador, podrá suplantar su identidad dentro de la aplicación.
5. Cross-Site Scripting (XSS)
Este ataque se produce cuando un atacante inyecta código ejecutable por el navegador dentro de una sola respuesta HTTP. Puede tener impacto en la propia aplicación ya que el atacante puede alterar su apariencia e insertar código malicioso y sobre los usuarios ya que el atacante puede secuestrar sus sesiones, redirigir usuarios a otras paginas, secuestrar su navegador, etc.Hay dos tipos:
Directo o persistente:
Consiste almacenar el código inyectado en una fuente de datos persistente
(por ejemplo, una base de datos o un fichero), por ello es la variante de
XSS mas peligrosa ya que el ataque se producir a cada vez que la aplicación acceda a esta fuente de datos. Por ejemplo, un atacante podrá almacenar lo siguiente:
en una la de base de datos, para que se muestre la cookie por pantalla al acceder a ese dato desde la aplicación.
Indirecto o reflejado:
En este caso el código no se almacena. Por ejemplo, el atacante puede modificar un enlace y luego enviarlo a la víctima para que lo abra.
6. Referencia insegura directa a objetos
Si no se realizan las comprobaciones de seguridad necesarias para proteger la información o no se hacen correctamente, un atacante que también sea un usuario autorizado en la aplicación, podrá llegar a obtener información de otros usuarios sin estar autorizado. Esto tiene impacto directo sobre todos los datos que se referencian por parámetro. Por ejemplo, un usuario crea la siguiente url:
http://www.people.com/showMyPersonalData?id=3
introduciendo directamente por parámetro un valor que no este relacionado con sus datos, por ejemplo, el identicador de otra persona, eso le permite ver información privada de otros usuarios.
7. Configuración de seguridad incorrecta
Si alguno de los recursos que utiliza la aplicación (el servidor web, el servidor de aplicaciones, la base de datos, frameworks) o las aplicaciones , se configura de forma incorrecta se estarán exponiendo vulnerabilidades que un atacante podrá explotar para realizar un ataque y el sistema entero podrá verse comprometido.
Un posible ataque es buscar contraseñas por defecto, paginas que no se usan, ficheros no protegidos o trazas de error del servidor de aplicaciones o la base de datos con el objetivo de obtener información adicional sobre el sistema.
8. Exposicion de datos sensibles
Si no se cifran los datos sensibles que maneja la aplicacion o se cifran de una manera
que no es totalmente segura, se estar a exponiendo informacion que podr a
ser recuperada por un atacante. Por lo tanto, un ataque de este tipo tiene impacto
sobre los datos que no hayan sido protegidos y es grave si la informacion
comprometida es sensible (informacion personal, de salud, bancaria, etc.). Para explotar este tipo de vulnerabilidad los atacantes pueden robar claves o directamente información no cifrada, realizar ataques man-in-the-middle, etc.
9. Ausencia de control de acceso a funciones
Si la aplicación no controla el acceso a funciones reservadas a usuarios con determinados privilegios, un atacante, ya sea un usuario anónimo o autorizado, podrá realizar dichas acciones. Las funciones de administración son el objetivo de este tipo de ataques.
10. Cross-Site Request Forgery (CSRF)
Es un ataque que fuerza al usuario a realizar acciones que no desea en la aplicación web en la que se encuentra actualmente autenticado. El atacante envía al usuario un enlace camuflado (dentro de un script, de una imagen, etc.) por ejemplo por correo electronico y se realiza una petición HTTP que ejecuta una determinada acción sin que el usuario lo sepa. Un ataque de CSRF exitoso puede comprometer la información y las acciones del usuario y si este posee una cuenta con privilegios de administrador puede comprometer la aplicación entera. Un ejemplo de ataque sera:
de esta forma cuando se muestre la imagen en realidad se estar a realizando una petición HTTP que realiza una determinada acción en la aplicación en la que el usuario se encuentra autenticado.
11. Utilización de componentes con vulnerabilidades conocidas
Un atacante puede obtener información a través de escaneos o análisis manuales o si hay información sensible expuesta para descubrir y explotar vulnerabilidades conocidas en los componentes que utilice la aplicación. Este tipo de ataques tiene un impacto muy variable en el sistema ya que abarca vulnerabilidades muy diferentes, el impacto podrá ser mínimo o podrá comprometer el sistema entero.
12. Redirecciones y reenvíos no validados
Un atacante modifica un enlace de redirección de la aplicación para que redirija a un sitio malicioso y lo envía a la víctima. De esta manera consigue instalar malware o instalara la víctima para que revele contraseñas o cualquier otra información sensible. También podrá utilizar un enlace de la aplicación que lo reenvíe a una pagina de administración para la cual no esta autorizado.
Ahora hay una forma de probar si el sitio cumple con las normas de seguridad, el software multiplataforma y abierto Vega, the Open Source Web Application Security Platform. https://subgraph.com/vega/

1 comentario:
Este mismo BLOG es suceptible a ataques del tipo Cross-Site Request Forgery (CSRF)
Publicar un comentario