Github Security

हैकट्रिक्स का समर्थन करें और लाभ प्राप्त करें!

Github क्या है

(यहां से यहां से) उच्च स्तर पर, GitHub एक वेबसाइट और क्लाउड-आधारित सेवा है जो डेवलपरों को उनका कोड संग्रहीत करने और प्रबंधित करने में मदद करती है, साथ ही उनके कोड के बदलावों का ट्रैक और नियंत्रण करती है

मूलभूत जानकारी

pageBasic Github Information

बाहरी जासूसी

Github रिपॉजिटरी को सार्वजनिक, निजी और आंतरिक रूप में कॉन्फ़िगर किया जा सकता है।

  • निजी यह अर्थ है कि केवल संगठन के लोग उन्हें एक्सेस कर सकेंगे

  • आंतरिक यह अर्थ है कि केवल एंटरप्राइज के लोग (एक एंटरप्राइज में कई संगठन हो सकते हैं) उन्हें एक्सेस कर सकेंगे

  • सार्वजनिक यह अर्थ है कि सभी इंटरनेट इसे एक्सेस कर सकेगा।

यदि आप उपयोगकर्ता, रिपॉ या संगठन को लक्षित करना चाहते हैं तो आप गिटहब डोर्क्स का उपयोग करके उनके प्रति संवेदनशील जानकारी खोज सकते हैं या प्रत्येक रिपॉ पर संवेदनशील जानकारी लीक के लिए खोज सकते हैं।

गिटहब डोर्क्स

Github को खोजने के लिए कुछ खोजने की अनुमति देता है जहां एक उपयोगकर्ता, रिपॉ या संगठन को दायरा निर्दिष्ट करके खोजा जा सकता है। इसलिए, एक सूची के साथ जो संवेदनशील जानकारी के पास नजदीक दिखेंगे, आप आसानी से लक्षित में संभावित संवेदनशील जानकारी खोज सकते हैं

उपकरण (प्रत्येक उपकरण में अपनी डोर्क्स सूची होती है):

गिटहब लीक

कृपया ध्यान दें कि गिटहब डोर्क्स को गिटहब खोज विकल्पों का उपयोग करके लीक की खोज के लिए भी बनाया गया है। इस खंड को उन उपकरणों के लिए समर्पित किया गया है जो प्रत्येक रिपॉ को डाउनलोड करेंगे और उनमें संवेदनशील जानकारी खोजेंगे (निश्चित संख्या की कमिट्स की जांच करके भी)।

उपकरण (प्रत्येक उपकरण में अपनी रेजेक्स सूची होती है):

कार्रवाई सेटिंग्स

कई सुरक्षा संबंधित सेटिंग्स को https://github.com/organizations/<org_name>/settings/actions पेज से कॉन्फ़िगर किया जा सकता है।

ध्यान दें कि ये सभी कॉन्फ़िगरेशन आपके प्रत्येक रिपॉजिटरी पर अलग-अलग भी सेट किए जा सकते हैं।

  • Github कार्रवाई नीतियाँ: इसकी मदद से आप यह निर्दिष्ट कर सकते हैं कि कौन से रिपॉजिटरी वर्कफ़्लो को चला सकते हैं और कौन से वर्कफ़्लो की अनुमति होनी चाहिए। यह सुझाव दिया जाता है कि केवल वही रिपॉजिटरी निर्दिष्ट करें जिन्हें चलाने की अनुमति हो और सभी कार्रवाईयों को चलाने की अनुमति न दें।

  • आउटसाइड सहयोगी से फोर्क पुल अनुरोध वर्कफ़्लो: यह सुझाव दिया जाता है कि आप सभी आउटसाइड सहयोगियों के लिए मंजूरी की आवश्यकता होती है।

  • मुझे इस सूचना के साथ एक API नहीं मिली, यदि आपके पास हो तो साझा करें

  • फोर्क पुल अनुरोध से वर्कफ़्लो चलाएं: यह सुझाव दिया जाता है कि वर्कफ़्लो को पुल अनुरोध से चलाना बहुत असुविधाजनक है, क्योंकि फोर्क मूल के संरक्षकों को स्रोत रिपॉजिटरी पर पढ़ने की अनुमति वाले टोकन का उपयोग करने की क्षमता प्रदान की जाएगी।

  • मुझे इस सूचना के साथ एक API नहीं मिली, यदि आपके पास हो तो साझा करें

  • वर्कफ़्लो अनुमतियाँ: यह सुझाव दिया जाता है कि केवल रिपॉजिटरी की पढ़ने की अनुमति दें। वर्कफ़्लो को चलाने के लिए दिए गए GITHUB_TOKEN का दुरुपयोग रोकने के लिए लिखने और पुल अनुरोध बनाने/मंजूरी देने की अनुमति देना असुविधाजनक है।

एकीकरण

इस सूचना को पहुंचने के लिए API अंत-बिंदु के बारे में बताएं यदि आपको पता हो!

  • तृतीय-पक्ष एप्लिकेशन पहुंच नीति: यह सुझाव दिया जाता है कि प्रत्येक एप्लिकेशन की पहुंच को सीमित करें और केवल आवश्यक एप्लिकेशनों को ही अनुमति दें (उन्हें समीक्षा करने के बाद)।

  • स्थापित GitHub ऐप्स: यह सुझाव दिया जाता है कि केवल आवश्यक ऐप्स को ही अनुमति दें (उन्हें समीक्षा करने के बाद)।

जासूसी और क्रेडेंशियल का दुरुपयोग

इस परिदृश्य में हम मान लेंगे कि आपने किसी github खाते के लिए कुछ पहुंच प्राप्त कर लिया है।

उपयोगकर्ता क्रेडेंशियल के साथ

यदि आपके पास पहले से ही किसी उपयोगकर्ता के क्रेडेंशियल हैं, तो आप लॉगिन करके देख सकते हैं कि आपके पास कौन सी एंटरप्राइज और संगठन भूमिकाएं हैं, यदि आप एक रॉ मेंबर हैं, तो देखें कि रॉ मेंबर्स की क्या अनुमतियाँ होती हैं, आप किस समूह में हैं, आपके पास किस रिपॉजिटरी पर कौन सी अनुमतियाँ हैं, और रिपॉजिटरी कैसे संरक्षित हैं

ध्यान दें कि 2FA का उपयोग किया जा सकता है, इसलिए आपको इस सूचना तक पहुंच मिलेगी केवल यदि आप उस जांच को भी पास कर सकते हैं

ध्यान दें कि यदि आप user_session कुकी को चोरी करने में कामयाब हो जाते हैं (वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर किया गया है), तो आप पूरी तरह से उपयोगकर्ता की अनुकरण कर सकते हैं बिना क्रेडेंशियल या 2FA की आवश्यकता के।

यदि यह उपयोगी हो तो शाखा संरक्षण बाईपास के बारे में नीचे दिए गए खंड की जांच करें।

उपयोगकर्ता SSH कुंजी के साथ

Github उपयोगकर्ताओं को उनके बजाय SSH कुंजी सेट करने की अनुमति देता है जो कि उनके नाम पर कोड डिप्लॉय करने के लिए प्रमाणीकरण विधि के रूप में उपयोग की जाएगी (कोई 2FA लागू नहीं होती है)।

इस कुंजी की मदद से आप उन रिपॉजिटरी में परिवर्तन कर सकते हैं जहां उपयोगकर्ता को कुछ अधिकार होते हैं, हालांकि आप इसे github api तक पहुंचने के लिए उपयोग नहीं कर सकते। हालांकि, आप स्थानीय सेटिंग्स की जांच करने के लिए सूचीकरण कर सकते हैं ताकि आपको उपयोगकर्ता और रिपॉजिटरी के बारे में जानकारी मिल सके:

# Go to the the repository folder
# Get repo config and current user name and email
git config --list

यदि उपयोगकर्ता ने अपने उपयोगकर्ता नाम के रूप में अपना उपयोगकर्ता नाम समाकृत किया है, तो आप उसके खाते में सेट की गई सार्वजनिक कुंजी तक पहुंच सकते हैं https://github.com/<github_username>.keys, आप इसे जांच सकते हैं ताकि आप पाए गए निजी कुंजी का उपयोग कर सकें।

SSH कुंजी को रिपॉजिटरी में भी सेट किया जा सकता है जैसे डिप्लॉय कुंजी। इस कुंजी के साथ पहुंच वाले कोई भी व्यक्ति रिपॉजिटरी से परियोजनाएं लॉन्च कर सकेगा। आमतौर पर एक सर्वर में विभिन्न डिप्लॉय कुंजी के साथ स्थानीय फ़ाइल ~/.ssh/config आपको इसके बारे में जानकारी देगी कि कौन सी कुंजी संबंधित है।

GPG कुंजी

जैसा कि यहां समझाया गया है, कभी-कभी संकेतों को हस्ताक्षर करने की आवश्यकता होती है या फिर आपकी पहचान हो सकती है।

स्थानीय रूप से जांचें कि वर्तमान उपयोगकर्ता के पास कोई कुंजी है या नहीं:

gpg --list-secret-keys --keyid-format=long

उपयोगकर्ता टोकन के साथ

उपयोगकर्ता टोकन के बारे में मूलभूत जानकारी के लिए यहां देखें.

उपयोगकर्ता टोकन को Git over HTTPS के लिए पासवर्ड के बजाय उपयोग किया जा सकता है, या इसे API पर बेसिक प्रमाणीकरण के रूप में प्रमाणित करने के लिए उपयोग किया जा सकता है। इसके संलग्न विशेषाधिकारों के आधार पर आप विभिन्न कार्रवाइयाँ कर सकते हैं।

एक उपयोगकर्ता टोकन इस तरह दिखता है: ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123

Oauth एप्लिकेशन के साथ

Github Oauth एप्लिकेशन के बारे में मूलभूत जानकारी के लिए यहां देखें.

एक हमलावर एक खतरनाक Oauth एप्लिकेशन बना सकता है ताकि वह उपयोगकर्ताओं के विशेषाधिकारिता डेटा/कार्रवाइयों तक पहुंच सके, जो उन्हें शायद फिशिंग अभियान का हिस्सा मानते हैं।

ये हैं Oauth एप्लिकेशन द्वारा अनुरोध किए जा सकने वाले दायित्व। एक उपयोगकर्ता को स्वीकार करने से पहले हमेशा अनुरोधित दायित्वों की जांच करें।

इसके अलावा, मूलभूत जानकारी में स्पष्ट किया गया है कि संगठन तृतीय पक्ष एप्लिकेशनों को पहुंच दे सकते हैं/इनका उपयोग कर सकते हैं जो संगठन से संबंधित जानकारी/पोषण/कार्रवाइयों के साथ संबंधित होते हैं।

Github एप्लिकेशन के साथ

Github एप्लिकेशन के बारे में मूलभूत जानकारी के लिए यहां देखें.

एक हमलावर एक खतरनाक Github एप्लिकेशन बना सकता है ताकि वह उपयोगकर्ताओं के विशेषाधिकारिता डेटा/कार्रवाइयों तक पहुंच सके, जो उन्हें शायद फिशिंग अभियान का हिस्सा मानते हैं।

इसके अलावा, मूलभूत जानकारी में स्पष्ट किया गया है कि संगठन तृतीय पक्ष एप्लिकेशनों को पहुंच दे सकते हैं/इनका उपयोग कर सकते हैं जो संगठन से संबंधित जानकारी/पोषण/कार्रवाइयों के साथ संबंधित होते हैं।

Github एक्शन को कंप्रमाइज़ और उपयोग करें

एक Github एक्शन को कंप्रमाइज़ और उपयोग करने के कई तकनीक हैं, इन्हें यहां देखें:

pageAbusing Github Actions

शाखा संरक्षण बाईपास

  • एक संख्या की मंजूरी की आवश्यकता: यदि आपने कई खातों को कंप्रमाइज़ किया है, तो आप अन्य खातों से अपने पीआर को स्वीकार कर सकते हैं। यदि आपके पास केवल वह खाता है जिससे आपने पीआर बनाया है, तो आप अपने पीआर को स्वीकार नहीं कर सकते हैं। हालांकि, यदि आपको रेपो में Github एक्शन वातावरण तक पहुंच है, तो GITHUB_TOKEN का उपयोग करके आप अपने पीआर को मंजूरी दे सकते हैं और इस तरीके से 1 मंजूरी प्राप्त कर सकते हैं।

  • इसके लिए और कोड मालिकों की प्रतिबंधना के लिए ध्यान दें कि आमतौर पर एक उपयोगकर्ता अपने ही पीआर को मंजूरी नहीं दे सकता है, लेकिन यदि आप हैं, तो आप इसका दुरुपयोग करके अपने पीआर को स्वीकार करने के लिए इस्तेमाल कर सकते हैं।

  • नए कमिट्स पुश किए जाने पर मंजूरी को खारिज करें: यदि यह सेट नहीं है, तो आप वास्तविक कोड सबमिट कर सकते हैं, उसकी मंजूरी की प्रतीक्षा करें, और दुष्ट कोड डालें और इसे संरक्षित शाखा में मर्ज करें।

  • कोड मालिकों से समीक्षा की आवश्यकता: यदि यह सक्रिय है और आप एक कोड मालिक हैं, तो आप एक Github एक्शन को अपने पीआर बनाने और फिर उसे स्वीकृत करने के लिए कर सकते हैं।

  • जब CODEOWNER फ़ाइल गलत रूप से कॉन्फ़िगर किया जाता है, तो Github इसे दोषी नहीं बताता है लेकिन इसे उपयोग नहीं करता है। इसलिए, यदि यह गलत रूप से कॉन्फ़िगर किया गया है, तो इसका कोड मालिकों संरक्षण लागू नहीं होता है

  • **निर्दिष्ट अभिनेताओं को पुल अन

push: # Run it when a push is made to a branch
branches:
- current_branch_name #Use '**' to run when a push is made to any branch

ध्यान दें कि शाखा के निर्माण के बाद नई शाखा पर शाखा सुरक्षा लागू होगी और आप इसे संशोधित नहीं कर पाएंगे, लेकिन उस समय तक आपने पहले से ही सीक्रेट्स को डंप कर दिया होगा।

स्थायित्व

  • उपयोगकर्ता टोकन उत्पन्न करें

  • सीक्रेट्स से गिटहब टोकन चुरा लें

  • वर्कफ़्लो परिणाम और शाखाएं हटा दें

  • सभी संगठन को अधिक अनुमतियां दें

  • जानकारी निकालने के लिए वेबहुक्स बनाएं

  • बाहरी सहयोगी को आमंत्रित करें

  • SIEM द्वारा उपयोग किए जाने वाले वेबहुक्स को हटाएं

  • बैकडोर के साथ गिटहब एक्शन बनाएं / संशोधित करें

  • सीक्रेट मान में परिवर्तन के माध्यम से **विकल्पी गिटहब एक्शन में दुरुपयोग के लिए विकल्पी गिटहब एक्शन खोजें

अनुकरण करने वाले कमिट - रेपो कमिट के माध्यम से बैकडोर

गिटहब में एक फोर्क से रेपो के लिए एक पीआर बनाना संभव है। यद्यपि पीआर स्वीकार नहीं किया जाता है, एक कमिट आईडी मूल रेपो के लिए फोर्क संस्करण के लिए बनाया जाएगा। इसलिए, एक हमलावर एक ऐसे विशेष कमिट का उपयोग कर सकता है जो रेपो के मालिक द्वारा नहीं बनाया गया था

जैसे यह:

name: example
on: [push]
jobs:
commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e
- shell: bash
run: |
echo 'hello world!'

अधिक जानकारी के लिए https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd देखें।

हैकट्रिक्स का समर्थन करें और लाभ प्राप्त करें!

Last updated