# Flask
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Utiliza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\ Obtén acceso hoy mismo: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} **Probablemente, si estás jugando un CTF, una aplicación Flask estará relacionada con** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.** ## Cookies El nombre de sesión de la cookie por defecto es **`session`**. ### Decodificador Decodificador de cookies de Flask en línea: [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) #### Manual Obtén la primera parte de la cookie hasta el primer punto y decodifícala en Base64> ```bash echo "ImhlbGxvIg" | base64 -d ``` La cookie también está firmada usando una contraseña ### **Flask-Unsign** Herramienta de línea de comandos para obtener, decodificar, realizar fuerza bruta y crear cookies de sesión de una aplicación Flask adivinando claves secretas. {% embed url="https://pypi.org/project/flask-unsign/" %} ```bash pip3 install flask-unsign ``` #### **Decodificar Cookie** La decodificación de una cookie es un proceso importante en la pentesting web, ya que puede revelar información sensible almacenada en la cookie. Al decodificar una cookie, se puede obtener información como el nombre de usuario, la identificación de sesión u otros datos confidenciales. Existen varias herramientas y técnicas disponibles para decodificar cookies. A continuación, se muestra un ejemplo de cómo decodificar una cookie utilizando Python y la biblioteca Flask. ```python from flask import Flask, request import base64 app = Flask(__name__) @app.route('/') def index(): cookie = request.cookies.get('session') if cookie: decoded_cookie = base64.b64decode(cookie).decode('utf-8') return f'Decoded Cookie: {decoded_cookie}' else: return 'No cookie found' if __name__ == '__main__': app.run() ``` En este ejemplo, se utiliza Flask para crear una aplicación web básica. La función `index()` se encarga de obtener la cookie llamada 'session' y decodificarla utilizando la función `base64.b64decode()`. Luego, se muestra la cookie decodificada en la respuesta. Al ejecutar esta aplicación y acceder a la página principal, se mostrará la cookie decodificada si existe. Esto puede ser útil para identificar información sensible almacenada en las cookies y evaluar la seguridad de una aplicación web. Es importante tener en cuenta que la decodificación de una cookie no siempre revelará información confidencial. Algunas aplicaciones pueden cifrar o codificar adicionalmente los datos de la cookie antes de almacenarlos. En tales casos, puede ser necesario utilizar técnicas adicionales para descifrar o decodificar los datos. ```bash flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8' ``` #### **Fuerza Bruta** Brute force, also known as brute force attack, is a hacking technique used to gain unauthorized access to a system or account by systematically trying all possible combinations of passwords until the correct one is found. This method relies on the assumption that the password is weak and can be easily guessed. In web application pentesting, brute force attacks are commonly used against login pages or any other form that requires user authentication. Attackers use automated tools to send a large number of login attempts, trying different combinations of usernames and passwords. To protect against brute force attacks, it is important to implement strong password policies, such as requiring complex passwords and enforcing account lockouts after a certain number of failed login attempts. Additionally, implementing CAPTCHA or rate limiting mechanisms can help prevent automated brute force attacks. #### **Fuerza Bruta** La fuerza bruta, también conocida como ataque de fuerza bruta, es una técnica de hacking utilizada para obtener acceso no autorizado a un sistema o cuenta mediante la prueba sistemática de todas las combinaciones posibles de contraseñas hasta encontrar la correcta. Este método se basa en la suposición de que la contraseña es débil y puede ser fácilmente adivinada. En la pentesting de aplicaciones web, los ataques de fuerza bruta se utilizan comúnmente contra páginas de inicio de sesión u cualquier otro formulario que requiera autenticación de usuario. Los atacantes utilizan herramientas automatizadas para enviar un gran número de intentos de inicio de sesión, probando diferentes combinaciones de nombres de usuario y contraseñas. Para protegerse contra los ataques de fuerza bruta, es importante implementar políticas de contraseñas fuertes, como requerir contraseñas complejas y aplicar bloqueos de cuenta después de un cierto número de intentos de inicio de sesión fallidos. Además, implementar CAPTCHA o mecanismos de limitación de velocidad puede ayudar a prevenir ataques de fuerza bruta automatizados. ```bash flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '' --no-literal-eval ``` #### **Firma** Signing is a process used to ensure the integrity and authenticity of data. In the context of web applications, signing is commonly used to verify the authenticity of user requests and prevent tampering. La firma es un proceso utilizado para garantizar la integridad y autenticidad de los datos. En el contexto de las aplicaciones web, la firma se utiliza comúnmente para verificar la autenticidad de las solicitudes de los usuarios y prevenir la manipulación. ```bash flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' ``` #### Firma usando versiones antiguas (legacy) When using Flask, it is important to be aware of the potential security risks associated with using legacy versions. Legacy versions of Flask may have vulnerabilities that can be exploited by attackers. Therefore, it is recommended to always use the latest version of Flask to ensure the best security. To sign data using legacy versions of Flask, you can use the `itsdangerous` library. This library provides a `URLSafeSerializer` class that can be used to sign and verify data. Here is an example of how to sign data using legacy versions of Flask: ```python from itsdangerous import URLSafeSerializer # Create a serializer object with a secret key serializer = URLSafeSerializer('your_secret_key') # Sign the data signed_data = serializer.dumps('your_data') # Verify the signed data verified_data = serializer.loads(signed_data) ``` In the example above, `your_secret_key` should be replaced with your actual secret key, and `your_data` should be replaced with the data you want to sign. By using the `URLSafeSerializer` class from the `itsdangerous` library, you can securely sign and verify data in legacy versions of Flask. However, it is still recommended to upgrade to the latest version of Flask to take advantage of the latest security features and patches. ```bash flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy ``` ### **RIPsession** Herramienta de línea de comandos para realizar ataques de fuerza bruta en sitios web utilizando cookies creadas con flask-unsign. {% embed url="https://github.com/Tagvi/ripsession" %} ```bash ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt ``` ### SQLi en la cookie de sesión de Flask con SQLmap [**Este ejemplo**](../../pentesting-web/sql-injection/sqlmap/#eval) utiliza la opción `eval` de sqlmap para **firmar automáticamente** las cargas útiles de sqlmap para Flask utilizando un secreto conocido.
Utiliza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\ Obtén acceso hoy mismo: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).