9.9 KiB
Flask
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Koristite Trickest da lako izgradite i automatizujete radne tokove uz pomoć najnaprednijih alata zajednice.
Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Verovatno ako igrate CTF, Flask aplikacija će biti povezana sa SSTI.
Kolačići
Podrazumevano ime sesije kolačića je session
.
Dekoder
Online Flask dekoder kolačića: https://www.kirsle.net/wizards/flask-session.cgi
Ručno
Dobijte prvi deo kolačića do prvog tačkog znaka i dekodirajte ga iz Base64 formata>
echo "ImhlbGxvIg" | base64 -d
Kolačić je takođe potpisan korišćenjem lozinke
Flask-Unsign
Komandna linija alatka za preuzimanje, dekodiranje, brute-force napad i kreiranje sesijskih kolačića Flask aplikacije pogađanjem tajnih ključeva.
{% embed url="https://pypi.org/project/flask-unsign/" %}
pip3 install flask-unsign
Dekodiranje kolačića
To decode a Flask session cookie, you can use the `itsdangerous` library. The session cookie is usually named `session` and is base64 encoded. Here's an example of how to decode it:
```python
import base64
from itsdangerous import URLSafeTimedSerializer
def decode_cookie(cookie_value, secret_key):
serializer = URLSafeTimedSerializer(secret_key)
decoded_cookie = base64.b64decode(cookie_value)
data = serializer.loads(decoded_cookie)
return data
In the above code, cookie_value
is the value of the session cookie and secret_key
is the secret key used to sign the cookie. The URLSafeTimedSerializer
class from itsdangerous
library is used to deserialize the cookie value.
To use the decode_cookie
function, you can pass the session cookie value and the secret key as arguments. It will return the decoded data from the cookie.
Keep in mind that decoding a session cookie requires the secret key used to sign the cookie. Without the secret key, it is not possible to decode the cookie and access its data.
```plaintext
Da biste dekodirali Flask sesijski kolačić, možete koristiti biblioteku `itsdangerous`. Sesijski kolačić obično se naziva `session` i kodiran je u base64 formatu. Evo primera kako ga dekodirati:
```python
import base64
from itsdangerous import URLSafeTimedSerializer
def decode_cookie(cookie_value, secret_key):
serializer = URLSafeTimedSerializer(secret_key)
decoded_cookie = base64.b64decode(cookie_value)
data = serializer.loads(decoded_cookie)
return data
U gornjem kodu, cookie_value
je vrednost sesijskog kolačića, a secret_key
je tajni ključ koji se koristi za potpisivanje kolačića. Klasa URLSafeTimedSerializer
iz biblioteke itsdangerous
koristi se za deserijalizaciju vrednosti kolačića.
Da biste koristili funkciju decode_cookie
, možete proslediti vrednost sesijskog kolačića i tajni ključ kao argumente. Vratiće dekodirane podatke iz kolačića.
Imajte na umu da za dekodiranje sesijskog kolačića potreban je tajni ključ koji se koristi za potpisivanje kolačića. Bez tajnog ključa nije moguće dekodirati kolačić i pristupiti njegovim podacima.
```bash
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
Brute Force
Bruteforsiranje
Brute force je tehnika koja se koristi za pokušaj otkrivanja lozinke ili ključa tako što se sistem napada iscrpnom proverom svih mogućih kombinacija. Ova tehnika se često koristi u napadima na veb aplikacije kako bi se probila autentifikacija ili pristupilo zaštićenim resursima.
Da bi se izvršio brute force napad, napadač koristi automatizovani alat koji generiše i proverava veliki broj kombinacija lozinki ili ključeva. Ovaj proces može biti vremenski zahtevan, ali može biti uspešan ako je lozinka ili ključ slabo postavljen.
Da bi se zaštitili od brute force napada, preporučuje se korišćenje snažnih lozinki ili ključeva koji se sastoje od kombinacije slova, brojeva i specijalnih znakova. Takođe, implementacija mehanizama za detekciju i sprečavanje brute force napada može biti od velike pomoći.
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
Potpisivanje
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
Potpisivanje pomoću zastarelih (starih verzija)
U nekim starijim verzijama Flask-a, postoji mogućnost potpisivanja podataka pomoću itsdangerous
biblioteke. Ova biblioteka omogućava generisanje digitalnog potpisa koji se može koristiti za verifikaciju integriteta podataka.
Da biste koristili ovu funkcionalnost, prvo morate instalirati itsdangerous
biblioteku. To možete uraditi pomoću pip komande:
pip install itsdangerous
Nakon instalacije, možete koristiti itsdangerous
biblioteku za generisanje potpisa. Evo jednostavnog primera:
from itsdangerous import Signer
# Kreiranje potpisivača
signer = Signer('tajni_kljuc')
# Potpisivanje podataka
potpisani_podaci = signer.sign('Podaci koje želite da potpišete')
# Verifikacija potpisa
try:
verifikovani_podaci = signer.unsign(potpisani_podaci)
print('Potpis je validan.')
print('Verifikovani podaci:', verifikovani_podaci)
except:
print('Potpis nije validan.')
U ovom primeru, tajni_kljuc
predstavlja tajni ključ koji se koristi za generisanje potpisa. Možete koristiti bilo koji tajni ključ koji želite.
Napomena: Ova metoda potpisivanja se smatra zastarelom i preporučuje se korišćenje novijih metoda potpisivanja koje pruža Flask.
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
Komandna linija alatka za brute-force napade na veb sajtove koristeći kolačiće kreirane pomoću flask-unsign biblioteke.
{% embed url="https://github.com/Tagvi/ripsession" %}
ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt
SQLi u Flask sesijskom kolačiću pomoću SQLmap-a
Ovaj primer koristi sqlmap eval
opciju da automatski potpiše sqlmap payload-e za Flask koristeći poznati tajni ključ.
Flask Proxy za SSRF
U ovom članku je objašnjeno kako Flask dozvoljava zahtev koji počinje sa karakterom "@":
GET @/ HTTP/1.1
Host: target.com
Connection: close
Koji je sledeći scenario:
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)
Moguće je omogućiti unošenje nečega poput "@attacker.com" kako bi se izazvao SSRF.
Koristite Trickest da biste lako izgradili i automatizovali radne tokove uz pomoć najnaprednijih alata zajednice na svetu.
Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite oglašavanje vaše kompanije u HackTricks-u ili preuzmete HackTricks u PDF formatu, proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje trikove hakovanja slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.