Saltearse al contenido

Fundamentos de HTTP

HTTP es el protocolo de la web, y la web es la mayor superficie de ataque que existe. Entender cómo se compone una petición y una respuesta, qué significan los métodos, cabeceras y códigos de estado, y cómo se mantiene el estado (cookies, sesiones) es el prerrequisito absoluto de toda el área de Hacking Web: cada ataque de esa sección es, en el fondo, una petición HTTP manipulada.

POST /login HTTP/1.1 <- método, ruta, versión
Host: target.com <- cabeceras
User-Agent: ...
Cookie: session=abc123
Content-Type: application/x-www-form-urlencoded
<- línea en blanco
user=admin&pass=secreto <- cuerpo (body)

Y la respuesta:

HTTP/1.1 200 OK <- versión, código de estado
Set-Cookie: session=abc123; HttpOnly
Content-Type: text/html
<- línea en blanco
<html>... <- cuerpo
GET pedir un recurso (parámetros en la URL)
POST enviar datos (en el cuerpo) -> login, formularios
PUT crear/reemplazar DELETE borrar
PATCH modificar parcial HEAD como GET sin cuerpo
OPTIONS métodos permitidos (útil en recon de APIs/CORS)

Códigos de estado (lo que te dicen al atacar)

Sección titulada «Códigos de estado (lo que te dicen al atacar)»
2xx éxito 200 OK, 201 Created
3xx redirección 301/302 (open redirect), 304 Not Modified
4xx error cliente 401 no autenticado, 403 prohibido, 404 no existe, 429 rate-limit
5xx error servidor 500 (a veces filtra stack traces), 502/503

Un 403→200 según un parámetro, un 500 ante una comilla, o un 302 a un dominio controlado son señales de vulnerabilidad.

Cookie / Set-Cookie estado de sesión (HttpOnly, Secure, SameSite)
Authorization Bearer <token> / Basic
Host enrutamiento virtual (host header attacks)
Referer / Origin CSRF, CORS
X-Forwarded-For IP del cliente (spoofable)
Content-Type cómo se interpreta el cuerpo (JSON vs form)
Content-Security-Policy, HSTS, X-Frame-Options cabeceras defensivas

HTTP es sin estado: cada petición es independiente. El estado se mantiene con:

  • Cookies de sesión: el servidor guarda la sesión y el navegador reenvía la cookie.
  • Tokens (JWT, Bearer): la identidad viaja en una cabecera, a menudo sin estado en servidor.

Entender esto es la base de los ataques a autenticación, sesiones, CSRF y JWT.

HTTPS = HTTP sobre TLS (cifrado). HTTP/2 y HTTP/3 cambian el transporte (multiplexación) y abren clases propias de ataque (request smuggling por downgrade, ver HTTP Request Smuggling).

Burp Suite / OWASP ZAP interceptan, modifican y repiten peticiones
curl -v / -X POST -d hacer peticiones desde la terminal

El proxy entre tu navegador y el servidor es la herramienta #1 de web: ves y modificas cada petición.

Toda el área de Hacking Web (SQLi, XSS, IDOR, SSRF, CSRF…) consiste en manipular peticiones HTTP. Si no entiendes qué es una cabecera, un método o una cookie, no entiendes ni el ataque ni la defensa. Es el idioma de la web.

  • Leo y construyo una petición/respuesta HTTP a mano
  • Conozco los métodos y qué implica cada uno
  • Interpreto códigos de estado y qué señalan al atacar
  • Identifico las cabeceras relevantes en seguridad
  • Explico cómo se mantiene el estado (cookies, sesiones, tokens)
  • Uso curl y un proxy (Burp/ZAP) para interceptar y repetir
  • Entiendo HTTPS y por qué HTTP/2 abre ataques nuevos