Práctica 9: Pentesting de servicios HTTP
Objetivo: Aplicar Pentesting a servicios HTTP.
Forma de trabajo:
- Esta práctica se realizará de manera individual.
Planteamiento del Problema:
- ¿Cómo protegerse del SQL Injection?
Pre-Requisitos:
- Se requiere una computadora para hacer las pruebas, se recomienda instalar una máquina virtual con una distribución Linux (se recomienda Ubuntu). Aquí se encuentran las instrucciones para la:
- Se requiere instalar un sistema LAMPP (Linux+Apache+MySQL+PHP) en nuestra distribución de Linux, se recomienda instalar el XAMPP. Aquí se encuentran las instrucciones para la:
- Se requiere instalar una página para hacer las pruebas de SQL Injection que contenga un formulario y que trate de ingresar a una sistema. Aquí se encuentran un "Ejemplo 1" que:
Desarrollo:
PARTE 1: conexión HTTP
Hacer un programa en Python que haga lo siguiente:
- Preguntar por la dirección IP de la computadora que tiene instalado el servidor Web (Apache).
- Intentar hacer una conexión HTTP a esta computadora utilizando el método "get" del protocolo HTTP para pedir la página principal.
- Imprimir en pantalla si se pudo hacer la conexión y si se pudo obtener su página principal.
- Para esta parte (y toda la práctica) se debe utilizar el ejemplo anterior ("Ejemplo 1"):
PARTE 2: Búsqueda de Formularios (Web Scraping)
- A acontinuación hay que analizar la página Web principal que obtuvimos (index.html) y buscaremos las etiquetas "form" (formularios html).
- En caso de que la página principal no contenga etiquetas "form", procederemos a buscar los enlaces que contenga la página (etiquetas "a href").
- Dirigirse a la página a donde apuntaba la etiqueta "a href", y repetir el proceso de búsqueda de etiquetas "form" en los nuevos enlaces hasta encontrar alguno.
PARTE 3: Pentesting a SQL
- Ya que tengamos ubicada la página que tiene un formulario (etiqueta "form") procederemos a ubicar la etiqueta "action", para ver hacia donde se van los datos del formulario.
- Ahora se tiene que intentar hacer un "SQL Injection" a través del formulario y enviar los datos a inyectar a la página indicada por el "action".
- Imprimir en pantalla si se pudo hacer el "SQL Injection".
Ejemplo: (hacer click sobre la imagen para hacer mas grande):
Ejemplos de apoyo para realizar la práctica:
Reporte del alumno (resultados):
- Hacer el programa en Python y subirlo al GitHub Classroom.
FECHA DE ENTREGA LÍMITE: Martes 11 de mayo, 23:00 horas, en GitHub Classroom.
Portal de Tecnología desarrollado por: Rogelio Ferreira Escutia