12 KiB
Flask
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? Ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Utilisez Trickest pour construire et automatiser des workflows alimentés par les outils communautaires les plus avancés au monde.
Obtenez un accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Probablement, si vous jouez à un CTF, une application Flask sera liée à SSTI.
Cookies
Le nom de session par défaut pour les cookies est session
.
Décodeur
Décodeur de cookies Flask en ligne : https://www.kirsle.net/wizards/flask-session.cgi
Manuel
Obtenez la première partie du cookie jusqu'au premier point et décodez-le en Base64>
echo "ImhlbGxvIg" | base64 -d
Le cookie est également signé à l'aide d'un mot de passe
Flask-Unsign
Outil en ligne de commande pour récupérer, décoder, forcer par la méthode brute et créer des cookies de session d'une application Flask en devinant les clés secrètes.
{% embed url="https://pypi.org/project/flask-unsign/" %}
pip3 install flask-unsign
Décoder le Cookie
To decode a cookie, you can use various tools and techniques. One common method is to use a base64 decoder to decode the cookie value. Base64 encoding is commonly used to encode binary data into ASCII characters, and it is often used to encode cookie values.
Here is an example of how you can decode a cookie using Python:
import base64
def decode_cookie(cookie):
decoded_cookie = base64.b64decode(cookie)
return decoded_cookie.decode('utf-8')
cookie_value = 'SGVsbG8gV29ybGQh'
decoded_value = decode_cookie(cookie_value)
print(decoded_value)
In this example, we import the base64
module and define a function called decode_cookie
that takes a cookie value as input. The function uses the b64decode
function from the base64
module to decode the cookie value. We then return the decoded value as a UTF-8 encoded string.
We create a variable called cookie_value
and assign it the value of the cookie we want to decode. We then call the decode_cookie
function with cookie_value
as the argument and assign the returned decoded value to a variable called decoded_value
. Finally, we print the decoded value.
Keep in mind that decoding a cookie does not necessarily mean you will be able to understand its contents. Cookies can be encrypted or encoded in various ways, so decoding a cookie may not always provide meaningful information. It is important to analyze the decoded value and understand the context in which the cookie is used to gain insights from it.
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
Brute Force
La technique de Brute Force est une méthode d'attaque utilisée pour essayer toutes les combinaisons possibles de mots de passe jusqu'à ce que le bon soit trouvé. C'est une approche simple mais efficace pour contourner les mesures de sécurité et accéder à un système ou à un compte. Les attaquants utilisent souvent des outils automatisés pour effectuer des attaques de force brute, ce qui leur permet de tester rapidement de nombreuses combinaisons en peu de temps. Pour se protéger contre les attaques de force brute, il est important d'utiliser des mots de passe forts et de mettre en place des mesures de sécurité supplémentaires telles que des verrouillages de compte après un certain nombre de tentatives infructueuses.
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
Signature
Une signature est une méthode utilisée pour vérifier l'intégrité et l'authenticité des données. Elle est généralement utilisée pour s'assurer qu'un message n'a pas été modifié pendant le transit et qu'il provient bien de la source prétendue.
Dans le contexte du développement web, la signature est souvent utilisée pour protéger les cookies de session. Lorsqu'un cookie est signé, il est crypté avec une clé secrète et une signature est ajoutée pour vérifier son intégrité. Lorsque le serveur reçoit le cookie, il peut vérifier la signature pour s'assurer que le cookie n'a pas été modifié.
Flask, un framework web populaire en Python, fournit une fonctionnalité intégrée pour signer les cookies. Pour signer un cookie dans Flask, vous pouvez utiliser la méthode set_signed_cookie()
de l'objet response
. Cette méthode prend le nom du cookie, sa valeur et une clé secrète comme arguments.
Voici un exemple de code qui signe un cookie dans Flask :
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def index():
response = make_response('Hello, World!')
response.set_signed_cookie('session', '123456', secret='mysecretkey')
return response
if __name__ == '__main__':
app.run()
Dans cet exemple, le cookie de session est signé avec la clé secrète "mysecretkey". Lorsque le client envoie le cookie au serveur, Flask vérifie la signature pour s'assurer que le cookie n'a pas été modifié.
La signature des cookies est une mesure de sécurité importante pour protéger les données sensibles des utilisateurs. Il est essentiel de choisir une clé secrète forte et de garder cette clé confidentielle pour éviter toute compromission de la signature.
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
Signature en utilisant des versions obsolètes (anciennes versions)
Lors de l'évaluation de la sécurité d'une application Flask, il est important de vérifier si elle utilise des versions obsolètes qui pourraient présenter des vulnérabilités connues. Les versions obsolètes de Flask peuvent être sujettes à des attaques de contournement de sécurité ou à des failles connues qui pourraient être exploitées par des attaquants.
Pour identifier si une application Flask utilise une version obsolète, vous pouvez effectuer les étapes suivantes :
-
Recherchez la version de Flask utilisée par l'application. Cela peut être trouvé dans le fichier
requirements.txt
ou dans le fichiersetup.py
de l'application. -
Comparez la version de Flask avec la dernière version disponible sur le site officiel de Flask. Si la version utilisée par l'application est inférieure à la dernière version disponible, cela indique qu'elle utilise une version obsolète.
-
Consultez la documentation de Flask pour identifier les vulnérabilités connues dans les versions obsolètes. Si des vulnérabilités sont répertoriées pour la version utilisée par l'application, cela indique un risque potentiel.
Si vous identifiez l'utilisation d'une version obsolète de Flask, il est recommandé de mettre à jour l'application vers la dernière version stable. Les mises à jour de Flask incluent souvent des correctifs de sécurité importants qui peuvent prévenir les attaques connues.
Il est également important de noter que la mise à jour de Flask peut nécessiter des modifications dans le code de l'application pour s'adapter aux nouvelles fonctionnalités ou aux changements de comportement. Par conséquent, il est recommandé de tester soigneusement l'application après la mise à jour pour s'assurer qu'elle fonctionne correctement.
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
Outil en ligne de commande pour effectuer une attaque par force brute sur des sites web en utilisant des cookies créés avec flask-unsign.
{% embed url="https://github.com/Tagvi/ripsession" %}
ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt
SQLi dans le cookie de session Flask avec SQLmap
Cet exemple utilise l'option eval
de sqlmap pour automatiquement signer les charges utiles de sqlmap pour Flask en utilisant un secret connu.
Utilisez Trickest pour créer et automatiser facilement des flux de travail alimentés par les outils communautaires les plus avancés au monde.
Obtenez un accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? Ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.