Web Requests
Overview
Para mÃ, este módulo me permitió aclarar conceptos y afianzar conocimientos básicos sobre aplicaciones web, que son importantes para testear su seguridad.
Aprendà a reconocer la estructura de una URL con sus componentes esenciales, como el protocolo, el host, el puerto, la ruta, entre otros. Y que incluso es posible autenticarse desde la propia URL de la siguiente forma: http://user:password@host:port/path. En su momento me pareció muy curioso :)
Hay mucha info sobre cómo funcionan los protocolos HTTP y HTTPS. Enseña cómo trabajar con distintos métodos HTTP, como GET, POST, PUT y DELETE, asà como también a analizar las cabeceras de solicitud y de respuesta.
Me sirvió para familiarizarme con cURL, una herramienta de lÃnea de comandos que supone una forma muy práctica y rápida para realizar solicitudes HTTP directamente desde la terminal. Aunque sin dudas, la parte más divertida fue la de aprender a interactuar con una API para leer, crear, modificar y eliminar datos.
A continuación, los ejercicios...
HyperText Transfer Protocol (HTTP)
El ejercicio consiste en utilizar cURL para descargar el archivo que se encuentra en '/download.php' en el servidor. Para eso, utilizamos el siguiente comando:
-s
para silenciar el verbose de cURL.
-O
para guardar el output en un archivo del mismo nombre del recurso al que apuntamos.
Ahora, la flag está almacenada en el archivo download.php
en la ruta actual de trabajo:
HTB{64$!c_cURL_****}
.
HTTP Requests and Responses
Lanzamos una petición al servidor, usando el parámetro -v
para ver las cabeceras tramitadas tanto en la solicitud como en la respuesta.
Primera pregunta: ¿Cuál es el método HTTP utilizado al interceptar la petición? Como podemos observar, se trata de una petición por el método GET
.
La siguiente pregunta nos solicita encontrar la versión de Apache del servidor en las cabeceras de respuesta (el formato de la respuesta es X.Y.ZZ). Se trata de la versión 2.4.41
.
HTTP Headers
Para encontrar la flag, accedemos a la página web desde el navegador. Nos vamos a encontrar con un sitio que se ve asÃ:
Abrimos la Herramientas de Desarrollador con Ctrl + Shift + I
y nos dirigimos a la pestaña Network.
Recargamos la página para que se cargue el recurso que contiene la flag.
Nos dirigimos a la URL que contiene la flag: HTB{p493_r3qu3$t$_*******}
GET
Abrimos el navegador y colocamos la dirección IP del target. Nos autenticamos como el usuario admin con la contraseña admin.
Nos encontramos con un buscador de ciudades. Sin embargo, no se encuentra funcional.
Para encontrar la flag, abrimos una consola y ejecutamos el siguiente comando indicando el recurso /search.php
con 'search' como parámetro y 'flag' como valor de dicho parámetro.
POST
Nos logueamos en la página con las credenciales admin:admin
.
Abrimos las Herramientas de Desarrollador y vamos a la pestaña Storage. Allà se almacena una cookie de sesión.
Ahora usamos esa cookie para arrastrar la sesión sin necesidad de incluir las credenciales. Buscamos la flag a través de una petición por POST en formato JSON con cURL.
CRUD API
Primero lanzamos una petición a la API para ver todas las ciudades:
Actualizamos el nombre de cualquier ciudad (en mi caso, elegà Baltimore) a 'flag'.
Borramos cualquier ciudad (en mi caso, Detroit).
Finalmente, buscamos por una ciudad llamada 'flag' y con eso finalizamos el módulo.
Last updated