Inspecciona servicios web con curl en Kali

WiresharkBeginner
Practicar Ahora

Introducción

Las pruebas web comienzan comprendiendo el comportamiento HTTP habitual. Una conexión correcta, un código de estado, los metadatos de respuesta y el contenido de una página aportan partes diferentes del panorama.

Esta práctica proporciona un servicio web local para inspeccionar solicitudes GET y HEAD con curl. Leerás sus respuestas y conservarás cabeceras y contenido útiles sin adivinar directorios, realizar inyecciones ni eludir autenticación.

Lee un recurso HTTP y su estado

En este paso utilizarás curl para inspeccionar un recurso HTTP local y distinguir el estado de la aplicación del éxito de la conexión.

Entra en Kali y selecciona el espacio de trabajo compartido:

kali
cd /home/labex/project

Una URL como http://127.0.0.1:8080/scope.txt identifica un esquema (http), un host (127.0.0.1), un puerto opcional (8080) y una ruta (/scope.txt). El host y el puerto eligen el servicio; la ruta elige un recurso dentro de ese servicio.

Curl realiza solicitudes a URL. Su método HTTP predeterminado es GET, que solicita una representación de un recurso. Solicita la página de entrenamiento:

curl http://127.0.0.1:8080/

El cuerpo de respuesta es una página HTML con el título Kali Training Welcome. Curl muestra el cuerpo como texto; no representa la página como un navegador web.

La opción -i incluye las cabeceras de respuesta en la salida mostrada. Inspecciona el recurso de alcance:

curl -i http://127.0.0.1:8080/scope.txt

La línea de estado indica 200 OK, seguida de cabeceras, una línea en blanco y el cuerpo Authorized local training only. Las cabeceras HTTP describen la respuesta; el cuerpo contiene su contenido.

Solicita una ruta que el servidor proporcionado no ofrece:

curl -i http://127.0.0.1:8080/missing

Esto devuelve 404 Not Found con un cuerpo breve. La conexión TCP y el intercambio HTTP sí tuvieron éxito; la aplicación informa de que el recurso solicitado no existe. Curl sin una opción que falle según el estado puede terminar correctamente ante un HTTP 404, así que lee el estado de respuesta en lugar de suponer que toda solicitud completada corresponde a un recurso válido.

-o escribe el cuerpo en un archivo determinado. -s oculta el indicador de progreso, mientras que -S sigue mostrando un error si falla la transferencia; se combinan como -sS. Guarda el texto de alcance:

curl -sS -o scope.txt http://127.0.0.1:8080/scope.txt
cat scope.txt

Salida esperada:

Authorized local training only.

Guardaste el cuerpo de respuesta en lugar de una descripción escrita a mano.

Guarda las cabeceras de respuesta separadas del cuerpo

En este paso compararás GET y HEAD y conservarás las cabeceras y la página del servidor como artefactos separados.

La opción -I (I mayúscula) pide a curl que envíe una solicitud HEAD. HEAD solicita los metadatos de respuesta sin transferir el cuerpo del recurso:

curl -I http://127.0.0.1:8080/

Busca 200 OK, Content-Type: text/html y la cabecera del sitio de entrenamiento. La respuesta no incluye el cuerpo HTML. Una cabecera de longitud de contenido puede seguir describiendo el tamaño que tendría el cuerpo del GET correspondiente.

Utiliza GET cuando necesites el contenido real. La opción -D de curl escribe las cabeceras de respuesta en el archivo indicado después y -o escribe el cuerpo en otro archivo:

curl -sS -D response-headers.txt -o page.html http://127.0.0.1:8080/

Lee los metadatos guardados:

cat response-headers.txt

Deben incluir un estado correcto, tipo de contenido HTML y X-Training-Site: guided-web. Los campos de servidor y fecha pueden variar.

Lee el cuerpo por separado:

cat page.html

Contenido esperado:

<html><title>Kali Training Welcome</title><body>Local practice site.</body></html>

Las cabeceras y el cuerpo responden a preguntas diferentes: las primeras describen cómo respondió el servidor, mientras que el segundo contiene el recurso solicitado. Mantenerlos separados facilita las comparaciones y el procesamiento de texto posteriores.

Resumen

Interpretaste componentes de URL, realizaste solicitudes GET y HEAD, distinguiste el estado HTTP del éxito de la conexión e inspeccionaste cabeceras y cuerpo. Guardaste por separado los metadatos de respuesta originales y el contenido de la página para analizarlos después.