mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-12 21:28:55 +00:00
65 lines
5 KiB
Markdown
65 lines
5 KiB
Markdown
|
# LFI2RCE poprzez PHP\_SESSION\_UPLOAD\_PROGRESS
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
Dowiedz się i praktykuj 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 praktykuj 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ępnij sztuczki hakerskie, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) oraz [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|
||
|
|
||
|
## Podstawowe informacje
|
||
|
|
||
|
Jeśli znalazłeś **Włączenie Pliku Lokalnego (LFI)** nawet jeśli **nie masz sesji** i `session.auto_start` jest wyłączone. Jeśli **`session.upload_progress.enabled`** jest **włączone** i podasz **`PHP_SESSION_UPLOAD_PROGRESS`** w danych **multipart POST**, PHP **włączy sesję dla Ciebie**.
|
||
|
```bash
|
||
|
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
|
||
|
$ ls -a /var/lib/php/sessions/
|
||
|
. ..
|
||
|
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
|
||
|
$ ls -a /var/lib/php/sessions/
|
||
|
. ..
|
||
|
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah' -F 'file=@/etc/passwd'
|
||
|
$ ls -a /var/lib/php/sessions/
|
||
|
. .. sess_iamorange
|
||
|
|
||
|
In the last example the session will contain the string blahblahblah
|
||
|
```
|
||
|
Zauważ, że dzięki **`PHP_SESSION_UPLOAD_PROGRESS`** możesz **kontrolować dane wewnątrz sesji**, więc jeśli dołączysz swój plik sesji, możesz dołączyć część, którą kontrolujesz (na przykład kod powłoki PHP).
|
||
|
|
||
|
{% hint style="info" %}
|
||
|
Chociaż większość samouczków w Internecie zaleca ustawienie `session.upload_progress.cleanup` na `Off` w celach debugowania, domyślne `session.upload_progress.cleanup` w PHP nadal wynosi `On`. Oznacza to, że postęp przesyłania w sesji zostanie wyczyszczony tak szybko, jak to możliwe. Więc będzie to **Warunek Wyścigu**.
|
||
|
{% endhint %}
|
||
|
|
||
|
### CTF
|
||
|
|
||
|
W [**oryginalnym CTF**](https://blog.orange.tw/2018/10/), gdzie skomentowana jest ta technika, nie wystarczyło wykorzystać Warunku Wyścigu, ale załadowana zawartość musiała również zaczynać się od ciągu `@<?php`.
|
||
|
|
||
|
Ze względu na domyślne ustawienie `session.upload_progress.prefix`, nasz **plik SESJI zacznie się od irytującego prefiksu** `upload_progress_` Na przykład: `upload_progress_controlledcontentbyattacker`
|
||
|
|
||
|
Sztuczką do **usunięcia początkowego prefiksu** było **trzykrotne zakodowanie payloadu w base64** a następnie odkodowanie go za pomocą filtrów `convert.base64-decode`, ponieważ podczas **dekodowania base64 PHP usunie dziwne znaki**, więc po 3-krotnym **tylko** **payload** **wysłany** przez atakującego **pozostanie** (a następnie atakujący może kontrolować początkową część).
|
||
|
|
||
|
Więcej informacji w oryginalnym opisie [https://blog.orange.tw/2018/10/](https://blog.orange.tw/2018/10/) oraz ostateczny exploit [https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp\_for\_php.py](https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp\_for\_php.py)\
|
||
|
Inny opis w [https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/](https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/)
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
Dowiedz się i ćwicz Hacking w 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 w 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) github repos.
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|