viernes, 20 de junio de 2025

05 - Lab: SQL injection UNION attack, determining the number of columns returned by the query

 

Lab: SQL injection UNION attack, determining the number of columns returned by the query




Para el siguiente laboratorio debemos modificar el parametro category, utilizaremos la siguiente consulta '+UNION+SELECT+NULL-- que es una forma de sqli i.

Cuando no conocemos la estructura exacta de la tabla o los tipos de datos utilizamos Valores NULL

Bien.

Ingresemos al LAB. 

Ponemos nuestro Burp en modo intercept y pinchamos en Gift 


Capturamos el siguiente GET y inyectamos la siguiente consulta '+UNION+SELECT+NULL--

Le damos en FORWARD

Podremos ver el siguiente internal Error, esto se produce porque debemos seguir probando con mas valores nulos


Volvamos para atrás y pinchemos nuevamente en GIFT y ahora probemos agregando otro valor NULL

'+UNION+SELECT+NULL,NULL-- 






Le damos en FORWARD


Podremos ver que nos sigue dando Error



Volvamos para atras y agreguemos otro valor NULL

'+UNION+SELECT+NULL,NULL,NULL--


Le damos en FORWARD

Ahora veremos que ya no nos devuelve un error, lo cual es una clara evidencia que estamos en presencia a 3 columnas





jueves, 19 de junio de 2025

06 - Lab: SQL injection attack, listing the database contents on Oracle

 



06 - Lab: SQL injection attack, listing the database contents on Oracle


Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. Los resultados de la consulta se devuelven en la respuesta de la aplicación, por lo que puede usar un ataque UNION para recuperar datos de otras tablas.

La aplicación tiene una función de inicio de sesión y la base de datos contiene una tabla que contiene nombres de usuario y contraseñas. Debe determinar el nombre de esta tabla y las columnas que contiene y, a continuación, recuperar el contenido de la tabla para obtener el nombre de usuario y la contraseña de todos los usuarios.

Para resolver el laboratorio, inicie sesión como usuario administrator


 


Habilitamos el modo intercept



En category insertamos la siguiente consulta '+UNION+SELECT+'abc','def'+FROM+dual--



En BurpSuite le damos en Forward


Veremos la siguiente pantalla 



ya sabemos que la consulta devolvió dos columnas, ahora ingresamos nuevamente a Corporate Gift


Le damos en Forward 


Vamos a llegar el siguiente GET y lo vamos a editar con el siguiente UNION

'+UNION+SELECT+table_name,NULL+FROM+all_tables--


Le damos en Forward 

Ahora copiamos la siguiente nombre de tabla USERS_CVATKQ




Hacemos clic en Corporate Gift


Le damos en Forward 


En el GET de Category pegamos el siguiente select:


'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='USERS_CVATKQ'--




Nos devolverá lo siguiente, el user y password


Ahora con el user y pass generamos la siguiente consulta:

'+UNION+SELECT+USERNAME_UTSSDT,+PASSWORD_UIRROD+FROM+USERS_CVATKQ--





Ahora que tenemos el usuario y contraseña vamos a My account y utilizamos las credenciales Encontradas

FIN 








domingo, 15 de junio de 2025

05 - Lab: SQL injection attack, listing the database contents on non-Oracle databases

 


SQL injection


Lab: SQL injection attack, listing the database contents on non-Oracle databases


Laboratorio: ataque de inyección SQL, enumerando el contenido de la base de datos en bases de datos que no son Oracle

Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. 

Los resultados de la consulta se devuelven en la respuesta de la aplicación para que pueda utilizar un ataque de UNION para recuperar datos de otras tablas.

La aplicación tiene una función de inicio de sesión, y la base de datos contiene una tabla que contiene nombres de usuario y contraseñas. 

Usted necesita determinar el nombre de esta tabla y las columnas que contiene, luego recuperar el contenido de la tabla para obtener el nombre de usuario y la contraseña de todos los usuarios.

Para resolver el laboratorio, inicie sesión como el usuario administrador.


1. Utilice Burp Suite para interceptar y modificar la solicitud que establece el filtro de la categoría de producto.

2.    Determinar el número de columnas que están siendo devueltas por la consulta y qué columnas contienen datos de texto. Verifique que la consulta esté devolviendo dos columnas, ambas contienen texto, utilizando una carga útil como la siguiente en el parámetro de la categoría

'+UNION+SELECT+'abc','def'--

    


Luego de Utilizar el siguiente union en el campo category le damos Forward

Debemos llegar a poder ver la siguiente pantalla y poder hacer click en Corporate Gift

    


        

3.  Ahora Utilice la siguiente carga útil para recuperar la lista de tablas en la base de datos:  

    '+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables--




4.    Encuentre el nombre de la tabla que contiene credenciales de usuario.

    




5.    Utilice la siguiente carga útil (que sustituya al nombre de la tabla) para recuperar los detalles de las columnas de la tabla:

    '+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='users_npxrqx'--




6.    Encuentre los nombres de las columnas que contienen nombres de usuario y contraseñas.




7.    Utilice la siguiente carga útil (que sustituyó a los nombres de la tabla y de la columna) para recuperar los nombres de usuario y contraseñas para todos los usuarios

   '+UNION+SELECT+username_bwhzuj,+password_gkbmbb+FROM+users_npxrqx--

    


8. Encuentre la contraseña para el usuario administrador y úsela para iniciar sesión.



04 - Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft


SQL injection


Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. Puede utilizar un ataque UNION para recuperar los resultados de una consulta inyectada.

Para resolver el laboratorio, muestre la versión de la base de datos.


1. Usaremos Burp Suite para interceptar y modificar la request del filtro de la categoría productos

2.   Activamos el intercept  y viajamos ala siguiente url, hacemos click ene Corporate Gift




    
En burpSuite editamos el parámetro Categoría y le pegamos lo siguiente:

'+UNION+SELECT+@@version,+NULL#




Luego le damos en Forward y con esto completaremos el lab.

Podremos observar cómo nos devuelte la configuración del servidor(DB)


🧠 ¿Qué significa esta cadena?

                '+UNION+SELECT+@@version,+NULL#

                   
FragmentoSignificado
Cierra una cadena abierta en la consulta SQL original.
UNION SELECTInicia una nueva consulta para combinar resultados.
@@versionVariable del sistema que devuelve la versión del motor de base de datos (en MySQL, por ejemplo).
NULLSegundo valor ficticio para que coincida con la cantidad de columnas esperadas.
#En MySQL, indica el inicio de un comentario, ignorando el resto de la consulta original.

Supongamos que la siguiente consulta Original del servidor es esta

SELECT nombre, email FROM usuarios WHERE usuario = '$usuario';

Y tú envías el siguiente input malicioso como usuario:

' UNION SELECT @@version, NULL#

La consulta se transforma en:

SELECT nombre, email FROM usuarios WHERE usuario = '' UNION SELECT @@version, NULL#';

🎯 Resultado

Si la inyección tiene éxito, el servidor devolverá una fila con el valor de la versión del motor de base de datos. Ejemplo:

nombreemail
8.0.34NULL


Esto confirma que:

  • La inyección fue exitosa ✅

  • El backend usa MySQL versión 8.0.34



🔐 ¿Por qué es importante esto?

Conocer la versión permite a un atacante:

  • Ajustar su estrategia de ataque (hay exploits específicos por versión),

  • Buscar vulnerabilidades conocidas en esa versión,

  • Confirmar que tiene inyección tipo UNION, lo cual es muy poderosa.







03 - Lab: SQL injection attack, querying the database type and version on Oracle



    SQL INJECTION

Es una prueba para ver si un sitio web o aplicación es vulnerable a inyección SQL. Si esto funciona, el atacante puede manipular la base de datos, leer datos confidenciales o incluso tomar control del sistema.

Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. 

Puedes usar un ataque UNION para recuperar los resultados de una consulta inyectada.

Para resolver el laboratorio, muestra la cadena de versión de la base de datos.

Es importante aclarar que este tipo de ataque es utilizado para la versión de Oracle

En la mayoría de los motores de base de datos cada declaración SELECT debe especificar una tabla para seccionar un FROM

Ejemplo, "select * from"


Hay una tabla de ORACLE que se llama DUAL, por ejemplo: UNION SELECT 'abc' FROM dual

1.    Utilizaremos Burn Suite para interceptar y modificar la solicitud que establece el filtro de la                    categoría producto

2.    Ponemos nuestro Burp en modo intercept on y hacemos clic en GIFTs

        


En el siguiente Request pegamos la siguiente clausula 
'+UNION+SELECT+'abc','def'+FROM+dual--

Y le damos en Forward

    





3.    Vamos a llegar a la siguiente pantalla y hacemos clic en GIFST

        


4.    Capturamos el siguiente GET y le asignamos el siguiente valor        

                       '+UNION+SELECT+BANNER,+NULL+FROM+v$version--


        Podremos observar que nos devuelve información de la versión de la base de datos.,

        


       Con esto terminado de completar el Laboratorio

        

Desglose:

  • + → Es una representación de un espacio en URL encoding.

  • UNION SELECT → Es una técnica que combina los resultados de dos consultas SQL. El atacante la usa para inyectar una nueva consulta que sea válida y devuelva resultados.

  • 'abc','def' → Son valores de prueba. El atacante intenta ver si puede insertar datos arbitrarios en la respuesta.

  • FROM dual → En Oracle, DUAL es una tabla especial de una sola fila. Se usa para ejecutar SELECT sin tener que especificar una tabla real.

  • -- → Comentario en SQL. Todo lo que venga después es ignorado, lo cual sirve para anular el resto de la consulta legítima.


  • Saludos!






    sábado, 14 de junio de 2025

    02 SQL injection vulnerability allowing login bypass



     SQL injection


    Este laboratorio presenta una vulnerabilidad de inyección SQL en la función de inicio de sesión (Login)

    Para solucionarlo, realice un ataque de inyección SQL que inicie sesión en la aplicación como administrator.

    Utilizaremos BurpSuite para interceptar y modificar el login request

    Modificaremos el parámetro username y le agregaremos el siguiente valor administrator'--



    1.    Accedemos al laboratorio 

    https://portswigger.net/academy/labs/launch/befc0f5ddbc0e32a7adc4c9d4d286582f462f70bf32a8d5df15489d679dcd5c9?referrer=%2fweb-security%2fsql-injection%2flab-login-bypass

    2.    Ponemos nuestro BurpSuite en modo interceptor

            


    3.     Vamos a My account

        


    4.    Desde BurpSuite le damos forward hasta que llegamos a la siguiente pantalla, aquí completamos con el username administrator y en el campo password ponemos lo que queramos y le vamos a dar a Log In

        





    5. Cuando llegamos hasta la siguiente consulta debemos cambiar el valor del campo username por el           Siguiente valor 
    administrator'-- Y le damos Forward

        



    6.    Acá ingresamos un mail y le damos en update, con esto resolvemos el lab

        





    Explicacion: 

    ' = Cierra cadena esperada

    -- = comenta el resto de la consulta ignorando el AND password=...

    Con esto omitimos el campo password y solo colocamos el username para poder enviarnos el mail a nuestra casilla y podes cambiar la contraseña


    ¿Para que se utiliza?

    Se utiliza para burlar la autenticación en aplicaciones web que construyen sus consultas SQL sin validar correctamente la entrada del usuario.

    ¿Qué hace esta cadena?

    Supongamos que una aplicación verifica usuarios con esta consulta:

    SELECT * FROM users WHERE username = '[USUARIO]' AND password = '[CLAVE]';


    Si vos ponés en el login:

    ° Usuario: administrator'--
    ° Contraseña: cualquier cosa (no importa)

    SELECT * FROM users WHERE username = 'administrator'--' AND password = 'cualquiercosa';

    ° '-- cierra la cadena y comenta todo lo que sigue.
    ° Por eso, se ignora la verificación de la contraseña.

    01 SQL injection - Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data



    SQL injection


      

    01 Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

    Bienvenido a este laboratorio de PORTSWIGGER, les voy a morar como lo realice

    1.    Accedemos al lab

    2. Ponemos nuestro Burp en modo Intercept
        
    3. Pinchamos en Corpotate Gift
        

    4.Ahora lo que vamos acceder es detenerlos en el siguiente GET y modificar el parametro Category



    5.  Le agregamos el siguiente valor al parámetro

            '+OR+1=1--





    6. Le damo en Forward en Burp para que pueda avanzar

    7. Pinchamos nuevamente en Corporate Gift


    8.  vamos al Burp y le pegamos nuevamente el siguiente valor 
            '+OR+1=1-- y le damos FORWARD




    9 Listo señores veremos como el Lab se completa

    NOTAS:

    Este laboratorio tiene una vulnerabilidad de SQL Inyección en el producto de categoría, con Burp podemos interceptar la request y modificar el parámetro.

    Para que sirve '+OR+1=1-- , La cadena es otra forma clásica de inyección SQL diseñada para burlar la autenticación o manipular una consulta.

    ¿Qué significa y cómo funciona?
     
    Supongamos que la aplicacion tiene la siguiente consulta

    SELECT * FROM users WHERE username = '[INPUT]' AND password = '[INPUT]';

    Si el atacante pone esto como nombre de usuario ' OR 1=1-- y pone cualquier cosa en el campo contraseña

                           


                           


    En simples palabras, al agregar el OR con 1 = 1, eso es verdadero y lo que está en gris no se interpreta, lo cual, si el usuario es correcto, la contraseña siempre será verdadera.



           



                             





     

    05 - Lab: SQL injection UNION attack, determining the number of columns returned by the query

      Lab: SQL injection UNION attack, determining the number of columns returned by the query Para el siguiente laboratorio debemos modificar e...