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

10 KiB
Raw Blame History

Bypasses de 403 y 401

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

DragonJAR Security Conference es un evento internacional de ciberseguridad con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.
¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!:

{% embed url="https://www.dragonjarcon.org/" %}

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 las cabeceras 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. Pero aún necesitas encontrar una forma de extraer esa información.
  • Usar una cabecera HTTP como X-HTTP-Method-Override: PUT puede sobrescribir el verbo utilizado.
  • Usa el verbo TRACE y si tienes mucha suerte, tal vez en la respuesta también puedas ver las cabeceras agregadas por los proxies intermedios que podrían ser útiles.

Fuzzing de cabeceras HTTP

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

  • Intenta usar otros User Agents para acceder al recurso.

  • Fuzzing de cabeceras HTTP: Intenta usar cabeceras HTTP de proxy, autenticación básica HTTP y fuerza bruta NTLM (solo con 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 utilizando estas otras cabeceras:

  • 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 cabeceras hop-by-hop.
  • Fuzzing de cabeceras HTTP especiales en busca de respuestas diferentes.
  • Fuzzing de cabeceras HTTP especiales mientras se hace fuzzing de métodos HTTP.
  • Elimina la cabecera Host y tal vez puedas evadir la protección.

Fuzzing de ruta

Si /ruta está bloqueada:

  • Intenta usar /%2e/ruta _(si el acceso está bloqueado por un proxy, esto podría evadir la protección). También prueba con_** /%252e**/ruta (codificación URL doble)
  • Intenta evadir Unicode: /%ef%bc%8fruta (Los caracteres codificados en URL son como "/"), por lo que cuando se decodifiquen nuevamente será //ruta y tal vez ya hayas evadido la verificación del 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)
  • Usa toda esta lista en las siguientes situaciones:
  • /FUZZsecreto
  • /FUZZ/secreto
  • /secretoFUZZ
  • Otras evasiones de API:
  • /v3/users_data/1234 --> 403 Prohibido
  • /v1/users_data/1234 --> 200 OK
  • {“id”:111} --> 401 No autorizado
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 Unauthorized
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<legit_id>","user_id":"<victims_id>"} (JSON Parameter Pollution)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (Parameter Pollution)

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 utiliza HTTP/1.1, intente usar 1.0 o incluso pruebe si admite 2.0.

Otros métodos de bypass

  • Obtenga la IP o CNAME del dominio e intente contactarlo directamente.
  • Intente sobrecargar el servidor enviando solicitudes GET comunes (Funcionó para este tipo con Facebook).
  • Cambie el protocolo: de http a https, o de https a http.
  • Vaya a https://archive.org/web/ y verifique si en el pasado ese archivo era accesible en todo el mundo.

Fuerza bruta

  • Adivinar la contraseña: Pruebe las siguientes credenciales comunes. ¿Sabe algo sobre la víctima? ¿O el nombre del desafío CTF?
  • Fuerza bruta: Pruebe 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

DragonJAR Security Conference es un evento internacional de ciberseguridad con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.
¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!:

{% embed url="https://www.dragonjarcon.org/" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥