# LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS {{#include ../../banners/hacktricks-training.md}} ## Basic Info यदि आपने **Local File Inclusion** पाया है, भले ही आपके पास **सत्र** न हो और `session.auto_start` **Off** हो। यदि **`session.upload_progress.enabled`** **`On`** है और आप **`PHP_SESSION_UPLOAD_PROGRESS`** को **multipart POST** डेटा में प्रदान करते हैं, तो PHP आपके लिए **सत्र को सक्षम करेगा**। ```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`** के साथ आप **सत्र के अंदर डेटा को नियंत्रित** कर सकते हैं, इसलिए यदि आप अपने सत्र फ़ाइल को शामिल करते हैं तो आप एक भाग शामिल कर सकते हैं जिसे आप नियंत्रित करते हैं (उदाहरण के लिए एक php शेलकोड)। > [!NOTE] > हालांकि इंटरनेट पर अधिकांश ट्यूटोरियल आपको `session.upload_progress.cleanup` को डिबगिंग उद्देश्य के लिए `Off` पर सेट करने की सिफारिश करते हैं। PHP में डिफ़ॉल्ट `session.upload_progress.cleanup` अभी भी `On` है। इसका मतलब है कि आपके सत्र में अपलोड प्रगति को जल्द से जल्द साफ़ किया जाएगा। इसलिए यह **Race Condition** होगा। ### CTF [**मूल CTF**](https://blog.orange.tw/2018/10/) में जहां इस तकनीक का उल्लेख किया गया है, यह Race Condition का शोषण करने के लिए पर्याप्त नहीं था, बल्कि लोड की गई सामग्री को भी `@