sad:fedora14:p5
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
sad:fedora14:p5 [2018/02/10 18:02] – José Manuel Guallar | sad:fedora14:p5 [2019/01/04 13:18] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ¿Qué es una inyección SQL? | + | **¿Qué es una inyección SQL?** |
La inyección SQL (también conocida como SQL fishing) es una técnica que se usa a menudo para atacar aplicaciones impulsadas por datos. | La inyección SQL (también conocida como SQL fishing) es una técnica que se usa a menudo para atacar aplicaciones impulsadas por datos. | ||
Línea 7: | Línea 7: | ||
La vulnerabilidad ocurre cuando la entrada del usuario se filtra incorrectamente para los caracteres de escape literales de cadena incrustados en las declaraciones SQL o la entrada del usuario no se escribe con fuerza y se ejecuta inesperadamente. La inyección SQL se conoce principalmente como un vector de ataque para sitios web, pero se puede usar para atacar cualquier tipo de base de datos SQL. | La vulnerabilidad ocurre cuando la entrada del usuario se filtra incorrectamente para los caracteres de escape literales de cadena incrustados en las declaraciones SQL o la entrada del usuario no se escribe con fuerza y se ejecuta inesperadamente. La inyección SQL se conoce principalmente como un vector de ataque para sitios web, pero se puede usar para atacar cualquier tipo de base de datos SQL. | ||
- | Requisitos para hacer la práctica | + | **Requisitos para hacer la práctica** |
- | Tener instalado Fedora 14 | + | |
- | Tener instaldo | + | Tener instalado Fedora 14\\ |
+ | Tener instaldo BackTrack 5 R1\\ | ||
Tener instalado | Tener instalado | ||
- | En esta práctica haremos lo siguiente: | + | **En esta práctica haremos lo siguiente:** |
* Probar el script de Login.php para las vulnerabilidades de inyección de SQL. | * Probar el script de Login.php para las vulnerabilidades de inyección de SQL. | ||
* Varios métodos sobre cómo omitir la cláusula de contraseña. | * Varios métodos sobre cómo omitir la cláusula de contraseña. | ||
Línea 19: | Línea 20: | ||
Hacemos un ifconfig de las dos máquinas para saber la ip, luego en el Backtrack instalamos Firebug por si no está instaldo | Hacemos un ifconfig de las dos máquinas para saber la ip, luego en el Backtrack instalamos Firebug por si no está instaldo | ||
+ | {{: | ||
---- | ---- | ||
+ | **Si no tenemos instalado Firebug** | ||
+ | |||
Abrimos el navegador y vamos a http:// | Abrimos el navegador y vamos a http:// | ||
Línea 27: | Línea 30: | ||
---- | ---- | ||
- | Desde el Bt vamos a http:// | + | Desde el Bt vamos a http:// |
- | ====== Test de la comilla simple (') ====== | + | {{: |
+ | ====== | ||
En el campo de texto " | En el campo de texto " | ||
+ | |||
+ | {{: | ||
Analizamos que ha pasado | Analizamos que ha pasado | ||
Línea 44: | Línea 50: | ||
</ | </ | ||
- | A continuación | + | A continuación |
<code sql> | <code sql> | ||
SELECT * FROM accounts WHERE username = ' | SELECT * FROM accounts WHERE username = ' | ||
</ | </ | ||
+ | {{: | ||
- | ====== Login sin password hacemos un By-Pass ====== | + | ======= Login sin password hacemos un By-Pass |
- | Ahora reemplazamos** ' or 1=1--** | + | Ahora reemplazamos ** ' or 1=1-- ** (hay que poner espacio detrás de los los --) |
**¿Qué hemos hecho?** | **¿Qué hemos hecho?** | ||
Línea 61: | Línea 68: | ||
<code sql> | <code sql> | ||
- | SELECT * FROM accounts WHERE username = '' | + | SELECT * FROM accounts WHERE username = '' |
</ | </ | ||
+ | |||
+ | {{: | ||
**Verificando resultados** | **Verificando resultados** | ||
Línea 68: | Línea 77: | ||
Ha iniciado sesión como administrador. Debido al diseño del código de Mutillidae, iniciamos sesión como administrador porque admin es el primer usuario en la tabla de cuentas. | Ha iniciado sesión como administrador. Debido al diseño del código de Mutillidae, iniciamos sesión como administrador porque admin es el primer usuario en la tabla de cuentas. | ||
- | En DVWA, como una cadena similar (**% 'o' 0 ' | + | En DVWA, como una cadena similar (**% 'or' 0 ' |
+ | |||
+ | {{: | ||
Click en '' | Click en '' | ||
+ | |||
+ | ====== Campo PASSWORD ====== | ||
+ | |||
Ahora toca el campo password, hacemos la prueba de la comilla simple en el campo Password | Ahora toca el campo password, hacemos la prueba de la comilla simple en el campo Password | ||
- | pulsamos en Login/ | + | pulsamos en **Login/ |
Analizamos los resultados de la comilla simple (') | Analizamos los resultados de la comilla simple (') | ||
Línea 93: | Línea 107: | ||
Inspeccionamos el campo de texto contraseña | Inspeccionamos el campo de texto contraseña | ||
- | Hacemos Click en Login/ | + | Hacemos Click en **Login/ |
- | Ponemos en el campo Name: samurai | + | Ponemos en el campo **Name**: **samurai** |
En Password: | En Password: | ||
y reemplazamos la palabra **password** por la palabra **text** | y reemplazamos la palabra **password** por la palabra **text** | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
Aplicamos el test que siempre es verdad **(' or 1=1 -- )** | Aplicamos el test que siempre es verdad **(' or 1=1 -- )** | ||
+ | |||
En ** name** escribimos **samurai** | En ** name** escribimos **samurai** | ||
en **password** escribimos **' or 1=1--** | en **password** escribimos **' or 1=1--** | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
Bueno, lo que veo son buenas noticias. Por un lado, estoy contento de haber iniciado sesión, pero debo iniciar sesión como samurai en lugar de administrador. | Bueno, lo que veo son buenas noticias. Por un lado, estoy contento de haber iniciado sesión, pero debo iniciar sesión como samurai en lugar de administrador. | ||
Línea 109: | Línea 133: | ||
**Obtener acceso (3)** | **Obtener acceso (3)** | ||
- | Inspeccionaremos el cuadro de texto Password, | ||
- | Clic en Login/ | ||
- | Name : samurai | ||
- | Password : clic boton derecho y click en inspeccionar elemento | ||
- | Editamos | + | Inspeccionaremos |
- | reemplazamos la palabra " | + | Clic en Login/ |
- | En vez del 20 en el campo size ponemos 50 | + | Name : samurai\\ |
- | Despues de maxlengh= ponemos 50 | + | Password : clic boton derecho y click en inspeccionar elemento\\ |
- | Minimizamos Firebub | + | |
- | Aplicamos el text que siempre es verdad | + | Editamos el campo Password\\ |
- | Name : samurai | + | reemplazamos la palabra " |
- | password : ' or (1=1 and username=' | + | En vez del 20 en el campo size ponemos 50\\ |
+ | Despues de maxlengh= ponemos 50\\ | ||
+ | Minimizamos Firebub\\ | ||
+ | |||
+ | Aplicamos el text que siempre es verdad\\ | ||
+ | Name : samurai\\ | ||
+ | password : ' or (1=1 and username=' | ||
vemos que el pasword ya no está oculto por asterisco, sino está en texto plano | vemos que el pasword ya no está oculto por asterisco, sino está en texto plano | ||
Línea 138: | Línea 163: | ||
use nowasp; | use nowasp; | ||
</ | </ | ||
- | ** | + | |
- | show databases** nos proporciona una lista de bases de datos. | + | **show databases** nos proporciona una lista de bases de datos.\\ |
- | **use nowasp**, nos permite seleccionar una base de datos en particular. | + | **use nowasp**, nos permite seleccionar una base de datos en particular.\\ |
<code sql> | <code sql> | ||
show tables; | show tables; | ||
Línea 146: | Línea 171: | ||
</ | </ | ||
**show tables** nos permite ver todas las tablas en la base de datos nowasp. \\ | **show tables** nos permite ver todas las tablas en la base de datos nowasp. \\ | ||
- | **desc accounts**, nos permite ver todas las columnas de la tabla accounts. | + | **desc accounts**, nos permite ver todas las columnas de la tabla accounts.\\ |
<code sql> | <code sql> | ||
select * from accounts; | select * from accounts; | ||
Línea 155: | Línea 180: | ||
<code sql> | <code sql> | ||
- | | + | select * from accounts where username = '' |
- | select * from accounts where username = ' | + | select * from accounts where username = ' |
- | select * from accounts where username = ' | + | select * from accounts where username = ' |
- | select * from accounts where username = ' | + | select * from accounts where username = ' |
</ | </ | ||
Línea 167: | Línea 192: | ||
<code sql> | <code sql> | ||
- | |||
select * from accounts where username = ''' | select * from accounts where username = ''' | ||
'; | '; | ||
select * from accounts where username = '' | select * from accounts where username = '' | ||
- | | ||
</ | </ | ||
- | La primera consulta es un ejemplo que hemos hecho al princicip de la practica | + | La primera consulta es un ejemplo que hemos hecho al princicip de la practica\\ |
- | El intérprete de comandos mysql continúa en la línea siguiente, lo que significa que la instrucción está rota, lo que produjo los errores que hemos visto antes. Para volver al shell mysql, debemos completar la declaración con a (';).// | + | El intérprete de comandos mysql continúa en la línea siguiente, lo que significa que la instrucción está rota, lo que produjo los errores que hemos visto antes. Para volver al shell mysql, debemos completar la declaración con a ('; |
- | La segunda consulta es el ejemplo ** 'or 1 = 1** produce una condición siempre verdadera, y el; **--** comentarios / deshabilita el "campo contraseña" | + | La segunda consulta es el ejemplo ** 'or 1 = 1** produce una condición siempre verdadera, y el; **--** comentarios / deshabilita el "campo contraseña" |
| | ||
< | < | ||
- | |||
select * from accounts where username = ' | select * from accounts where username = ' | ||
- | select * from accounts where username = ' | + | select * from accounts where username = ' |
- | | + | |
</ | </ | ||
- | La primera consulta es un ejemplo ya hecho. Para el diseño del código con el Fedora, solo se muestra un resultado en la aplicación. Sin embargo, ejecutar esta consulta directamente en mysql generará todos los registros.\\ | + | La primera consulta es un ejemplo ya hecho. Para el diseño del código con el Fedora, solo se muestra un resultado en la aplicación. Sin embargo, ejecutar esta consulta directamente en mysql generará todos los registros. \\ |
- | La segunda consulta, el ** 'o (1 = 1 y nombre de usuario =' samurai '); -** produce una condición siempre verdadera, y el;**--** comentarios/ | + | La segunda consulta, el ** 'o (1 = 1 y nombre de usuario =' samurai '); -** produce una condición siempre verdadera, y el;**--** comentarios/ |
| | ||
- | Practica que hay que entregar | + | '' |
<code sql> | <code sql> |
sad/fedora14/p5.1518285760.txt.gz · Última modificación: (editor externo)