0% encontró este documento útil (0 votos)
83 vistas8 páginas

Actividad SQL Injection - Cardenas - Torres

Este documento describe los pasos realizados en la actividad de SQL Injection utilizando la herramienta WebGoat. Se realizan ejercicios introductorios, avanzados y de mitigación de SQL Injection.

Cargado por

Andres Cardenas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
83 vistas8 páginas

Actividad SQL Injection - Cardenas - Torres

Este documento describe los pasos realizados en la actividad de SQL Injection utilizando la herramienta WebGoat. Se realizan ejercicios introductorios, avanzados y de mitigación de SQL Injection.

Cargado por

Andres Cardenas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Actividad No. 2.1 Uso de OSWAP WebGoat.

Realizado por: Xavier Cárdenas y Bernardo Torres.

En esta actividad se realizará los tres puntos de SQL Injection mediante WebGoat.

Una ves realizada la instalación del WebGoat, nos dirigimos a las pestañas de SQL Injection
para realizar la actividad de Introducción, misma que posee 13 pasos.

Paso2: De la base de datos donde se encuentran los empleados, debemos realizar la consulta,
a que departamento pertenece el usuario Bob.

SELECT department FROM employees WHERE userid= ‘96134’

Paso 3: De la base de datos, debemos actualizar el departamento al que pertenece el usuario


Tobi

UPDATE employees SET department = ‘Sales’ WHERE userid =’89762’


Paso 4: Agregar un nuevo campo a la base de datos, que será los números de teléfono de los
usuarios.

Paso 5: Debemos asignar derecho a los usuarios, mediante el siguiente código.

GRANT all ON grant_rights TO unauthorized_user

Pao 6: Colocamos el nombre de uno de los usuarios para conocer como funcionaria el query.

Paso 9: Vamos a realizar una consulta, en donde nos responda toda la información relacionada
con el apellido Smith.
Paso 10: Vamos a intentar recuperar todos los datos de usuario, pero usaremos la inyección de
manera numérica en los campos del login _count y user_id.

Paso 11: En este s necesitamos recuperar todos los datos de los usuarios, mediante los campos
de ingreso presente
Employee Name: A
Authentication TAN: ' OR '1' = '1

Paso 12: Se realizara una actualización en los salarios de la base de datos.

Smith '; UPDATE employees set salary = 90000 where last_name='Smith' –

Paso 13: Debemos eliminar la tabla donde se han registrado todas las acciones, evitando que la
misma pueda ser comprometida

Drop table access_log—


PARTE 2 SQL INJECCTION ADVANCE

Los pasos 1 y 2, son de carácter educativo, puesto que se explica lo necesario y se conoce
caracteres especiales para poder realizar la segunda parte de SQL INJECTION.

Paso 3: Debemos utilizar todos los caracteres especiales aprendidos, para poder obtener
contenido de otras tablas.

En el cuadro de Name colocaremos el siguiente query para obtener la información necesaria.

‘;SELECT * FORM user_system_data; --

En la pestaña de password, validamos que la contraseña sea la correcta. La contraseña


utilizada es passw0rd.

Paso 4: Nuevamente el punto 4 es de carácter explicativo, donde se da a conocer sobre SQL


Blind Injection.

Paso 5: Debemos aplicar todo lo aprendido hasta el momento referente a SQL Injection, para
descubrir la contraseña de acceso de un usuario, el mismo será nombrado Tom.

Para realizar esta actividad, hemos visto necesario utilizar un código basado en Python aplicado
sobre la URL de WebGoat, el mismo nos dará la posibilidad de intentar descifrar la contraseña
para Tom, a continuación vamos a dar a conocer el ambiente donde se desarrolló el mencionado
código.
Dentro del código es necesario considerar parámetros específicos de la URL donde estamos
realizando el SQL Injection, estos parámetros nos ayudaran para descifrar la contraseña. Un
parámetro que se ha considerado de importancia es el webgoat_session_id.

Al compilar el código, podemos descubrir la contraseña para Tom, siendo


“thisisasecretfortomonly”

Colocamos la contraseña ingresada y realizamos una prueba de funcionamiento.

I
Paso 6: Realizar un cuestionario, el mismo se encuentra dentro de la pagina de WebGoat como
actividad final, debido al tamaño de la página se colocará cada una de las preguntas en formato
texto.

1. ¿Cuál es la diferencia entre una declaración preparada y una declaración?

Respuesta: Una declaración tiene valores en lugar de una declaración preparada.

2. ¿Cuál de los siguientes caracteres es un marcador de posición para las variables?

Respuesta: ?

3. ¿Cómo pueden las declaraciones preparadas ser más rápidas que las declaraciones?

El sistema de gestión de bases de datos compila las declaraciones preparadas, en espera de


entrada y se pre compilan de esta manera

4. ¿Cómo puede una declaración preparada prevenir la inyección de SQL?

Los marcadores de posición evitan que la entrada de los usuarios se adjunte a una consulta
SQL, resultando en una separación del código y los datos.

5. ¿Qué sucede si una persona con malas intenciones escribe en un formulario de registro?
:Robert); DROP TABLE Students;-- ¿que tiene preparada una declaración?

La base de datos registra ‘Robert' ); DROP TABLE Students;--'

PARTE 3

SQL INJECTION MITIGATION

Los Pasos 1, 2, 3, 4 son de carácter educativo, de esta manera podemos familiarizarnos con lo
necesario para la ejecución de la ultima parte.

Paso 5: En función de lo aprendido en los Pasos anteriores, es necesario escribir un código que
evite que exista vulnerabilidad en el SQL Injection.
Paso 6: Debemos escribir un código que permite una conexión que sea inmune a un ataque de
SQL Injection.

Paso 9: Los Pasos 7 y 8 son de carácter educativo, donde aprenderemos sobre las consultas
parametrizadas. En este punto es necesario realizar una consulta que permita validar la
entrada recibida de un usuario, mediante el siguiente query.

a'/**/union/**/select/**/user_system_data.*,'1','1',1/**/from/**/user_system_data;--

Paso 10. Debemos validar nuevamente si la consulta no tenía falla y solo se realizó validación
de entrada, mediante el siguiente querry.
a';/**/seselectlect/**/*/**/frfromom/**/user_system_data;--

Paso 12. Se necesita realizar una inyección SQL a través del campo ORDER BY, explicado en el
Paso 11. Se debe encontrar la dirección ip del servidor de webgoat-prd.
Examinamos las cabeceras de la URL para identificar parámetros que nos permitan descifrar la
dirección ip, siendo la siguiente : xxx.130.219.202.

Luego de una verificación de parámetros y utilizar lo aprendido en los puntos educativos, se


pudo obtener la dirección ip completa, siendo esta: 104.130.219.202. Posterior realizamos una
verificación.

También podría gustarte