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

9.3 KiB
Raw Blame History

Bypasses de 403 y 401

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Equipos Rojos de HackTricks AWS)!

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 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 Agentes de Usuario 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 evitar 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 diferentes respuestas.
  • Fuzz de encabezados HTTP especiales mientras haces fuzzing de Métodos HTTP.
  • Elimina el encabezado Host y tal vez puedas evitar 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 evitar la protección). Intenta también_** /%252e**/ruta (codificación de URL doble)
  • Intenta bypass 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 evitado la verificación del nombre /ruta
  • Otros bypass de rutas:
  • 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
  • Otros bypass 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

  • Cambia el valor del parámetro: De id=123 --> id=124
  • Agrega parámetros adicionales a la URL: ?id=124 —-> id=124&isAdmin=true
  • Elimina los parámetros
  • Reordena los parámetros
  • Usa caracteres especiales.
  • Realiza pruebas de límites en los parámetros — proporciona valores como -234 o 0 o 99999999 (solo algunos valores de ejemplo).

Versión del Protocolo

Si estás usando HTTP/1.1 intenta usar 1.0 o incluso prueba si admite 2.0.

Otros Bypasses

  • Obtén la IP o CNAME del dominio e intenta contactarlo directamente.
  • Intenta saturar el servidor enviando solicitudes GET comunes (Funcionó para este tipo con Facebook).
  • Cambia el protocolo: de http a https, o de https a http
  • Ve a https://archive.org/web/ y verifica si en el pasado ese archivo era accesible a nivel mundial.

Fuerza Bruta

  • Adivina la contraseña: Prueba las siguientes credenciales comunes. ¿Sabes algo sobre la víctima? ¿O el nombre del desafío CTF?
  • Fuerza bruta: Prueba la 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 de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: