
GitLab में उजागर रहस्यों और व्यक्तिगत डेटा को ढूँढना
GitLab Watchman एक एप्लिकेशन है जो GitLab API का उपयोग करके उजागर रहस्यों और व्यक्तिगत डेटा का पता लगाता है। यह GitLab इंस्टेंस की किसी भी उपयोगी जानकारी की गणना भी करता है।
यह GitLab में आंतरिक रूप से साझा की गई परियोजनाओं की खोज करता है और निम्नलिखित को देखता है:
निम्नलिखित डेटा के लिए:
आप GitLab Watchman को पिछले परिणामों की खोज के लिए चला सकते हैं:
इसका मतलब है कि एक गहन स्कैन के बाद, आप GitLab Watchman को नियमित रूप से चलाने के लिए शेड्यूल कर सकते हैं और केवल आपके चुने हुए समय सीमा से परिणाम लौटा सकते हैं।
GitLab Watchman एक GitLab इंस्टेंस से संभावित रूप से उपयोगी जानकारी की गणना कर सकता है:
GitLab Watchman GitLab में मिलान का पता लगाने के लिए कस्टम YAML हस्ताक्षर का उपयोग करता है। ये हस्ताक्षर केंद्रीय Watchman Signatures repository से खींचे जाते हैं। Slack Watchman रनटाइम पर अपने हस्ताक्षर आधार को स्वचालित रूप से अपडेट करता है ताकि यह सुनिश्चित हो सके कि यह रहस्यों का पता लगाने के लिए नवीनतम हस्ताक्षर का उपयोग कर रहा है।
आप GitLab Watchman चलाते समय उन हस्ताक्षरों को परिभाषित कर सकते हैं जिन्हें आप अक्षम करना चाहते हैं, उनके आईडी को watchman.conf फ़ाइल के disabled_signatures अनुभाग में जोड़कर। उदाहरण के लिए:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
आप Watchman Signatures repository में अलग-अलग YAML फ़ाइलों में हस्ताक्षर का ID पा सकते हैं।
GitLab Watchman निम्नलिखित लॉगिंग विकल्प प्रदान करता है:
यदि कोई विकल्प नहीं दिया गया है तो GitLab Watchman डिफ़ॉल्ट रूप से टर्मिनल-अनुकूल stdout लॉगिंग पर सेट होता है। इसे मनुष्यों के लिए पढ़ने में आसान बनाने के लिए डिज़ाइन किया गया है।
JSON लॉगिंग भी उपलब्ध है, जो SIEM या अन्य लॉग विश्लेषण प्लेटफार्मों में डालने के लिए एकदम सही है।
JSON फ़ॉर्मेटेड लॉगिंग को नीचे दिए अनुसार आसानी से एक फ़ाइल पर रीडायरेक्ट किया जा सकता है:
gitlab-watchman --timeframe a --all --output json >> gitlab_watchman_log.json
GitLab Watchman v4 API का उपयोग करता है, और GitLab Enterprise Edition संस्करणों के साथ काम करता है:
13.0 और उससे ऊपर - हाँ
GitLab.com - हाँ
12.0 - 12.10 - शायद, परीक्षण नहीं किया गया लेकिन यदि API का v4 उपयोग कर रहे हैं तो यह काम कर सकता है
स्कोप खोजने के लिए:
GitLab इंस्टेंस में Elasticsearch कॉन्फ़िगर होना चाहिए, और न्यूनतम GitLab Starter या Bronze लाइसेंस के साथ Enterprise Edition चल रहा होना चाहिए।
GitLab Watchman चलाने के लिए, आपको एक GitLab व्यक्तिगत एक्सेस टोकन की आवश्यकता होगी।
आप GitLab GUI के माध्यम से Settings -> Access Tokens -> Add a personal access token के माध्यम से एक व्यक्तिगत एक्सेस टोकन बना सकते हैं।
टोकन को निम्नलिखित स्कोप के लिए अनुमति की आवश्यकता है:
api
नोट: व्यक्तिगत एक्सेस टोकन उन्हें बनाने वाले उपयोगकर्ता की ओर से कार्य करते हैं, इसलिए मैं सुझाव दूंगा कि आप एक सेवा खाते का उपयोग करके एक टोकन बनाएं, अन्यथा ऐप को आपके निजी रिपॉजिटरी तक पहुंच प्राप्त होगी।
आपको अपने GitLab इंस्टेंस का URL भी प्रदान करना होगा।
GitLab Watchman पर्यावरण चर GITLAB_WATCHMAN_TOKEN और GITLAB_WATCHMAN_URL से GitLab टोकन और URL प्राप्त करेगा।
कॉन्फ़िगरेशन विकल्पों को watchman.conf नामक फ़ाइल में पारित किया जा सकता है जिसे आपकी होम निर्देशिका में संग्रहीत किया जाना चाहिए। फ़ाइल को YAML प्रारूप का पालन करना चाहिए, और नीचे जैसा दिखना चाहिए:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
GitLab Watchman रनटाइम पर इस फ़ाइल की तलाश करेगा, और यहां से कॉन्फ़िगरेशन विकल्पों का उपयोग करेगा।
आप pip के माध्यम से नवीनतम स्थिर संस्करण स्थापित कर सकते हैं:
python3 -m pip install gitlab-watchman
या स्वयं स्रोत से निर्माण करें। रिलीज़ स्रोत फ़ाइलें डाउनलोड करें, फिर शीर्ष स्तरीय रिपॉजिटरी से चलाएं:
python3 -m build
python3 -m pip install --force-reinstall dist/*.whl
GitLab Watchman Docker हब पर एक Docker इमेज के रूप में भी उपलब्ध है:
docker pull papermountain/gitlab-watchman:latest
फिर आप GitLab Watchman को एक कंटेनर में चला सकते हैं, यह सुनिश्चित करते हुए कि आप आवश्यक पर्यावरण चर पास करते हैं:
// help
docker run --rm papermountain/gitlab-watchman -h
// scan all
docker run --rm -e GITLAB_WATCHMAN_TOKEN=abc123 -e GITLAB_WATCHMAN_URL=https://example.gitlab.com papermountain/gitlab-watchman --timeframe a --all
docker run --rm --env-file .env papermountain/gitlab-watchman --timeframe a --all
GitLab Watchman एक वैश्विक कमांड के रूप में स्थापित किया जाएगा, इस प्रकार उपयोग करें:
usage: gitlab-watchman [-h] --timeframe {d,w,m,a} [--output {json,stdout}] [--version] [--all] [--blobs] [--commits] [--wiki-blobs] [--issues]
[--merge-requests] [--milestones] [--notes] [--snippets] [--enumerate] [--debug] [--verbose]
Finding exposed secrets and personal data in GitLab
options:
-h, --help show this help message and exit
--output {json,stdout}, -o {json,stdout}
Where to send results
--version, -v show program's version number and exit
--all, -a Find everything
--blobs, -b Search code blobs
--commits, -c Search commits
--wiki-blobs, -w Search wiki blobs
--issues, -i Search issues
--merge-requests, -mr
Search merge requests
--milestones, -m Search milestones
--notes, -n Search notes
--snippets, -s Search snippets
--enumerate, -e Enumerate this GitLab instance for users, groups, projects.Output will be saved to CSV files
--debug, -d Turn on debug level logging
--verbose, -V Turn on more verbose output for JSON logging. This includes more fields, but is larger
required arguments:
--timeframe {d,w,m,a}
How far back to search: d = 24 hours w = 7 days, m = 30 days, a = all time
आप Watchman परिवार के अन्य ऐप्स में रुचि ले सकते हैं:
इस परियोजना का स्रोत कोड GNU General Public Licence के तहत जारी किया गया है। यह परियोजना GitLab से संबद्ध नहीं है।