
YAML-संचालित CLI स्कैनर जो वेब एंडपॉइंट्स पर उजागर सेवाओं, फ़ाइलों और फ़ोल्डरों का पता लगाता है। डेवलपर्स के लिए अनुकूलन योग्य सिग्नेचर के साथ CI/CD पाइपलाइनों में सुरक्षा जाँच को एकीकृत करने के लिए डिज़ाइन किया गया।

ChopChop एक कमांड-लाइन टूल है जो वेब एप्लिकेशनों पर डायनामिक एप्लिकेशन सुरक्षा परीक्षण (DAST) के लिए है, जिसे मूल रूप से मिशेलिन CERT द्वारा लिखा गया था।
इसका लक्ष्य कई एंडपॉइंट्स को स्कैन करना और वेबरूट के माध्यम से सेवाओं/फ़ाइलों/फ़ोल्डरों के एक्सपोज़र की पहचान करना है।
जाँच/सिग्नेचर एक कॉन्फ़िग फ़ाइल (डिफ़ॉल्ट रूप से: chopchop.yml) में घोषित किए जाते हैं, पूरी तरह से कॉन्फ़िगरेबल, और विशेष रूप से डेवलपर्स द्वारा।

"Chop chop" एक वाक्यांश है जो कैंटोनीज़ भाषा से लिया गया है। "Chop chop" का अर्थ है "जल्दी करो" और यह सुझाव देता है कि कुछ अभी और बिना देरी के किया जाना चाहिए।
हमने निर्माण प्रक्रिया को सरल बनाने का प्रयास किया है और उम्मीद है कि यह उतना ही आसान होगा जितना:
$ go mod download
$ go build .
परिणामस्वरूप फ़ोल्डर में एक gochopchop बाइनरी होनी चाहिए।
Github Container Registry के लिए धन्यवाद, हम आपको कुछ ताज़ा-निर्मित डॉकर इमेज प्रदान करने में सक्षम हैं!
docker run ghcr.io/michelin/gochopchop scan https://foobar.com -v debug
लेकिन यदि आप पसंद करते हैं, तो आप इसे स्थानीय रूप से भी बना सकते हैं, नीचे देखें:
docker build -t gochopchop .
हम लगातार goChopChop को जितना संभव हो उतना आसान बनाने का प्रयास कर रहे हैं। इस उपयोगिता के साथ एक होस्ट को स्कैन करना उतना ही सरल है जितना:
$ ./gochopchop scan https://foobar.com
docker run gochopchop scan https://foobar.com
docker run -v ./:/app chopchop scan -c /app/chopchop.yml https://foobar.com
गोलैंग पुनर्लेखन कुछ महीने पहले हुआ था लेकिन अभी भी बहुत कुछ करना बाकी है। यहाँ कुछ विशेषताएँ हैं जिन्हें हम एकीकृत करने की योजना बना रहे हैं: [x] बेहतर प्रदर्शन के लिए थ्रेडिंग [x] समवर्ती थ्रेड्स की संख्या निर्दिष्ट करने की क्षमता [x] रंग और बेहतर फ़ॉर्मेटिंग [x] खोजने के लिए जाँच/सिग्नेचर को फ़िल्टर करने की क्षमता [x] मॉक और यूनिट परीक्षण [x] Github CI और भी बहुत कुछ!
चॉपचॉप का त्वरित एंड-टू-एंड परीक्षण करने के लिए, हमने tests/server.go में एक वेब-सर्वर प्रदान किया है। इसे आज़माने के लिए, कृपया go run tests/server.go चलाएँ, फिर निम्न कमांड के साथ चॉपचॉप चलाएँ: ./gochopchop scan http://localhost:8000 --verbosity Debug। चॉपचॉप को "no vulnerabilities found" प्रिंट करना चाहिए।
इसके अलावा यूनिट परीक्षण भी हैं जिन्हें आप go test -v ./... के साथ चला सकते हैं। ये परीक्षण Github CI वर्कफ़्लो में एकीकृत हैं।
आप scan कमांड के लिए उपलब्ध फ़्लैग पा सकते हैं:
| फ़्लैग | पूर्ण फ़्लैग | विवरण |
|---|---|---|
-h | --help | सहायता विज़र्ड |
-v | --verbosity | लॉगिंग का वर्बोज़ स्तर |
-c | --signature | कस्टम सिग्नेचर फ़ाइल का पथ |
-k | --insecure | SSL सत्यापन अक्षम करें |
-u | --url-file | परीक्षण के लिए URL वाली निर्दिष्ट फ़ाइल का पथ |
-b | --max-severity | यदि गंभीरता निर्दिष्ट फ़्लैग से अधिक या बराबर है तो CI पाइपलाइन को अवरुद्ध करें |
-e | --export | आउटपुट का निर्यात प्रकार (csv और/या json) |
--export-filename | निर्यात फ़ाइल(फ़ाइलों) के लिए फ़ाइलनाम निर्दिष्ट करें | |
-t | --timeout | HTTP अनुरोधों के लिए टाइमआउट |
--severity-filter | गंभीरता के अनुसार प्लगइन फ़िल्टर करें | |
--plugin-filter | प्लगइन के नाम से प्लगइन फ़िल्टर करें | |
--threads | समवर्ती थ्रेड्स की संख्या |
यहाँ उन्नत उपयोग की एक सूची है जिसमें आपकी रुचि हो सकती है। ध्यान दें: पोस्ट प्रोसेसिंग के लिए > जैसे रीडायरेक्टर का उपयोग किया जा सकता है।
$ ./gochopchop scan https://foobar.com --insecure
$ ./gochopchop scan https://foobar.com --insecure --signature test_config.yml
plugins या plugins --severity High$ ./gochopchop plugins --severity High
--threads 4$ ./gochopchop plugins --threads 4
--max-severity Medium$ ./gochopchop scan https://foobar.com --max-severity Medium
./gochopchop scan https://foobar.com --timeout 1 --verbosity --export=csv,json --export-filename boo --plugin-filters=Git,Zimbra,Jenkins
$ ./gochopchop plugins
$ ./gochopchop plugins --severity High
$ ./gochopchop scan --url-file url_file.txt
$ ./gochopchop scan https://foobar.com --export=csv,json --export-filename results
नई जाँच लिखना उतना ही सरल है जितना:
- endpoint: "/.git/config"
checks:
- name: Git exposed
match:
- "[branch"
remediation: Do not deploy .git folder on production servers
description: Verifies that the GIT repository is accessible from the site
severity: "High"
एक एंडपॉइंट (जैसे /.git/config) को कई जाँचों से मैप किया जाता है, जो X जाँचों के लिए X अनुरोध भेजने से बचाता है। एक ही HTTP अनुरोध के माध्यम से कई जाँचें की जा सकती हैं।
प्रत्येक जाँच को इन फ़ील्ड्स की आवश्यकता होती है:
| विशेषता | प्रकार | विवरण | वैकल्पिक? | उदाहरण |
|---|---|---|---|---|
| name | string | जाँच का नाम | नहीं | Git एक्सपोज़्ड |
| description | string | जाँच के लिए एक छोटा विवरण | नहीं | सुनिश्चित करें कि .git रिपॉजिटरी वेबरूट से सुलभ नहीं है |
| remediation | string | इस विशिष्ट "मुद्दे" के लिए सुधार दें | नहीं | उत्पादन सर्वर पर .git फ़ोल्डर तैनात न करें |
| severity | Enum("High", "Medium", "Low", "Informational") | यदि आपके वातावरण में ट्रिगर होता है तो गंभीरता को रेट करें | नहीं | High |
| status_code | integer | वापस आने वाला HTTP स्टेटस कोड | हाँ | 200 |
| headers | स्ट्रिंग की सूची | HTTP प्रतिक्रिया में होने वाले हेडर की सूची | हाँ | N/A |
| no_headers | स्ट्रिंग की सूची | HTTP प्रतिक्रिया में नहीं होने वाले हेडर की सूची | हाँ | N/A |
| match | स्ट्रिंग की सूची | HTTP प्रतिक्रिया में होने वाले स्ट्रिंग्स की सूची | हाँ | "[branch" |
| no_match | स्ट्रिंग की सूची | HTTP प्रतिक्रिया में नहीं होने वाले स्ट्रिंग्स की सूची | हाँ | N/A |
| query_string | एंडपॉइंट पर पास किए जाने वाले GET पैरामीटर | स्ट्रिंग | हाँ | query_string: "id=FOO-chopchoptest" |
| लाइब्रेरी का नाम | लिंक | लाइसेंस |
|---|---|---|
| Viper | https://github.com/spf13/viper | MIT License |
| Go-pretty | https://github.com/jedib0t/go-pretty | MIT License |
| Cobra | https://github.com/spf13/cobra | Apache License 2.0 |
| strfmt | https://github.com/go-openapi/strfmt | Apache License 2.0 |
| Go-homedir | https://github.com/mitchellh/go-homedir | MIT License |
| pkg-errors | https://github.com/pkg/errors | BSD 2 (Simplified License) |
| Go-runewidth | https://github.com/mattn/go-runewidth | MIT License |
कृपया, अधिक जानकारी के लिए third-party.txt फ़ाइल देखें।
ChopChop को Apache License 2.0 के तहत जारी किया गया है।
कृपया, अधिक जानकारी के लिए LICENSE फ़ाइल देखें।