
एक रिपॉजिटरी जो GitHub Actions के माध्यम से स्वचालित रूप से Docker इमेज की एक श्रृंखला उत्पन्न करने और अद्यतित रखने के लिए है।
RAUDI (Regularly and Automatically Updated Docker Images) उन टूल्स के लिए Docker Images को GitHub Actions के माध्यम से स्वचालित रूप से उत्पन्न और अद्यतन रखता है जो डेवलपर्स द्वारा प्रदान नहीं किए जाते हैं।
RAUDI वह चीज है जो आपको मैन्युअल रूप से बहुत सारी डॉकर इमेजेस बनाने और प्रबंधित करने से बचाएगा। हर बार जब कोई सॉफ्टवेयर अपडेट होता है तो आपको डॉकर इमेज को अपडेट करना होगा यदि आप नवीनतम सुविधाओं का उपयोग करना चाहते हैं, निर्भरताएँ अब काम नहीं करती हैं।
यह अव्यवस्थित और समय लेने वाला है।
अब और चिंता न करें, हमने आपको कवर कर लिया है।
आप या तो इस रिपॉजिटरी को फोर्क कर सकते हैं और स्वयं GitHub Workflow का उपयोग कर सकते हैं या इसे स्थानीय रूप से उपयोग कर सकते हैं (और इसके निष्पादन को अपनी इच्छानुसार प्रबंधित कर सकते हैं)।
यदि आप इस रिपॉजिटरी को फोर्क करना चाहते हैं तो आपको अपने व्यक्तिगत Docker Hub खाते पर अपनी इमेजेस को पुश करने में सक्षम होने के लिए कुछ सीक्रेट्स सेट करने होंगे। दो GitHub सीक्रेट्स अनिवार्य रूप से सेट होने चाहिए:
इन सीक्रेट्स को सेट करने के बाद आपको tools/main.py फ़ाइल में सेट organization वेरिएबल को संपादित करना होगा क्योंकि यह SecSI के लिए Docker Hub पर पुश करने के लिए कॉन्फ़िगर किया गया है।
बस इतना ही दोस्तों: Action पर जाएं, इसे अपने फोर्क किए गए रिपॉजिटरी के लिए सक्षम करें, मध्यरात्रि तक प्रतीक्षा करें, और Workflow भारी काम करेगा!
इस रिपॉजिटरी को स्थानीय रूप से भी निष्पादित किया जा सकता है। पूर्ण करने के लिए आवश्यकताएँ निम्नलिखित हैं:
BuildX के साथ काम करने के लिए दस्तावेज़ यहाँ है: https://docs.docker.com/buildx/working-with-buildx/
सेटअप चरण काफी सीधा है, बस आपको निम्नलिखित कमांड्स की आवश्यकता है:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
आप जाने के लिए तैयार हैं!
परीक्षण चलाने के लिए आपको pytest को pip install pytest कमांड से इंस्टॉल करना होगा (यह requirements.txt में नहीं है क्योंकि यह केवल परीक्षण उद्देश्यों के लिए आवश्यक है) और फिर आप चला सकते हैं:
pytest -s
या
python -m pytest -s
परीक्षण चलाने के लिए।
RAUDI tools निर्देशिका में रखे गए सभी टूल्स को बना और पुश कर सकता है। इसे चलाते समय विभिन्न विकल्पों का उपयोग किया जा सकता है। स्थानीय रूप से उपयोग करने से पहले आपको एक .env फ़ाइल बनानी चाहिए (आप बस .env.sample फ़ाइल को कॉपी कर सकते हैं) और रेट लिमिटिंग से बचने के लिए अपना GitHub Personal Access Token जोड़ें। अप्रमाणित उपयोगकर्ताओं के लिए GitHub प्रति घंटे 60 अनुरोधों की अनुमति देता है, जबकि प्रमाणित उपयोगकर्ताओं को प्रति घंटे 15,000 अनुरोधों की अनुमति है। इस कारण से हम इसे जोड़ने की सलाह देते हैं! आप बिना किसी स्कोप के एक व्यक्तिगत एक्सेस टोकन भी बना सकते हैं क्योंकि हम जो कुछ भी करते हैं वह प्रत्येक GitHub रिपॉजिटरी के लिए कुछ जानकारी पढ़ना है।
इस मोड में RAUDI यदि आवश्यक हो तो सभी टूल्स बनाने का प्रयास करता है। इसे चलाने का कमांड बस यह है:
python3 ./raudi.py --all
इस मोड में RAUDI केवल निर्दिष्ट टूल को बनाने का प्रयास करता है। इस स्थिति में कमांड है:
python3 ./raudi.py --single <tool_name>
tool_name tools फ़ोल्डर के अंदर निर्देशिका का नाम होना चाहिए।
चूंकि टूल की कॉन्फ़िगरेशन संरचना में tests पैरामीटर जोड़ा गया है, इसलिए यह जाँचने में सहायक हो सकता है कि डाले गए कमांड्स 0 स्थिति कोड लौटाते हैं। किसी विशिष्ट टूल का परीक्षण करने का कमांड है:
python3 ./raudi.py --test <tool_name>
tool_name tools फ़ोल्डर के अंदर निर्देशिका का नाम होना चाहिए।
यदि आप उपलब्ध टूल्स जानना चाहते हैं तो आप यह कमांड चला सकते हैं:
python3 ./raudi.py --list
यदि आप उपलब्ध टेम्पलेट्स में से किसी एक से शुरू करके जल्दी से एक नया टूल फ़ोल्डर जोड़ना चाहते हैं तो आप यह कमांड चला सकते हैं:
python3 ./raudi.py --bootstrap <new_tool_name>
| विकल्प | विवरण | डिफ़ॉल्ट मान |
|---|---|---|
| --push | क्या स्वचालित रूप से Docker Hub पर पुश करना है | False |
| --remote | क्या निर्माण से पहले स्थानीय Docker के बजाय Docker Hub के विरुद्ध जाँच करना है | False |
यह उन टूल्स की वर्तमान सूची है जिन्हें जोड़ा गया है। ये सभी वे टूल्स हैं जिनके पास डेवलपर द्वारा प्रदान की गई आधिकारिक डॉकर इमेज नहीं है:
tools निर्देशिका में प्रत्येक टूल में कम से कम दो फ़ाइलें होती हैं:
यदि आप एक नया टूल जोड़ना चाहते हैं तो आपको tools निर्देशिका के अंदर उस विशिष्ट टूल के लिए एक फ़ोल्डर बनाना होगा। इस फ़ोल्डर में आपको निर्माण को अनुकूलित और स्वचालित करने के लिए परिभाषित build args के साथ Dockerfile डालना होगा। एक बार जब आप Dockerfile बना लेते हैं तो आपको उसी निर्देशिका में config.py बनाना होगा जिसमें get_config(organization, common_args) नामक एक फ़ंक्शन हो। सावधान रहें: फ़ंक्शन का नाम इस प्रकार होना चाहिए और इसमें वे दो पैरामीटर होने चाहिए (भले ही आप उनका उपयोग न करें)। वापसी मान उस विशिष्ट टूल के लिए config है और इसकी निम्नलिखित संरचना है:
config = {
'name': organization+'/<name_of_the_image>',
'version': '', # Should be an helper function
'buildargs': {
},
'tests': []
}
चार कुंजियाँ हैं:
ऐसा करने के बाद आप जाने के लिए तैयार हैं! बस सावधान रहें कि टूल का नाम उस निर्देशिका के समान होना चाहिए जिसमें आपने इसका Dockerfile रखा था।
संस्करणों के लिए एक नामकरण प्रथा है: केवल बिंदु और अंकों का उपयोग करें; कृपया विशिष्ट config.py में संस्करण से किसी भी ट्रेलिंग 'v' को हटा दें (कार्यशील उदाहरण के लिए tools/dirsearch/config.py देखें)।
टूल्स और बेस इमेजेस के बारे में नवीनतम संस्करण और जानकारी प्राप्त करने के लिए सहायकों का एक सेट लागू किया गया है। यदि आप एक नया टूल जोड़ना चाहते हैं तो आपको इन सहायकों का उपयोग करना चाहिए ताकि RAUDI द्वारा स्वचालित रूप से अपडेट की जाने वाली डॉकर इमेज प्राप्त हो सके।
get_latest_pip_versionयह सहायक pip पैकेज के नवीनतम संस्करण को प्राप्त करने के लिए उपयोग किया जाता है। इसमें केवल पैकेज का नाम चाहिए और यह संस्करण संख्या लौटाता है। उदाहरण:
VERSION = helper.get_latest_pip_version(package_name)
get_latest_npm_registry_versionयह सहायक npm पैकेज के नवीनतम संस्करण को प्राप्त करने के लिए उपयोग किया जाता है। इसमें केवल पैकेज का नाम चाहिए और यह संस्करण संख्या लौटाता है। उदाहरण:
VERSION = helper.get_latest_npm_registry_version(package_name)
get_latest_github_releaseयह सहायक एक GitHub रिपॉजिटरी के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जाता है जो Releases का उपयोग करता है और विभिन्न प्रकार की एसेट्स (जैसे विभिन्न OS के लिए निष्पादन योग्य) रखता है। यह सहायक रिपो (प्रारूप user/repo) और सही एसेट को डाउनलोड करने के लिए एक लक्ष्य स्ट्रिंग लेता है। यह दो कुंजियों (url और version) के साथ एक डिक्ट लौटाता है। उदाहरण:
VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")
get_latest_github_release_no_browser_downloadयह सहायक एक GitHub रिपॉजिटरी के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जाता है जो Releases का उपयोग करता है और केवल स्रोत कोड रखता है (जिसका अर्थ है एक zipball और एक tarball है)। यह सहायक रिपो (प्रारूप user/repo) लेता है और दो कुंजियों (url और version) के साथ एक डिक्ट लौटाता है। उदाहरण:
VERSION = helper.get_latest_github_release_no_browser_download("user/repo")
get_latest_github_tag_no_browser_downloadयह सहायक एक GitHub रिपॉजिटरी के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जाता है जो Tags का उपयोग करता है और केवल स्रोत कोड रखता है (जिसका अर्थ है एक zipball और एक tarball है)। यह सहायक रिपो (प्रारूप user/repo) लेता है और दो कुंजियों (url और version) के साथ एक डिक्ट लौटाता है। उदाहरण:
VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")
get_latest_github_commitयह सहायक एक GitHub रिपॉजिटरी के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जाता है जो Tags या Releases का उपयोग नहीं करता है। इस मामले में, लक्ष्य नवीनतम कमिट प्राप्त करना है। यह सहायक रिपो (प्रारूप user/repo) लेता है और अंतिम कमिट की तारीख को YYYYYMMDD प्रारूप में एक स्ट्रिंग के रूप में लौटाता है।
VERSION = helper.get_latest_github_commit("user/repo")
यह अनुभाग वर्तमान में जोड़े गए नेटवर्क सुरक्षा उपकरणों के लिए उदाहरण प्रदान करता है। जैसा कि आप देख सकते हैं इमेजेस केवल उपकरण प्रदान करती हैं, इसलिए यदि आपको वर्डलिस्ट का उपयोग करने की आवश्यकता है तो आपको इसे माउंट करना होगा।
docker run -it --rm secsi/<tool> <command>
docker run -it --rm -v <wordlist_src_dir>:<wordlist_container_dir> secsi/dirb <url> <wordlist_container_dir>/<wordlist_file>
हम इतालवी हैं, इसलिए हम शायद इसे आपसे अलग तरीके से उच्चारण करते हैं। सही उच्चारण (ध्वन्यात्मक प्रतिलेखन का उपयोग करके) निम्नलिखित है:
/ˈraʊdi/
अन्यथा प्रसिद्ध TV शो Scrubs में भरवां कुत्ते के बारे में सोचें: Rowdy
सभी को योगदान देने के लिए आमंत्रित किया जाता है! हमने RAUDI में योगदान कैसे करें का वर्णन करने के लिए एक बहुत विस्तृत दस्तावेज़ बनाया है।
RAUDI गर्व से @SecSI द्वारा विकसित किया गया है:
अन्य योगदानकर्ता:
RAUDI एक ओपन-सोर्स और मुफ्त सॉफ्टवेयर है जो GNU GPL v3 के तहत जारी किया गया है।
| --force |
| क्या यदि समान टैगनाम वाली इमेज मिली है तब भी बनाना है या नहीं |
| False |
| नाम | डॉकर इमेज | स्रोत |
|---|