hacktricks/pentesting-web/file-inclusion/via-php_session_upload_progress.md

64 lines
5 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.

# LFI2RCE via PHP\_SESSION\_UPLOAD\_PROGRESS
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve uygulayın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
* **HackTricks** ve **HackTricks Cloud** github depolarına PR göndererek hacking püf noktalarını paylaşın.
</details>
{% endhint %}
## Temel Bilgiler
Eğer bir **Yerel Dosya Dahil Etme** bulduysanız ve **bir oturumunuz yoksa** ve `session.auto_start` `Off` ise bile. Eğer **`session.upload_progress.enabled`** **`On`** ise ve **`PHP_SESSION_UPLOAD_PROGRESS`**'i **multipart POST** verilerinde sağlarsanız, PHP **oturumu sizin için etkinleştirecektir**.
```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
```
**`PHP_SESSION_UPLOAD_PROGRESS`** ile **oturum içindeki verileri kontrol edebilirsiniz**, bu nedenle oturum dosyanızı dahil ederseniz kontrol ettiğiniz bir bölümü dahil edebilirsiniz (örneğin bir php kabuk kodu).
{% hint style="info" %}
İnternet üzerindeki çoğu öğretici, hata ayıklama amacıyla `session.upload_progress.cleanup`'ı `Off` olarak ayarlamanızı önerse de, PHP'deki varsayılan `session.upload_progress.cleanup` hala `On` dur. Bu, oturumdaki yükleme ilerlemenizin mümkün olan en kısa sürede temizleneceği anlamına gelir. Bu nedenle bu bir **Yarış Koşulu** olacaktır.
{% endhint %}
### CTF
Bu tekniğin yorumlandığı [**orijinal CTF**](https://blog.orange.tw/2018/10/) 'de, Yarış Koşulunu sömürmek yeterli olmadı, ayrıca yüklenen içeriğin `@<?php` dizesiyle başlaması gerekiyordu.
`session.upload_progress.prefix`'in varsayılan ayarı nedeniyle, **OTURUM dosyamız can sıkıcı bir önekle başlayacak** `upload_progress_` Örneğin: `upload_progress_controlledcontentbyattacker`
Başlangıç önekini **kaldırmak için** hileyi **payload'ı 3 kez base64encode etmek** ve ardından `convert.base64-decode` filtreleri aracılığıyla kodlamak oldu, çünkü **base64 kodunu çözerken PHP garip karakterleri kaldıracaktır**, bu nedenle 3 kezden sonra **sadece** saldırgan tarafından **gönderilen payload** **kalacak** (ve ardından saldırgan başlangıç kısmı kontrol edebilecektir).
Daha fazla bilgi için orijinal yazıda [https://blog.orange.tw/2018/10/](https://blog.orange.tw/2018/10/) ve nihai saldırı [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)\
Başka bir yazıda [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" %}
AWS Hacking öğrenin ve uygulayın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve uygulayın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarını paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
{% endhint %}