6.6 KiB
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF revisa los PLANES DE SUSCRIPCIÓN!
- Obtén el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de HackTricks y HackTricks Cloud.
Descripción
Si un atacante puede controlar un subdominio o el dominio de una empresa o encuentra un XSS en un subdominio, podrá realizar este ataque.
Como se indicó en la sección de Hacking con Cookies, cuando se establece una cookie para un dominio (especificándolo), se utilizará en el dominio y subdominios.
{% hint style="danger" %}
Por lo tanto, un atacante podrá establecer en el dominio y subdominios una cookie específica haciendo algo como document.cookie="session=1234; Path=/app/login; domain=.example.com"
{% endhint %}
Esto puede ser peligroso ya que el atacante podría:
- Fijar la cookie de la víctima a la cuenta del atacante para que si el usuario no se da cuenta, realizará las acciones en la cuenta del atacante y el atacante podría obtener información interesante (revisar el historial de búsquedas del usuario en la plataforma, la víctima podría registrar su tarjeta de crédito en la cuenta...)
- Si la cookie no cambia después del inicio de sesión, el atacante podría simplemente fijar una cookie, esperar hasta que la víctima inicie sesión y luego usar esa cookie para iniciar sesión como la víctima.
- Si la cookie está estableciendo algún valor inicial (como en flask donde la cookie puede establecer el token CSRF de la sesión y este valor se mantendrá después de que la víctima inicie sesión), el atacante podría establecer este valor conocido y luego abusar de él (en ese escenario, el atacante podría hacer que el usuario realice una solicitud CSRF ya que conoce el token CSRF).
Orden de las Cookies
Cuando un navegador recibe dos cookies con el mismo nombre afectando parcialmente el mismo ámbito (dominio, subdominios y ruta), el navegador enviará ambos valores de la cookie cuando ambos sean válidos para la solicitud.
Dependiendo de quién tenga la ruta más específica o cuál sea la más antigua, el navegador establecerá el valor de la cookie primero y luego el valor de la otra como en: Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;
La mayoría de los sitios web solo usarán el primer valor. Entonces, si un atacante quiere establecer una cookie, es mejor hacerlo antes de que se establezca otra o establecerla con una ruta más específica.
{% hint style="warning" %} Además, la capacidad de establecer una cookie en una ruta más específica es muy interesante ya que podrás hacer que la víctima trabaje con su cookie excepto en la ruta específica donde la cookie maliciosa establecida se enviará antes. {% endhint %}
Protección Bypass
Una posible protección contra este ataque sería que el servidor web no acepte solicitudes con dos cookies con el mismo nombre pero con dos valores diferentes.
Para eludir el escenario en el que el atacante está estableciendo una cookie después de que a la víctima ya se le haya dado la cookie, el atacante podría provocar un desbordamiento de cookie y luego, una vez que se elimine la cookie legítima, establecer la maliciosa.
{% content-ref url="cookie-jar-overflow.md" %} cookie-jar-overflow.md {% endcontent-ref %}
Otro bypass útil podría ser codificar la URL del nombre de la cookie ya que algunas protecciones buscan 2 cookies con el mismo nombre en una solicitud y luego el servidor decodificará los nombres de las cookies.
Cookie Bomb
Un ataque de Cookie Tossing también puede usarse para realizar un ataque de Cookie Bomb:
{% content-ref url="cookie-bomb.md" %} cookie-bomb.md {% endcontent-ref %}
Defensas
Usa el prefijo __Host
en el nombre de la cookie
- Si un nombre de cookie tiene este prefijo, solo será aceptado en una directiva Set-Cookie si está marcado como Seguro, fue enviado desde un origen seguro, no incluye un atributo de Dominio y tiene el atributo de Ruta establecido en /
- Esto impide que los subdominios fuercen una cookie al dominio principal ya que estas cookies pueden verse como "bloqueadas por dominio"
Referencias
- @blueminimal
- https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers
- https://github.blog/2013-04-09-yummy-cookies-across-domains/
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF revisa los PLANES DE SUSCRIPCIÓN!
- Obtén el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de HackTricks y HackTricks Cloud.