OWASP Top 1 – Ataques por Inyección SQL

 

Los ataques por inyección se clasifican como la vulnerabilidad OWASP Top 1 en la lista de vulnerabilidades de OWASP-10. Este es un tipo de ataque de alto riesgo y fácil de realizar porque la mayoría de las veces solo se requiere tener acceso a través de un buscador como Firefox o Chrome a la base de datos vulnerable. La enumeración, el cual es el proceso de análisis para identificar vulnerabilidades, se puede realizar directamente en la base de datos que funciona a través de la página web.

Hay diferentes tipos de ataques de inyección; el más común se llama inyección SQL, que consiste en insertar código SQL desde el lado del cliente (navegador web) apuntando a las aplicaciones web (cualquier aplicación que pueda ser vulnerable y esté expuesta a través de Internet) con el fin de extraer información financiera de los clientes como números de tarjetas de crédito, contraseñas de los clientes, contraseñas de los administradores de las bases de datos vulnerables, o encontrar un acceso que le permita al atacante vulnerar el sistema interno desde la base de datos.

Comencemos con algunas preguntas y respuestas…

¿Qué sistemas son vulnerables a los ataques de inyección SQL?

Si su empresa tiene una base de datos expuesta a Internet la cual no está codificada correctamente, esta pudiese ser vulnerable a los ataques de inyección SQL.

¿Cómo puedo saber si mi base de datos expuesta a Internet está afectada por este tipo de vulnerabilidad?

Existen diferentes técnicas para descubrir si su base de datos está afectada por este tipo de vulnerabilidad. Las validaciones de entrada junto con la parametrización de las consultas son la única forma segura de diagnosticar y prevenir inyecciones de SQL. Estas prácticas seguras implican buscar llamadas a los recursos externos como “fork”, “exec” o “system” entre otros, para hacer solicitudes y esperar resultados.

OWASP Top 1 – Anatomía de una inyección SQL

Nos gustaría mostrar un ejemplo de inyección SQL que podría ayudarle a tener una mejor perspectiva de esta vulnerabilidad:

Usando un buscador web es posible identificar la versión de un sistema operativo a través de la ejecución de comandos SQL en una base de datos vulnerable a inyecciones SQL:

Usando el comando SQL: “UNION ALL SELECT 1,@@version,3,4”

OWASP Top 1

Como podemos ver, la versión del sistema operativo es expuesta: “5.1.63-0+squeeze1”. En este ejemplo, fue posible identificar el sistema operativo usando “@@version” en el código SQL. La razón de este resultado es que una base de datos vulnerable expone las columnas cuando se llaman los recursos a través de la unión de las distintas columnas con el comando SQL ”UNION ALL, SELECT” y números aleatorios.  

Resultados como este son un indicador de que el sitio web de su empresa es vulnerable a los ataques de inyección SQL. La segunda técnica para encontrar vulnerabilidades de inyección SQL es usar escáneres avanzados de sitios web como Burp Suite u OWASP-ZAP. Se requiere capacitación para administrar y comprender los resultados de estas herramientas. Aquí, mostramos los resultados de OWASP-ZAP contra el mismo sistema vulnerable:

El escáner encontró otro enlace vulnerable en la misma base de datos afectada. También el escáner proporciona el código afectado involucrado en la vulnerabilidad.

Estos escáneres de vulnerabilidades pueden ser ejecutados desde fuera de la red apuntando directamente a su sitio web corporativo, lo que permite que entidades maliciosas descubran y exploten estas vulnerabilidades.

Una tercera técnica para averiguar si su sitio web es vulnerable a los ataques de inyección SQL es usar una comilla simple. Sí, leyó bien; una sola comilla simple en un enlace web puede indicarle si su base de datos es vulnerable.

Como podemos ver, una coma simple hace que el sistema genere un error. Este tipo de mensaje es un indicativo de que la base de datos es vulnerable a inyecciones SQL.  

En lenguaje SQL, la comilla simple se usa como limitador y ayuda a descubrir si las cadenas se escapan correctamente en la aplicación. Si las cadenas no están bien configuradas, la aplicación responderá con un mensaje de error SQL. Esto implica que podemos interactuar usando consultas SQL bien formadas para recuperar diferentes tipos de datos como nombres de usuario, contraseñas, información de tarjetas de crédito de clientes, información personal como números de cedula de identidad y cualquier tipo de datos que estén guardados en la base de datos.

Por ejemplo, el hash de la contraseña que pertenece al administrador de esta base de datos pudiese quedar expuesto con el siguiente comando:

1 UNION ALL select 1,concat(login,0x3a,password),3,4 FROM USERS

No sería muy complicado para un pirata informático iniciar sesión como administrador en el sistema de esta base de datos teniendo acceso a esta información y descubrir la contraseña que pertenece a este hash:

Ahora, todo esto es solo el comienzo; los hackers han desarrollado herramientas muy avanzadas para reproducir los pasos mostrados en miles de sitios web de forma automática. Veamos el funcionamiento de una herramienta llamada SQLMAP en la misma base de datos ya analizada.

Listado de las columnas disponibles para enumeración:

 Listado de las tablas de la base de datos:

Listado de nombre de usuario, hash y contraseña de la tabla “usuarios” a través de un procedimiento automático de fuerza bruta:

Esto es lo que los piratas informáticos intentan hacer en su empresa por las noches.

¿Qué podría hacer un hacker después de usar la vulnerabilidad OWASP Top 1 para explotar el sitio web?

Bueno, desde este punto las posibilidades de ataque son infinitas. El acceso al sistema operativo en segundo plano, el movimiento lateral a más servidores jerárquicos y a los computadores de la red interna son solo algunas de las acciones que un atacante experimentado podría seguir. La exposición de datos de los clientes y la pérdida de reputación comercial pueden ser determinantes en su empresa si no toma las medidas correspondientes para asegurar sus bases de datos.

¿Es vulnerable mi sitio web corporativo si tenemos un certificado de seguridad?

Un certificado de seguridad puede cifrar la comunicación entre el usuario final y la base de datos pero no puede proteger contra otras vulnerabilidades como la inyección SQL si es que su base de datos está afectada por esta vulnerabilidad.

¿Cómo puede ayudarme Seguridad-Ofensiva a mantener mis bases de datos y mi sitio web corporativo seguro?

Seguridad-Ofensiva pondrá a prueba sus sitios web corporativos y sus bases de datos. Utilizamos escáneres avanzados, pruebas de penetración manual y diferentes técnicas y procedimientos que pueden incluir rastreo, forzamiento bruto, revisión de código y permisos de carpeta. Hacemos todo esto en coordinación con su personal interno encargado de sus sistemas de información. Estos procedimientos son necesarios para averiguar si las posibles vulnerabilidades son falsos positivos o vulnerabilidades reales. Si son vulnerabilidades reales, le proporcionaremos métodos efectivos para parchar, actualizar o eliminar la vulnerabilidad de acuerdo con la situación para mantener su entorno seguro.

Proceso de Colección de Información y Enumeración

SOLUCIÓN Y PREVENCIÓN

https://seguridad-ofensiva.com/evaluaciones-de-vulnerabilidades

https://seguridad-ofensiva.com/pruebas-de-penetracion-externas

https://seguridad-ofensiva.com/pruebas-de-penetracion-en-sitios-web

Recursos adicionales con relación a este tipo de ataque

https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A1-Injection.html

https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html

https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet_in_Java.html

Vulnerabilidades basadas en CWE Ranking

CWE-77: Command Injection

CWE-89: SQL Injection

CWE-564: Hibernate Injection

CWE-917: Expression Language Injection

Otras vulnerabilidades pertenecientes a OWASP

Uso de componentes con vulnerabilidades conocidashttps://seguridad-ofensiva.com/blog/owasp-top-10/uso-de-componentes-con-vulnerabilidades-conocidas-owasp-top-9/

Deserialización insegurahttps://seguridad-ofensiva.com/blog/owasp-top-10/deserializacion-insegura-owasp-top-8/

Seguridad no configuradahttps://seguridad-ofensiva.com/blog/owasp-top-10/seguridad-no-configurada-owasp-top-6/

Control de acceso vulnerable: https://seguridad-ofensiva.com/blog/owasp-top-10/control-de-acceso-vulnerable-owasp-top-5/

Exposición de datos confidenciales: https://seguridad-ofensiva.com/blog/owasp-top-10/exposicion-de-datos-confidenciales-owasp-top-3/

Registro y monitoreo insuficiente: https://seguridad-ofensiva.com/blog/owasp-top-10/registro-y-monitoreo-insuficiente-owasp-top-10/

Ataques en sistemas de autenticación: https://seguridad-ofensiva.com/blog/owasp-top-10/ataques-en-los-sistemas-de-autenticacion/

Entidades externas XML vulnerables: https://seguridad-ofensiva.com/blog/owasp-top-10/entidades-externas-xml-vulnerables-owasp-top-4/