
गलत कॉन्फ़िगर किए गए S3 बकेट्स को S3-संगत API पर स्कैन करें!
फीचर्स - उपयोग - त्वरित आरंभ - स्थापना - चर्चा
INPUT: (1 आवश्यक)
-bucket string जाँच करने के लिए बकेट का नाम।
-bucket-file string जाँच करने के लिए बकेट नामों की फ़ाइल।
-mq बकेट प्राप्त करने के लिए RabbitMQ से कनेक्ट करें। कॉन्फ़िग फ़ाइल कुंजी "mq" आवश्यक है। डिफ़ॉल्ट: "false"
OUTPUT:
-db परिणामों को Postgres डेटाबेस में सहेजें। कॉन्फ़िग फ़ाइल कुंजी "db.uri" आवश्यक है। डिफ़ॉल्ट: "false"
-json मानव-पठनीय के बजाय JSON प्रारूप में stdout पर लॉग प्रिंट करें। डिफ़ॉल्ट: "false"
OPTIONS:
-enumerate बकेट ऑब्जेक्ट्स की गणना करें (समय लेने वाला हो सकता है)। डिफ़ॉल्ट: "false"
-provider string ऑब्जेक्ट स्टोरेज प्रदाता: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway - custom के लिए कॉन्फ़िग फ़ाइल आवश्यक है। डिफ़ॉल्ट: "aws"
-threads int स्कैन करने के लिए थ्रेड्स की संख्या। डिफ़ॉल्ट: "4"
DEBUG:
-verbose वर्बोज़ लॉगिंग सक्षम करें। डिफ़ॉल्ट: "false"
-version संस्करण प्रिंट करें डिफ़ॉल्ट: "false"
यदि कॉन्फ़िग फ़ाइल आवश्यक है, तो config.yml के लिए इन स्थानों की खोज की जाएगी: "." "/etc/s3scanner/" "$HOME/.s3scanner/"
यदि आपको यह उपकरण उपयोगी लगा है, तो कृपया इसके विकास का समर्थन करने के लिए दान करने पर विचार करें। आप इस रेपो पृष्ठ के किनारे या FUNDING.yml में प्रायोजक विकल्प पा सकते हैं
tines को बहुत-बहुत धन्यवाद इस परियोजना के चल रहे प्रायोजक होने के लिए।
एक फ़ाइल में सूचीबद्ध बकेट नामों के लिए AWS स्कैन करें, सभी ऑब्जेक्ट्स की गणना करें
$ s3scanner -bucket-file names.txt -enumerate
GCP में एक बकेट स्कैन करें, सभी ऑब्जेक्ट्स की गणना करें, और परिणामों को डेटाबेस में सहेजें
$ s3scanner -provider gcp -db -bucket my-bucket -enumerate
s3scanner को बिल्कुल एक प्रकार के इनपुट की आवश्यकता है: -bucket, -bucket-file, या -mq।
INPUT: (1 आवश्यक)
-bucket string जाँच करने के लिए बकेट का नाम।
-bucket-file string जाँच करने के लिए बकेट नामों की फ़ाइल।
-mq बकेट प्राप्त करने के लिए RabbitMQ से कनेक्ट करें। कॉन्फ़िग फ़ाइल कुंजी "mq" आवश्यक है। डिफ़ॉल्ट: "false"
-bucketएकल बकेट स्कैन करें
s3scanner -bucket secret_uploads
-bucket-fileफ़ाइल में सूचीबद्ध प्रत्येक बकेट नाम को स्कैन करता है
s3scanner -bucket-file names.txt
जहाँ names.txt में प्रति पंक्ति एक बकेट नाम है
$ cat names.txt
bucket123
assets
image-uploads
एकाधिक बार सूचीबद्ध बकेट नाम केवल एक बार स्कैन किए जाएंगे।
-mqएक RabbitMQ सर्वर से कनेक्ट होता है और स्कैन करने के लिए बकेट नामों वाले संदेशों का उपभोग करता है।
s3scanner -mq
संदेश JSON-एनकोडेड Bucket ऑब्जेक्ट होने चाहिए - Golang प्रकाशन उदाहरण के लिए mqingest देखें।
-mq के लिए कॉन्फ़िग फ़ाइल कुंजियाँ mq.uri और mq.queue_name आवश्यक हैं। उदाहरण के लिए कॉन्फ़िग फ़ाइल अनुभाग देखें।
OUTPUT:
-db परिणामों को Postgres डेटाबेस में सहेजें। कॉन्फ़िग फ़ाइल कुंजी "db.uri" आवश्यक है। डिफ़ॉल्ट: "false"
-json मानव-पठनीय के बजाय JSON प्रारूप में stdout पर लॉग प्रिंट करें। डिफ़ॉल्ट: "false"
-dbसभी स्कैन परिणामों को PostgreSQL डेटाबेस में सहेजता है
s3scanner -bucket images -db
db.uri आवश्यक है। उदाहरण के लिए कॉन्फ़िग फ़ाइल अनुभाग देखें।-db का उपयोग कर रहे हैं, तो परिणाम कंसोल पर भी मुद्रित होंगे यदि -json या डिफ़ॉल्ट मानव-पठनीय आउटपुट मोड का उपयोग कर रहे हैं।s3scanner हर बार डेटाबेस से कनेक्ट होने पर Gorm की ऑटो माइग्रेशन सुविधा चलाता है। यदि स्कीमा में पहले से ही ऐसी तालिकाएँ हैं जिनके नाम Gorm अपेक्षा करता है, तो यह इन तालिकाओं की संरचना बदल सकता है। s3scanner परिणामों के लिए एक समर्पित Postgres स्कीमा बनाने की सिफारिश की जाती है।-jsonस्कैन परिणामों को मानव-पठनीय प्रारूप में कंसोल पर आउटपुट करने के बजाय, मशीन-पठनीय JSON आउटपुट करें।
s3scanner -bucket images -json
यह प्रति पंक्ति कंसोल पर एक JSON ऑब्जेक्ट प्रिंट करेगा, जिसे फिर jq या JSON इनपुट स्वीकार करने वाले अन्य उपकरणों में पाइप किया जा सकता है।
उदाहरण: सभी मौजूदा बकेट के लिए बकेट का नाम और क्षेत्र प्रिंट करें
$ s3scanner -bucket-file names.txt -json | jq -r '. | select(.bucket.exists==1) | [.bucket.name, .bucket.region] | join(" - ")'
10000 - eu-west-1
10000.pizza - ap-southeast-1
images_staging - us-west-2
OPTIONS:
-enumerate बकेट ऑब्जेक्ट्स की गणना करें (समय लेने वाला हो सकता है)। डिफ़ॉल्ट: "false"
-provider string ऑब्जेक्ट स्टोरेज प्रदाता: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway - custom के लिए कॉन्फ़िग फ़ाइल आवश्यक है। डिफ़ॉल्ट: "aws"
-threads int स्कैन करने के लिए थ्रेड्स की संख्या। डिफ़ॉल्ट: "4"
-enumerateबकेट में संग्रहीत सभी ऑब्जेक्ट्स की गणना करें। डिफ़ॉल्ट रूप से, s3scanner केवल बकेट की अनुमतियों की जाँच करेगा।
s3scanner -bucket attachments -enumerate
s3scanner 1,000 ऑब्जेक्ट्स के "पेज" का अनुरोध करेगा। यदि ऑब्जेक्ट्स के 5,000 से अधिक पेज हैं, तो यह शेष को छोड़ देगा।-providerबकेट की जाँच करते समय उपयोग करने के लिए स्टोरेज प्रदाता का नाम।
s3scanner -bucket assets -provider gcp
providers.custom के अंतर्गत कॉन्फ़िग फ़ाइल कुंजियाँ आवश्यक हैं।-threadsस्कैन करने के लिए थ्रेड्स की संख्या।
s3scanner -bucket secret_docs -threads 8
DEBUG:
-verbose वर्बोज़ लॉगिंग सक्षम करें। डिफ़ॉल्ट: "false"
-version संस्करण प्रिंट करें डिफ़ॉल्ट: "false"
-verboseडीबग संदेशों की वर्बोज़ लॉगिंग सक्षम करता है। यह विकल्प बहुत सारे लॉग उत्पन्न करेगा और बग रिपोर्ट दाखिल करने के अलावा उपयोग करने की अनुशंसा नहीं की जाती है।
s3scanner -bucket spreadsheets -verbose
-versionसंस्करण जानकारी प्रिंट करें और बाहर निकलें।
s3scanner -version
dev प्रिंट करेगा।एक docker compose फ़ाइल शामिल है जो 4 कंटेनर बनाती है:
2 प्रोफ़ाइल कॉन्फ़िगर की गई हैं:
dev - मानक विकास वातावरणdev-mitm - mitmproxy के साथ कॉन्फ़िगर किया गया वातावरण जो डीबग करते समय या नए प्रदाता जोड़ते समय HTTP ट्रैफ़िक के आसान अवलोकन के लिए होता है।विकास वातावरण लाने के लिए make dev या make dev-mitm चलाएँ। docker exec -it -w /app app_dev sh के साथ app कंटेनर में प्रवेश करें, फिर go run . चलाएँ।
यदि dev-mitm प्रोफ़ाइल का उपयोग कर रहे हैं, तो ब्राउज़र में http://127.0.0.1:8081 खोलें ताकि ऐप कंटेनर से किए जा रहे HTTP कॉल को देखें और उनमें हेरफेर करें।
यदि कॉन्फ़िग विकल्पों की आवश्यकता वाले फ़्लैग का उपयोग कर रहे हैं, तो s3scanner निम्नलिखित में config.yml खोजेगा:
/etc/s3scanner/$HOME/.s3scanner/# -db द्वारा आवश्यक
db:
uri: "postgresql://user:[email protected]:5432/schema_name"
# -mq द्वारा आवश्यक
mq:
queue_name: "aws"
uri: "amqp://user:pass@localhost:5672"
# `-provider custom` द्वारा आवश्यक providers.custom
# address_style - एंडपॉइंट्स द्वारा उपयोग की जाने वाली एड्रेसिंग शैली।
# type: string
# values: "path" या "vhost"
# endpoint_format - एंडपॉइंट URL का प्रारूप। क्षेत्र नाम के लिए प्लेसहोल्डर के रूप में '$REGION' होना चाहिए
# type: string
# insecure - SSL त्रुटियों को अनदेखा करें
# type: boolean
# regions में कम से कम एक विकल्प होना चाहिए
providers:
custom:
address_style: "path"
endpoint_format: "https://$REGION.vultrobjects.com"
insecure: false
regions:
- "ewr1"
जब s3scanner कॉन्फ़िग फ़ाइल को पार्स करता है, तो यह endpoint_format लेगा और एंडपॉइंट URL की सूची बनाने के लिए सभी सूचीबद्ध regions के लिए $REGION को प्रतिस्थापित करेगा।
नोट: S3Scanner वर्तमान में केवल गैर-AWS सेवाओं के लिए अज्ञात उपयोगकर्ता अनुमतियों के लिए स्कैनिंग का समर्थन करता है
📚 गैर-AWS API के बारे में अधिक जानकारी परियोजना विकी में पाई जा सकती है।
यह उपकरण बकेट के बारे में सभी उपलब्ध जानकारी प्राप्त करने का प्रयास करेगा, लेकिन परिणामों की व्याख्या करना आप पर निर्भर है।
बकेट के लिए संभावित अनुमतियाँ:
2 मुख्य उपयोगकर्ता समूहों के लिए इनमें से कोई भी या सभी अनुमतियाँ सेट की जा सकती हैं:
इसका क्या मतलब है: सिर्फ इसलिए कि कोई बकेट ACL पढ़ने/लिखने की अनुमति नहीं देता है, इसका मतलब यह नहीं है कि आप बकेट में फ़ाइलें नहीं पढ़/लिख सकते हैं। इसके विपरीत, आप ACL सूचीबद्ध करने में सक्षम हो सकते हैं लेकिन बकेट में पढ़/लिख नहीं सकते हैं।
MIT
| प्लेटफ़ॉर्म | संस्करण | चरण |
|---|
| BlackArch | pacman -S s3scanner | |
| Docker | docker run ghcr.io/sa7mon/s3scanner | |
| Go | go install -v github.com/sa7mon/s3scanner@latest | |
| Kali Linux | apt install s3scanner | |
| MacOS | brew install s3scanner | |
| Parrot OS | apt install s3scanner | |
| Windows - winget | winget install s3scanner | |
| NixOS स्थिर | nix-shell -p s3scanner | |
| NixOS अस्थिर | nix-shell -p s3scanner | |
| अन्य - स्रोत से बनाएँ | git clone [email protected]:sa7mon/S3Scanner.git && cd S3Scanner && go build -o s3scanner . |