
امسح بحثًا عن حاويات S3 غير مُهيأة بشكل صحيح عبر واجهات برمجة تطبيقات متوافقة مع S3!
الميزات - الاستخدام - بداية سريعة - التثبيت - نقاش
INPUT: (مطلوب واحد)
-bucket string اسم الدلو المراد فحصه.
-bucket-file string ملف بأسماء الدلاء المراد فحصها.
-mq الاتصال بـ RabbitMQ للحصول على الدلاء. يتطلب مفتاح "mq" في ملف التكوين. الافتراضي: "false"
OUTPUT:
-db حفظ النتائج في قاعدة بيانات Postgres. يتطلب مفتاح "db.uri" في ملف التكوين. الافتراضي: "false"
-json طباعة السجلات إلى stdout بتنسيق JSON بدلاً من التنسيق القابل للقراءة. الافتراضي: "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: (مطلوب واحد)
-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
يجب أن تكون الرسائل كائنات Bucket مشفرة بتنسيق JSON - راجع mqingest للحصول على مثال للنشر باستخدام Golang.
-mq يتطلب مفتاحي ملف التكوين mq.uri و mq.queue_name. راجع قسم ملف التكوين للحصول على مثال.
OUTPUT:
-db حفظ النتائج في قاعدة بيانات Postgres. يتطلب مفتاح "db.uri" في ملف التكوين. الافتراضي: "false"
-json طباعة السجلات إلى stdout بتنسيق JSON بدلاً من التنسيق القابل للقراءة. الافتراضي: "false"
-dbيحفظ جميع نتائج الفحص في قاعدة بيانات PostgreSQL
s3scanner -bucket images -db
db.uri في ملف التكوين. راجع قسم ملف التكوين للحصول على مثال.-db، فسيتم أيضًا طباعة النتائج إلى وحدة التحكم إذا كنت تستخدم -json أو وضع الإخراج القابل للقراءة الافتراضي.s3scanner بتشغيل ميزة الترحيل التلقائي في Gorm في كل مرة يتصل فيها بقاعدة البيانات. إذا كان المخطط يحتوي بالفعل على جداول بأسماء يتوقعها Gorm، فقد يغير هيكل هذه الجداول. يُوصى بإنشاء مخطط Postgres مخصص لنتائج s3scanner.-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 "صفحات" من 1000 كائن. إذا كان هناك أكثر من 5000 صفحة من الكائنات، فسيتخطى الباقي.-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 حاويات:
تم تكوين ملفين شخصيين:
dev - بيئة تطوير قياسيةdev-mitm - بيئة مكونة مع mitmproxy لتسهيل مراقبة حركة مرور HTTP عند تصحيح الأخطاء أو إضافة مزودين جدد.لتشغيل بيئة التطوير، قم بتشغيل make dev أو make dev-mitm. ادخل إلى حاوية app باستخدام docker exec -it -w /app app_dev sh، ثم 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"
# providers.custom مطلوب بواسطة `-provider custom`
# address_style - نمط العنونة المستخدم من قبل نقاط النهاية.
# type: string
# values: "path" أو "vhost"
# endpoint_format - تنسيق عناوين URL لنقاط النهاية. يجب أن يحتوي على '$REGION' كمكان لاسم المنطقة
# type: string
# insecure - تجاهل أخطاء SSL
# type: boolean
# يجب أن تحتوي المناطق على خيار واحد على الأقل
providers:
custom:
address_style: "path"
endpoint_format: "https://$REGION.vultrobjects.com"
insecure: false
regions:
- "ewr1"
عندما يقوم s3scanner بتحليل ملف التكوين، سيأخذ endpoint_format ويستبدل $REGION بجميع regions المدرجة لإنشاء قائمة بعناوين URL لنقاط النهاية.
ملاحظة: S3Scanner يدعم حاليًا فقط فحص أذونات المستخدمين المجهولين لخدمات غير AWS
📚 مزيد من المعلومات حول واجهات برمجة التطبيقات غير AWS متوفرة في ويكي المشروع.
ستحاول هذه الأداة الحصول على جميع المعلومات المتاحة حول الدلو، ولكن الأمر متروك لك لتفسير النتائج.
الأذونات الممكنة للدلاء:
يمكن تعيين أي من هذه الأذونات أو جميعها لمجموعتي المستخدمين الرئيسيتين:
ما يعنيه هذا: مجرد أن الدلو لا يسمح بقراءة/كتابة ACLs لا يعني أنه لا يمكنك قراءة/كتابة الملفات في الدلو. وبالمثل، قد تكون قادرًا على سرد ACLs ولكن لا يمكنك القراءة/الكتابة إلى الدلو.
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 . |