8.9 KiB
LFI2RCE द्वारा PHP_SESSION_UPLOAD_PROGRESS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या फॉलो करें मुझे Twitter 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके hacktricks repo और hacktricks-cloud repo को।
मूलभूत जानकारी
यदि आपने स्थानीय फ़ाइल सम्मिलन पाया है, तो यदि आपके पास एक सत्र नहीं है और session.auto_start
Off
है। यदि session.upload_progress.enabled
On
है और आप मल्टीपार्ट POST डेटा में PHP_SESSION_UPLOAD_PROGRESS
प्रदान करते हैं, तो 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 शेलकोड)।
{% hint style="info" %}
हालांकि, इंटरनेट पर अधिकांश ट्यूटोरियल आपको डीबगिंग के उद्देश्य के लिए session.upload_progress.cleanup
को Off
सेट करने की सिफारिश करते हैं। PHP में डिफ़ॉल्ट session.upload_progress.cleanup
अभी भी On
है। इसका मतलब है कि आपका सत्र में अपलोड प्रगति को जितनी जल्दी हो सके साफ किया जाएगा। इसलिए यह रेस कंडीशन होगा।
{% endhint %}
CTF
मूल CTF में जहां इस तकनीक की टिप्पणी की गई है, वहां रेस कंडीशन को उत्पन्न करने के लिए केवल इतना ही काफी नहीं था, बल्कि लोड किया गया सामग्री भी स्ट्रिंग @<?php
से शुरू होनी चाहिए थी।
session.upload_progress.prefix
की डिफ़ॉल्ट सेटिंग के कारण, हमारी SESSION फ़ाइल एक तंग करने वाले प्रिफ़िक्स के साथ शुरू होगी upload_progress_
जैसे: upload_progress_controlledcontentbyattacker
प्रारंभिक प्रिफ़िक्स को हटाने के लिए चालाकी यह थी कि पेलोड को 3 बार base64encode किया जाता है और फिर convert.base64-decode
फ़िल्टर के माध्यम से इसे डिकोड किया जाता है, इसलिए जब PHP बेस64 डिकोड करता है तो अजीब वर्ण हटा देता है, इसलिए 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/
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष NFT संग्रह
- प्राप्त करें आधिकारिक PEASS और HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह में या मुझे Twitter 🐦@carlospolopm** का** अनुसरण करें।**
- अपनी हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके hacktricks repo और hacktricks-cloud repo को।