Jenkins Arbitrary File Read to RCE via "Remember Me"
इस ब्लॉग पोस्ट में एक शानदार तरीका है कि कैसे Jenkins में एक स्थानीय फ़ाइल समावेशन (Local File Inclusion) की कमजोरी को RCE में परिवर्तित किया जा सकता है: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
यह एक AI द्वारा बनाई गई संक्षेप है उस भाग की जिसमें एक मनमाना कुकी का निर्माण RCE प्राप्त करने के लिए किया जाता है, जब तक कि मेरे पास खुद का संक्षेप बनाने का समय नहीं है:
Attack Prerequisites
Feature Requirement: "Remember me" सक्षम होना चाहिए (डिफ़ॉल्ट सेटिंग)।
Access Levels: हमलावर को Overall/Read अनुमतियाँ चाहिए।
Secret Access: प्रमुख फ़ाइलों से बाइनरी और पाठ्य सामग्री पढ़ने की क्षमता।
Detailed Exploitation Process
Step 1: Data Collection
User Information Retrieval
प्रत्येक उपयोगकर्ता के लिए
$JENKINS_HOME/users/*.xml
से उपयोगकर्ता कॉन्फ़िगरेशन और रहस्यों तक पहुँचें:Username
User seed
Timestamp
Password hash
Secret Key Extraction
कुकी पर हस्ताक्षर करने के लिए उपयोग किए जाने वाले क्रिप्टोग्राफिक कुंजियों को निकालें:
Secret Key:
$JENKINS_HOME/secret.key
Master Key:
$JENKINS_HOME/secrets/master.key
MAC Key File:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Step 2: Cookie Forging
Token Preparation
Token Expiry Time की गणना करें:
Token के लिए डेटा को संयोजित करें:
MAC Key Decryption
MAC Key File को डिक्रिप्ट करें:
Signature Computation
HMAC SHA256 की गणना करें:
Cookie Encoding
अंतिम कुकी उत्पन्न करें:
Step 3: Code Execution
Session Authentication
CSRF और सत्र टोकन प्राप्त करें:
/crumbIssuer/api/json
पर एक अनुरोध करें ताकिJenkins-Crumb
प्राप्त किया जा सके।प्रतिक्रिया से
JSESSIONID
कैप्चर करें, जिसका उपयोग याद रखने वाली कुकी के साथ किया जाएगा।
Command Execution Request
Groovy Script के साथ POST अनुरोध भेजें:
Groovy स्क्रिप्ट का उपयोग सिस्टम-स्तरीय कमांड या Jenkins वातावरण के भीतर अन्य संचालन को निष्पादित करने के लिए किया जा सकता है।
उदाहरण curl कमांड यह प्रदर्शित करता है कि कैसे आवश्यक हेडर और कुकी के साथ Jenkins को अनुरोध भेजा जाए ताकि मनमाना कोड सुरक्षित रूप से निष्पादित किया जा सके।
Last updated