mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-02 09:29:59 +00:00
69 lines
4.9 KiB
Markdown
69 lines
4.9 KiB
Markdown
# Wewnętrzne Gadżety Pythona
|
|
|
|
{% hint style="success" %}
|
|
Dowiedz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Szkolenie AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Dowiedz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Szkolenie GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Wesprzyj HackTricks</summary>
|
|
|
|
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Udostępniaj sztuczki hakerskie, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Podstawowe Informacje
|
|
|
|
Różne podatności takie jak [**Python Format Strings**](bypass-python-sandboxes/#python-format-string) lub [**Zanieczyszczenie Klasy**](class-pollution-pythons-prototype-pollution.md) mogą umożliwić Ci **odczytanie wewnętrznych danych Pythona, ale nie pozwolą na wykonanie kodu**. Dlatego pentester będzie musiał jak najlepiej wykorzystać te uprawnienia do **uzyskania poufnych przywilejów i eskalacji podatności**.
|
|
|
|
### Flask - Odczytaj klucz tajny
|
|
|
|
Główna strona aplikacji Flask prawdopodobnie będzie zawierać obiekt globalny **`app`**, w którym jest skonfigurowany ten **tajny klucz**.
|
|
```python
|
|
app = Flask(__name__, template_folder='templates')
|
|
app.secret_key = '(:secret:)'
|
|
```
|
|
W tym przypadku możliwe jest uzyskanie dostępu do tego obiektu za pomocą dowolnego gadżetu do **dostępu do obiektów globalnych** z [strony **Omijanie piaskownic Pythona**](bypass-python-sandboxes/).
|
|
|
|
W przypadku, gdy **podatność znajduje się w innym pliku pythona**, potrzebujesz gadżetu do przeglądania plików, aby dotrzeć do głównego pliku i **uzyskać dostęp do globalnego obiektu `app.secret_key`** w celu zmiany klucza sekretnego Flask i możliwości [**eskalacji uprawnień** znając ten klucz](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
|
|
|
|
Payload taki jak ten [z tego opisu](https://ctftime.org/writeup/36082):
|
|
|
|
{% code overflow="wrap" %}
|
|
```python
|
|
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
|
|
```
|
|
{% endcode %}
|
|
|
|
Użyj tego ładunku, aby **zmienić `app.secret_key`** (nazwa w Twojej aplikacji może być inna), aby móc podpisywać nowe i bardziej uprzywilejowane pliki cookie flask.
|
|
|
|
### Werkzeug - machine\_id i node uuid
|
|
|
|
[Z**a pomocą tych ładunków z tego opisu**](https://vozec.fr/writeups/tweedle-dum-dee/) będziesz mógł uzyskać dostęp do **machine\_id** i **uuid** node, które są **głównymi sekretami**, których potrzebujesz do [**generowania pinu Werkzeug**](../../network-services-pentesting/pentesting-web/werkzeug.md), który możesz użyć do uzyskania dostępu do konsoli pythona w `/console`, jeśli **tryb debugowania jest włączony:**
|
|
```python
|
|
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
|
|
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
|
|
```
|
|
{% hint style="warning" %}
|
|
Zauważ, że możesz uzyskać **lokalną ścieżkę serwera do pliku `app.py`** generując **błąd** na stronie internetowej, co spowoduje, że **otrzymasz ścieżkę**.
|
|
{% endhint %}
|
|
|
|
Jeśli podatność znajduje się w innym pliku pythona, sprawdź poprzedni trik Flask, aby uzyskać dostęp do obiektów z głównego pliku pythona.
|
|
|
|
{% hint style="success" %}
|
|
Dowiedz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Dowiedz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Wesprzyj HackTricks</summary>
|
|
|
|
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
|
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Udostępniaj sztuczki hakerskie, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
|
|
|
</details>
|
|
{% endhint %}
|