SQL Injection Scanner Tools
El código de aplicación web débil puede permitir a los hackers acceder a su base de datos y red
Descripción general de la inyección SQL
La inyección SQL es actualmente la forma más común de ataque a sitios web, ya que los formularios web son muy comunes, a menudo no están codificados correctamente y las herramientas de hacking utilizadas para encontrar debilidades y aprovecharlas están comúnmente disponibles en línea. Este tipo de exploit es lo suficientemente fácil de lograr que incluso los hackers inexpertos pueden hacer travesuras. Sin embargo, en manos de un hacker muy experto, una debilidad del código web puede revelar el acceso a nivel de raíz de los servidores web y, a partir de ahí, se pueden realizar ataques a otros servidores en red.
El lenguaje de consulta estructurado (SQL) es el lenguaje casi universal de bases de datos que permite el almacenamiento, la manipulación y la recuperación de datos. Las bases de datos que utilizan SQL incluyen MS SQL Server, MySQL, Oracle, Access y Filemaker Pro, y estas bases de datos están igualmente sujetas a ataques de inyección SQL.
Los formularios basados en web deben permitir cierto acceso a su base de datos para permitir la entrada de datos y una respuesta, por lo que este tipo de ataque evita los cortafuegos y las defensas de los endpoints. Cualquier formulario web, incluso un simple formulario de inicio de sesión o un cuadro de búsqueda, puede proporcionar acceso a sus datos mediante inyección SQL si está codificado incorrectamente.
Cómo funciona la inyección SQL
Los prospectos, clientes, empleados y socios comerciales pueden tener derecho a almacenar o recuperar información de su base de datos. Su sitio probablemente permite que cualquier visitante del sitio envíe y recupere datos. El acceso legítimo para los visitantes incluye la búsqueda en el sitio, los formularios de registro, los formularios de contacto, los formularios de inicio de sesión y todos estos proporcionan ventanas a su base de datos. Estos diferentes puntos de acceso son posiblemente incorporados en «off-the-shelf’ aplicaciones o puede ser aplicaciones personalizadas para su sitio. Estos formularios y su código de soporte probablemente provienen de muchas fuentes, fueron adquiridos en diferentes momentos y posiblemente instalados por diferentes personas.
La inyección SQL es el uso de estos campos disponibles públicamente para obtener entrada en su base de datos. Esto se hace introduciendo comandos SQL en los campos del formulario en lugar de los datos esperados. Formularios mal codificados permitirán que un hacker los use como punto de entrada a su base de datos, momento en el que los datos de la base de datos pueden ser visibles y el acceso a otras bases de datos en el mismo servidor u otros servidores de la red puede ser posible.
Las funciones del sitio web, como formularios de contacto, páginas de inicio de sesión, solicitudes de soporte, funciones de búsqueda, campos de comentarios, carritos de compras e incluso las funciones que ofrecen contenido dinámico de páginas web, son susceptibles de ataques de inyección SQL porque los propios campos presentados para el uso de los visitantes DEBEN permitir que al menos algunos comandos SQL pasen directamente a la base de datos.
Riesgo de inyección SQL
Dado que las bases de datos controlan muchas funciones de sitios web, casi todos los sitios web invitan a los visitantes a hacer aportaciones y muchos formularios web son vulnerables, la inyección SQL se ha convertido, y durante años se ha mantenido, en la forma más común de herramienta de hackeo de sitios web utilizada. Además, hay tantos delincuentes que ahora usan inyección SQL que casi a diario se descubren nuevas debilidades en el servidor, la aplicación y el código.
Nuestros propios registros indican que la mayoría (más de la mitad) de los sitios web que se nos ha pedido escanear tenían riesgos de inyección SQL de niveles Altos o medios. Un alto nivel de riesgo es aquel que es efectivamente una puerta abierta y sin vigilancia. Un riesgo medio es uno que, cuando se combina con uno o más factores, podría significar problemas. Un número aún mayor de sitios tenían problemas de bajo riesgo. Lo que necesita saber: El porcentaje de sitios que tienen al menos un riesgo importante en realidad está aumentando.
Aunque la inyección SQL ha sido un problema conocido durante años, hay varios factores que hacen que la tasa de riesgo aumente. En primer lugar, hay más empresas que ofrecen más interacción en el sitio web con los visitantes y esta tendencia está aumentando drásticamente. En segundo lugar, a medida que más hackers adquieren habilidades en inyección SQL, están descubriendo más aplicaciones y servicios que son susceptibles a ataques y están desarrollando nuevos ataques en aplicaciones antiguas. El resultado es un aumento casi exponencial en las oportunidades de usar este método de ataque.
Su riesgo de ser atacado con éxito mediante inyección SQL se basa en dos factores: la naturaleza y el tamaño de su negocio y la edad, el estado de las actualizaciones y parches en sus aplicaciones y la habilidad y el número de su personal técnico. Se reduce a si usted es un objetivo interesante y si su servidor web, las aplicaciones en él y el código de su sitio web están bien diseñados, bien integrados y tienen todos los parches y actualizaciones actuales.
Su sitio está en peligro inmediato si su empresa almacena datos de alto valor, si su empresa o entidad opera en un campo de negocios altamente disputado, o si su sitio tiene importancia o valor político o social. Naturalmente, si tienes algo de valor monetario, entonces eres un objetivo. Pero también eres un objetivo si tu sitio es un líder de opinión en un entorno polémico. Los bloggers nos han pedido ayuda porque el tema cubierto allí había generado ataques de inyección SQL.
Los ataques de inyección SQL ahora se solicitan en línea. Un cliente molesto, competidor o incluso ex cónyuge ahora puede contratar fácilmente a un ‘script kiddie’, o peor, a un hacker talentoso, para atacar un sitio. La probabilidad de que el hacker sea atrapado es baja. La probabilidad de que la parte alterada pueda causar daño a su sitio sin ser tocada como la parte responsable es alta.
Técnicamente, está en riesgo de inyección SQL si tiene algún equipo o aplicación que no se haya actualizado y parcheado de forma rutinaria, o si tiene código en su sitio que no se escribió correctamente. La antigüedad del equipo, las aplicaciones y el código es un indicador aproximado del riesgo. Otro es el número de servidores involucrados, el número de aplicaciones y el número de puntos de acceso a sitios web. Si utiliza servidores alojados o recursos técnicos subcontratados, es importante que un tercero revise la seguridad de su sitio. E incluso el personal interno puede estar tan presionado por el tiempo y la escasez de recursos que las actualizaciones y los parches pueden retrasarse o el código antiguo heredado se puede usar sin una revisión adecuada.
Ejemplo de inyección SQL
Cada vez que un visitante de un sitio web introduce datos en un formulario de su sitio, se genera una consulta SQL que se envía a su base de datos. En el caso de un formulario de inicio de sesión simple, el nombre de usuario y la contraseña se presentan a la base de datos y, si son válidos, la base de datos responde con una respuesta y se permite el acceso al usuario (o no). Por lo tanto, no importa cuán simple sea el formulario o el proceso web, se requiere acceso a la base de datos y se espera una respuesta.
Mediante inyección SQL, un hacker intentará introducir comandos SQL específicamente diseñados en un campo de formulario en lugar de la información esperada. La intención es asegurar una respuesta de la base de datos que ayude al hacker a comprender la construcción de la base de datos, como los nombres de las tablas. El siguiente paso sería acceder y ver datos en tablas importantes o agregar datos a tablas, como agregar cuentas nuevas o nombres de usuario y contraseñas. El tercer paso, aproximadamente, sería usar el acceso a la base de datos para descubrir y cambiar la configuración de seguridad en un servidor que permitiría el acceso administrativo de un hacker.
Cualquier lenguaje de script dinámico, incluido ASP, ASP.NET, PHP, JSP y CGI son vulnerables a ataques. El único equipo necesario es un navegador web. Hay herramientas ampliamente disponibles en línea que semiautomatizarán el proceso de búsqueda de debilidades, y hay muchos foros en los que los hackers comparten exploits y se ayudan mutuamente a superar obstáculos.
Resultados de inyección SQL
Como puede imaginar, un hacker que obtenga acceso administrativo a su servidor significa que habrá perdido efectivamente todos los datos de ese servidor para el invasor. Peor aún, ahora hay una cabeza de playa detrás de su firewall desde la que se pueden realizar ataques a otros servidores y servicios. De esta manera, la inyección SQL puede proporcionar acceso a todos los datos de la empresa o personales.
Desde el punto de vista de un hacker, un componente del hack que es casi tan importante como el robo es mantener el secreto. Activar una «alarma» de algún tipo es lo último que quieren hacer. Su trabajo de infiltración lleva tiempo y, a menudo, el valor de los datos robados disminuye si se descubre el robo (información de valor en robo de identidad o robo de tarjetas de crédito, por ejemplo). Por lo tanto, los hacks de inyección SQL a menudo se descubren meses y en algunos casos años después de su inicio.
Alternativamente, si la intención es el daño directo, entonces no hay escasez de cosas malas que se pueden hacer a una base de datos una vez que se ha obtenido acceso a los comandos en ejecución. Una tabla completa se puede eliminar de forma permanente con un solo comando SQL. Sin embargo, un ataque de inyección SQL más sofisticado podría implicar la corrupción masiva de grandes bases de datos e incluso la destrucción de copias de seguridad.
Defensa contra inyección SQL
Debido a que los sitios web requieren acceso constante a la base de datos, los firewalls proporcionan poca o ninguna defensa contra los ataques de inyección SQL. Su sitio web es público y los cortafuegos deben configurarse para permitir que todos los visitantes del sitio accedan a su base de datos, generalmente a través del puerto 80/443.
Los programas antivirus son igualmente ineficaces para bloquear ataques de inyección SQL. Su objetivo es detectar y detener un tipo completamente diferente de datos entrantes.
La defensa de inyección SQL más utilizada se compone de dos componentes. En primer lugar, hay una actualización de rutina y parches de todos los servidores, servicios y aplicaciones que, por supuesto, tiene muchas ventajas y es una práctica común. Luego está la producción y el uso de código de sitio web bien escrito y bien probado que no permite comandos SQL inesperados.
Estas dos defensas son por definición suficientes para detener cualquier ataque de inyección SQL. Entonces, ¿por qué las vulnerabilidades y los riesgos de los sitios web están en aumento y por qué los ataques exitosos ocurren con más frecuencia? Las respuestas son simples y se combinan en una lista desalentadora:
- El número de servidores, aplicaciones y volumen de código en los sitios web está aumentando
- Estos servidores, aplicaciones y lenguajes de código interactúan entre sí de formas a veces impredecibles
- El número y la frecuencia de actualizaciones y parches está aumentando
- Los departamentos de TI están haciendo más trabajo con menos personal y algunas actividades, como las actualizaciones, se posponen
- Rotación del personal de TI y los despidos a veces dejan huecos camuflados en las rutinas de seguridad
- Instalar automáticamente cada parche y actualización que se presenta a menudo produce efectos secundarios no deseados
- El código heredado a menudo se reutiliza cuando se actualizan los sitios, a veces manteniendo el código escrito según estándares antiguos en uso mucho después de que fuera obsoleto
- El número de personas que intentan hacer hacks y el número de herramientas disponibles para simplificar el hacking aumentan casi exponencialmente
Cada vez más empresas con grandes factores de riesgo y grandes huellas web están llegando a la conclusión de que parchear todo y contratar más el trabajo del personal existente ya no es viable.
Solución de herramienta de escáner de inyección SQL para sitios web
La nueva solución para los ataques de inyección SQL (y todos los demás ataques basados en la web) consiste en centrar el tiempo de TI limitado y valioso en los graves riesgos que realmente están presentes, en lugar de usar un enfoque de escopeta y aplicar todas las correcciones posibles a cada servidor, cada aplicación y cada página de código, sea necesario o no. Este nuevo enfoque es como hacer que un médico evalúe a un paciente y prohíba el medicamento que se necesita para producir una cura, en lugar de que el paciente vaya directamente a la farmacia para obtener todos los medicamentos posibles y tomarlos todos a la vez.
Por lo tanto, se logra una mayor seguridad mediante el uso de herramientas de prueba de aplicaciones web, como beSECURE, como una herramienta de análisis de inyección SQL para examinar (escanear) un sitio web utilizando una lista de miles de ataques conocidos y luego informar sobre los relativamente pocos (generalmente menos de una docena) problemas graves.
El escaneo de sitios web funciona sobre la base de detectar y notificar riesgos CONOCIDOS. El hackeo común es una actividad muy «pública». Las herramientas se promueven ampliamente. Las técnicas se difunden ampliamente en foros públicos. Incluso los nuevos métodos se hacen públicos en cuestión de horas o días desde su primer uso, gracias a grupos como SecuriTeam.com y otros que vigilan y luego advierten ampliamente a otros.
BeSECURE, el sistema automatizado de detección de vulnerabilidades, es un servicio basado en la web que utiliza una compilación de todos los riesgos conocidos en las familias y todas las familias en una única base de datos que ha llevado muchos años compilar y muchas horas al día mantener. Utilizando esta base de datos, beSECURE puede evaluar cualquier sitio web y producir un informe de riesgos REALES y PRESENTES clasificados de acuerdo con su importancia relativa, a menudo en cuestión de horas y sin perturbar las actividades en curso del sitio.
Ahora, puede tomar sus valiosas horas de trabajo de TI y abordar directamente los riesgos reales, como la inyección SQL, en lugar de pasar cientos de horas instalando parches y actualizaciones, la mayoría de las cuales no necesita o que manejan riesgos que son tan pequeños que son insignificantes.
Para obtener más información sobre beSECURE, utilice el formulario de esta página o póngase en contacto con nosotros.