Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas

jueves, abril 09, 2026

Un "Hardening Tip" de BBDD - de mi Lost & Found - contra las "Heavy Queries Malignas"

Hace muchos años, cuando estaba trabajando en mi Ph.D en los Time-Based Blind SQL Injection using Heavy Queries, en uno de mis documentos de la universidad escribí sobre las técnicas de "hardening" para dificultar este tipo de ataques y lo tenía preparado en un post, pero lo fui dejando sin sacar, y un día me olvidé de publicarlo, hace unos quince años más o menos.

Figura 1: Un "Hardening Tip" de BBDD - de mi Lost & Found -
 contra las "Heavy Queries Malignas"

Sin embargo, hablando sobre las capacidades de usar ChatGPT, Claude o Gemini para investigar en ciberseguridad, y lo fácil que hubiera sido construir las diferentes Heavy Queries para explotar un bug de SQL Injection usando una técnica Time-Based, me he acordado con él, y se lo he preguntado directamente a Gemini.


Pero hoy en día, encontrar estas técnicas es tan fácil cómo preguntarle a los modelos, que ellos ya se han aprendido todos los papers, por ti, así que, preguntándole por ayuda para localizar si me han hecho un ataque a un aplicación web con un Microsoft Access 2003, obtienes rápidamente la información de sobre este ataque con Heavy Queries.

Figura 4: La tabla del sistema a explotar en Access 2003

Como podéis, ver, rápidamente nos hace el análisis de la tabla del sistema a explotar, y nos dice que la forma de explotarlo es usando Join de ella misma ene veces, tal y como explicamos en el paper, para lograr un volumen de datos tan grande que generar un delay medible. 

Figura 5: El método para explotarlo

Y por último, nos da la inyección completa que se puede utilizar para hacer el Time-Based Blind SQL Injection Using Heavy Queries, lo que genera la explotación completa de la vulnerabilidad. 

Figura 6: Inyección completa tipo Time-Based Blind SQL Injection using Heavy Queries

El resultado es que en un segundo puedes encontrar cómo hacerlo, y no ha habido que hacer ningún Jailbreak ni nada por el estilo, así que vamos a ver ahora la parte de fortificación de la que os he estado hablando.
Si vamos ahora a las protecciones, primero hay que entender por qué sigue siendo importante tener protecciones contra esta forma de explotar la base de datos, generando una Heavy Query. Estas técnicas se pueden usar para hacer un DoS o para extraer información de la BD, especialmente en motores que no tienen funciones de tiempo, o en entornos bajo WAF que están filtrando las queries.

Figura 8: Por qué sigue siendo importante esto

Y aquí viene el Hardening "Tip" del pasado, que no saqué en ninguno de los blog posts que escribí sobre ello, que consiste en que una vez construida la consulta, se pueda comprobar que la consulta tiene un Time-Out acorde con el tipo de Query que se está lanzando.

Figura 9: Poner un límite de tiempo a las consultas SQL

Por supuesto, usar consultas parametrizadas, detectar el tipo de los datos que se inyectan en los parámetros y no construir consultas concatenando strings es la clave, pero que una aplicación pueda vulnerar el rendimiento de la aplicación y de la propia base de datos por no controlar los límites de consumo de recursos de una consulta SQL es fundamental.

Figura 10: Límite temporal a nivel de TRANSACCIÓN en PostgreSQL

Para ello, en los diferentes motores de Bases de Datos existen formas de controlar el máximo tiempo que se va a permitir en ejecución una consulta, que es de lo que estuve escribiendo hace quince años, pero aquí tenéis, preguntándole a Gemini, la fácil que es limitar estos tiempos.

Figura 11: Límites en MySQL versiones 5.7.8+

Por supuesto, si no hay SQL Injection, no hay necesidad de tener esto, pero lo cierto es que esta protección se puede añadir no sólo a nivel de aplicación, sino también a nivel de DBFirewall, a nivel de Driver de conexión, o incluso como hacíamos con los ataques a nivel de red haciendo un Network Packet Manipulation con un Man-in-the-middle.

Figura 12: En Transat-SQL a nivel de Server,
a nivel de Conexión y a nivel de Query

Hay que tener en cuenta que en una arquitectura de Zero-Trust, la base de datos no debe fiarse nunca de las aplicaciones, así que, al igual que hacíamos con el Paranoid Mode para evitar las manipulaciones en bases de datos por parte de ataques de SQL Injection, controlar el consumo descontrolado de recursos es fundamental.

Figura 13: Controles en Oracle a nivel de SESSION y con Perfiles

Al final, si eres responsable de una base de datos de alto rendimiento, con muchas aplicaciones colgando de ellas, limitar el consumo de recursos lo puedes hacer preventivamente - evitándolo con límites - o reactivo, viendo qué está comiéndose la memoria y la CPU de la base de datos.

Figura 14: Límites en Access 2003 y SQLite

Ya os conté muchas veces que en la universidad yo me especialicé en Bases de Datos, que me encantaban, y que mis primeros trabajos tuvieron que ver con Tuning de bases de datos Oracle y de aplicaciones que corrían sobre ellas, así que estas cosas las tenía muy presentes cuando comencé con el trabajo de Time-Based Blind SQL Injection Attacks using Heavy Queries.

Figura 15: Resumen de posibilidades

Esta es una buena práctica de seguridad, sobre todo si eres de los que gusta tener los entornos Hardened in Paranoid Mode, así que si no la conocías o no lo estás aplicando, a lo mejor encuentras un punto donde tener estos controles y evitas estos ataques.

Figura 16: Por qué es útil esto

Lo cierto, que es a lo que iba la conversación inicial, es que esto que dejé a medio escribir hace quince años como un post, tenía que actualizarlo para ver cómo se establecen los límites temporales en todas las bases de datos, y en todos los puntos posibles, pero gracias a la existencia de los LLMs hoy en día, ha sido tan fácil como pedirle a Gemini que me lo dé, por eso os lo he compartido hoy y he borrado una tarea del pasado que tenía en mi To-Do.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


sábado, agosto 31, 2024

Cómo convertirse en Tripulante Aéreo Autorizado con un SQL Injection Level 1 (y saltarse las colas de seguridad de los aeropuertos)

Las técnicas de SQL Injection fueron descubiertas en 1998. El 25 de Diciembre de 1998 el investigador rfp (rain.forest.puppy) publicaba el famoso ezine en el que hablaba de cómo se podía saltar la seguridad de una aplicación web que validaba usuarios contra una tabla en una base de datos usando consultas SQL con cadenas de texto concatenadas. Acababa de nacer el fallo de seguridad que más impacto ha tenido en la historia de la seguridad web desde que nació la Web.
Yo le dediqué años de estudio a las técnicas de SQL Injection, di muchas charlas, publiqué muchos artículos, fueron parte de mi trabajo de doctorado, y acabamos publicando un libro con todo esto que a día de hoy sigue siendo uno de los más vendidos, quizá porque sigue siendo fundamental para un pentester o un developer conocer estas técnicas y sus riesgos.
Hoy en día no es tan fácil encontrar estas vulnerabilidades como lo fue hasta el año 2010, donde saber SQL Injection era equivalente a tener siempre comodines en la manga. Aparecía en cualquier sitio. Un SQL Injection, un Blind SQL Injection, uno de errores ODBC, un Remote File Downloading, un Time-Based Blind SQL Injection, un Arithmetic Blind SQL Injection. 
Recuerdo jugar con la web de mis admirados Fernando Alonso y Pedro de la Rosa que tenían unos bonitos SQL Injection en sus páginas web, pero podría enumeraros centenares de ellas que aún tengo en mi cabeza. Una de las veces, en el año 2009, fui invitado a ir a la Yahoo! Security Week a dar una charla de Web Security a los Paranoids de Yahoo! Allí Palako y yo hicimos Live-demos de SQL Injection hasta que recibimos un mensaje en papel que ponía: "Please, no more non-Yahoo! sites live demos". Era tan fácil, estaba por tantos sitios, que casi podías hacer lo que quisieras en cualquier página web del mundo. Si es que servía hasta para ligar.

Bypassing airport security via SQL injection 

Hoy en día, 26 años después, a mí me gusta aún, de vez en cuando, echar un ojo y buscar algún sitio que aún tenga estos bugs clásicos, para ver si siguen existiendo y para sentir que he rejuvenecido y he vuelto a tener 25 años y estoy haciendo un pentest a una web. Busco alguno, lo reporto, y luego publico un post de eso por aquí. Es mi pasión, qué os puedo decir que no sepáis ya.

Pero parece que no se han erradicado del todo, y dos investigadores, Ian Carroll y Sam Curry, han encontrado un SQL Injection de libro, Level 1, en la web que controla el sistema de autorización de los Known Crewmembers (KCM) o tripulantes conocidos de las compañías aéreas, que tienen cola de acceso priorizada en los aeropuertos americanos gestionados por la TSA (Transportation Security Administration).
El sistema de administración es un portal web de acceso púbico sin VPN, sin Passkeys, sin 2FA, sin control de mensajes de error, sin control de cuentas privilegiadas, sin WAF, y con un SQL Injection de libro que permitía poner un 'or '1'='1  y tener un bonito acceso al panel de administración para poder ver los nombres de usuario y las credenciales, en hash MD5, de todos los usuarios de los sistema, además de los datos de todos los tripulantes. Ahí, ¡a lo loco!
Pero por supuesto, lo mejor es que te podías dar de alta como KCM dentro de la plataforma, y luego, siguiendo las reglas de los KCM acceder a esas colas en todos los aeropuertos americanos gestionados por la TSA.
¿Os acordáis de la famosa película de "Catch me if you can" de Leonardo di Caprio con la escena en la que accede a los aeropuertos vestido de piloto para ir de un lugar a otro? Pues con un SQL Injection de Level 1, hasta mediados de 2024 era así de sencillo. 

Hoy en día el bug ha sido corregido, que los investigadores han hecho Responsible Disclosure. Pero no me digáis que no es una historia que te hace caer una lagrimilla al ver ese SQL Injection.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


domingo, agosto 18, 2024

Evil Signature Injection: Borrado remoto de bases de datos, buzones de correos y ficheros de log con Evil Signatures y tu EDR

Después del incidente con Crowdstrike, uno de los EDR más famosos del mundo, los ojos de los investigadores de seguridad se han puesto en ellos. Tener en el sistema objetivo de un ataque un software que se ejecuta con tantos privilegios se ha convertido en oportunidad de usarlo como herramienta del atacante en lugar de temerlo como una herramienta defensiva.
Ayer sábado, tranquilo por la tarde, comencé a repasar las charlas de BlackHat y DefCON, y me topé con el trabajo de EDR Reloaded: Erase Data Remotely de los investigadores Tomer Bar y Shmuel Cohen. Desde el principio me encantó la idea por lo simple y hacker que es, y sobre todo, porque es algo que hacíamos nosotros hace muchos años.

Back in 2012 with Eicar

En el año 2012, durante un tiempo, estuve jugando mucho con los Terminal Services y la Apps en Citrix. Escribí muchos posts sobre ellos, y acabé dando una charla junto al gran Juan Garrido en DefCON sobre Terminal Hackpplications llamada "Bosses love Excel, hackers Too", donde llevábamos, además de muchos de estos trucos que quedaron en el blog, una idea del gran Silverhack de meter la shell en EXCEL y desde una sesión de Terminal Services o Citrix controlar la máquina. 


Figura 2: Bosses love Excel, hackers too

Entre los trucos, estaba el de forzar que cantara el antivirus del servidor incluyendo la firma de EICAR para testar si estaba siendo investigada por un Antimalware (aún no se utilizaba el concepto de EDR), y cuál era en concreto. Lo dejé en el artículo: "Eicar para hacer jailbreak en Terminal Services o Citrix".
La gracia era qué, si saltaba la consola del antivirus, o una alerta, podríamos llamar a la ayuda, sacar un explorador de ficheros y abrir el sistema completo. Es decir, hacer Jailbreak a una sesión de Terminal Services o Citrix mediante un firma de una muestra de malware "ficticia", como era EICAR.

Erase Data Remotely with Evil Signatures

Ese concepto de "Firma Maliciosa" o "Evil Signature" es lo que han utilizado los investigadores para hacer que se borren ficheros, aprovechándose de Windows Defender en los sistemas Microsoft, y de otros EDR en sistemas GNU/Linux, generando una Evil Signature que ingresan en el sistema de diferentes maneras, ya sea incluyéndola en un fichero binario, en un doc, en una llamada HTTP, en una consulta SQL, o en un alta de un usuario de una plataforma SaaS.
La idea es tan sencilla como, buscar las firmas que usa Windows Defender, y probar para tener tener el mínimo de caracteres necesarios para que el EDR de Microsoft lo detecte como si fuera un malware de severidad HIGH, para lograr que la acción que se lance sea la más drástica, es decir, eliminar el fichero. 
El resto es conseguir que el fichero ese sea el que quiere borrar el atacante. Así que, a partir de ese momento, es objetivo es ver cómo meter la firma más pequeña en el sitio adecuado para saber qué fichero quieres que borre el EDR que está protegiendo esta máquina.
En el ejemplo anterior, la Evil Signature se introduce simplemente en un parámetro por POST desde una llamada HTTP, para conseguir que Windows Defender elimine los logs del servidor de Web de la máquina.
Lo mismo se puede hacer con una sesión Windows FTP, en este caso inyectando la Evil Signature como si fuera el nombre del usuario, pero al inscribirse este username en el fichero de log, salta el EDR y se carga el archivo completamente porque es severidad High.
Esto, en determinados sistemas puede ser más crítico. En este caso, se carga el mailbox de un Mozilla  ThunderBird, que no le hará ninguna gracia al usuario que, sin hacer ninguna acción se acaba de quedar sin ninguno de sus correos almacenados.
También, se puede lograr que Windows Defender elimine su propio log, lo que es una maravilla para borrar los rastros que un atacante deja en un sistema.
Además, se puede lograr que la víctima expanda el ataque, ya que si el fichero de log pasa al servidor de logs, se llevará la Evil Signature consigo, así que si tenemos un Splunk, éste acabará siendo afectado también.

Pero lo peor de este ataque es que si lo consigues meter en el Datafile de una base de datos y que el EDR lo tome como un malware de severidad High, entonces podrías conseguir eliminar la base de datos de un objetivo, lo que no debe ser gracioso para nadie.
En este caso, los investigadores han sido capaces de que el EDR se cargue bases de datos de MariaDB ( MySQL), PostgreSQL, MomgoDB (adiós a tu BigData) y SQLLite, lo que podría dejar sin funcionar la gran mayoría de servicios y aplicaciones que corren sobre ellos.
Y por supuesto, también se pueden hacer los ataques desde servidor a cliente. En este caso sería un Client-Side Attack que se puede hacer por culpa de visitar un servidor vulnerado, o por un ataque a través de él.
Y el cliente ve cómo se le borran los ficheros del sistema a través del EDR que tenga configurado para "protegerlo" de los atacantes. Paradojas de la vida.
La gracia es que podría hacerse un CSRF, un XSS, un SSRF, o cualquier otro Client-Side Attack para que un atacante haga un Evil Signature Injection en tu equipo y tengas un problema de seguridad serio. Por suerte, los reportes han sido tomados en serio y - tras varias iteraciones - se han corregido, pero esta técnica hay que tenerla en cuenta porque cualquier software privilegiado que corra en tu máquina podría ser víctima de Evil Signature Injection y tener un problema serio en tu plataforma.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


miércoles, mayo 29, 2024

Big Data: Tecnologías para arquitecturas Data-Centric

Siempre que publicamos un nuevo libro en 0xWord es un día de celebración. Cuesta mucho sacar adelante este proyecto, y poder decir que hoy tenemos ya a la venta el último ejemplar de "Big Data: Tecnologías para arquitecturas Data-Centric", escrito por Ibon Reinoso, y donde yo he colaborado con el prólogo y con un capítulo con historias de mis "Big Data Security Tales", donde narro mis aventuras con bugs y fallos de seguridad en estas tecnologías.
El libro, como os he dicho, lo ha escrito Ibon Reinoso que es Arquitecto de Soluciones y Senior Data Scientist, además de haber sido el director y profesor en el Programa Nacional Big Data, donde ha formado en estas tecnologías a más de 1.500 alumnos en más de 20 ciudades. También es el creador de BigBayData.com, pero sobre todo un  amante de los Datos.
El libro es perfecto para meterse de lleno en la arquitectura de soluciones de Big Data, y en sus más de 200 páginas trata temas como Spark, NoSQL, MongoDB, Cassandra, Hadoop, Datos en Stream o Apache Kafka. Fundamentales para entender este mundo.
El libro, que es una lectura perfecta para iniciarse y ponerse a trabajar desde ya en entornos de BigData, trata también temas fundamentales en el tratamiento de datos, como la gestión de ficheros con Pyhton, los procesos ETL (Extraction, Transformation & Load) de datos, o los fundamentos del lenguaje SQL. Podéis ver el índice en el fichero que he subido a mi canal de SlideShare.

Figura 4: Índice del libro Big Data: Tecnologías para arquitecturas Data-Centric
escrito por Ibon Reinoso con prólogo de Chema Alonso en 0xWord

Este libro, además, es el complemento perfecto para otra lectura que debes acompañar a esta, que es el libro de "Machine Learning aplicado a Ciberseguridad: Técnicas y ejemplos en la detección de amenazas", que propone el uso de algoritmos de IA sobre entornos de BigData para resolver problemas de ciberseguridad.

de Fran Ramírez, Paloma Recuero, Carmen Torrano, Jose Torres
y Santiago Hernández en 0xWord.

Así que, si quieres un libro para este verano, ya tienes este texto disponible para que te lo puedas comprar, y además, puedes usar tus Tempos de  MyPublicInbox.

Usar tus Tempos de MyPublicInbox 0xWord para adquirir este libro

Para terminar, te recuerdo que tendrás también 100 Tempos de MyPublicInbox por la compra de este libro de "Big Data: Tecnologías para arquitecturas Data-Centric" y que además, puedes pagar completa o parcialmente este libro con Tempos de MyPublicInbox. Aquí te explico cómo se hace. La idea es muy sencilla, hemos creado un Buzón Público de 0xWord en MyPublicInbox y tenemos disponible el módulo de transferencias de Tempos entre cuentas siempre que el destinatario sea un Perfil Público de la plataforma. Para que se puedan hacer estas transferencias, primero debe estar el Perfil Público destinatario de la transferencia en la Agenda.

Figura 6: Perfil de 0xWord en MyPublicInbox. Opción de "Añadir a  la Agenda".
https://MyPublicInbox.com/0xWord

Para dar de alta un Perfil Público en tu agenda, solo debes iniciar sesión en MyPublicInbox, y con la sesión iniciada ir a la web del perfil. En este caso, a la URL del perfil público de 0xWord en MyPublicInbox, - https://MyPublicInbox.com/0xWord - donde te aparecerá la opción de "Añadir a la agenda". Cuando acabe este proceso, podrás ir a la opción Agenda de tu buzón de correo en MyPublicInbox y deberías tener el Perfil Público de 0xWord allí.

Figura 7: Cuando lo agregues estará en tu agenda

Una vez que lo tengas en la agenda, ya será tan fácil como irte a tu perfil - se accede haciendo clic en la imagen redonda con tu foto en la parte superior - y entrar en la Zona de Transferencias. Desde allí seleccionas el Buzón Público de 0xWord, el número de Tempos que quieres transferir, y en el concepto debes poner que es para recibir un código descuento para usar en la tienda de 0xWord.


No te preocupes por el texto concreto, porque los procesamos manualmente como los pedidos de se hacen en la tienda. 

Canjear 500 Tempos por un código descuento de 5 €

La última opción es bastante sencilla. Solo debes irte a la sección de Canjear Tempos -> Vales para Tiendas, y "Comprar" por 500 Tempos y código de 5 €. Es lo mismo que enviar la transferencia pero en un paquete de 500 Tempos y de forma totalmente automatizada, así que solo con que le des a comprar recibirás el código descuento y lo podrás utilizar en la tienda de 0xWord.com

Así que, si quieres conseguir nuestros libros de Seguridad Informática & Hacking aprovechando los Tempos de MyPublicInbox podrás hacerlo de forma muy sencilla y mucho, mucho, mucho más barato. Y así apoyas este proyecto tan bonito que es 0xWord.com.

Ser escritor de libros de 0xWord

Además, todos lo que queráis convertiros en escritores y hacer un proyecto de libro con nosotros. Podéis también enviarnos vuestra propuesta a través del buzón de 0xWord en MyPublicInbox, y si sois Perfiles Públicos de la plataforma, podéis entrar en la sección de Mi Perfil -> Servicios para ti y solicitar más información sobre el proceso de escribir un libro en 0xWord.
Nuestro equipo se pondrá en contacto contigo y evaluará tu proyecto de publicación de libro. Ya sabes que principalmente de Seguridad Informática & Hacking, y puede ser técnico, súper-técnico, o divulgación, y si es una novela... podemos estudiarlo también.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares