LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Reading time: 3 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Basic Info
यदि आपने Local File Inclusion पाया है, भले ही आपके पास सत्र न हो और session.auto_start
Off हो। यदि session.upload_progress.enabled
On
है और आप PHP_SESSION_UPLOAD_PROGRESS
को multipart POST डेटा में प्रदान करते हैं, तो PHP आपके लिए सत्र को सक्षम करेगा।
$ 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 में जहां इस तकनीक का उल्लेख किया गया है, यह Race Condition का शोषण करने के लिए पर्याप्त नहीं था, बल्कि लोड की गई सामग्री को भी @<?php
स्ट्रिंग से शुरू होना आवश्यक था।
session.upload_progress.prefix
की डिफ़ॉल्ट सेटिंग के कारण, हमारी SESSION फ़ाइल एक परेशान करने वाले उपसर्ग upload_progress_
के साथ शुरू होगी जैसे: upload_progress_controlledcontentbyattacker
प्रारंभिक उपसर्ग को हटाने का ट्रिक था पेलोड को 3 बार base64encode करना और फिर इसे convert.base64-decode
फ़िल्टर के माध्यम से डिकोड करना, इसका कारण यह है कि जब base64 डिकोडिंग PHP अजीब वर्णों को हटा देगा, इसलिए 3 बार के बाद केवल पेलोड जोड़ा गया द्वारा हमलावर बचेगा (और फिर हमलावर प्रारंभिक भाग को नियंत्रित कर सकता है)।
अधिक जानकारी के लिए मूल लेखन https://blog.orange.tw/2018/10/ और अंतिम शोषण https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py
एक और लेखन https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ में।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।