Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
bucky — أداة تعداد معرفات حسابات S3 واكتشاف الدلاء | Kitploit
أدوات/GitHubGitHub/umair9747/bucky
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعتحليل الثغرات الأمنيةجمع المعلوماتاختبار الاختراقأمن السحابة
GitHubumair9747/bucky

bucky

أداة تعداد معرفات حسابات S3 واكتشاف الدلاء

عرض المستودع
2118منذ 7 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Bucky

أداة لتعداد معرف حساب S3 واكتشاف الدلاء (Buckets)




عند وجود دلو S3 واحد يمكن الوصول إليه، يستخرج Bucky معرف حساب AWS المكون من 12 رقمًا الذي يملكه، ثم يكتشف دلاء إضافية تابعة لنفس الحساب عن طريق تخمين أسماء الدلاء باستخدام قائمة كلمات — كل ذلك في أمر واحد.

ما يفعله

  1. يُعدّد معرف الحساب — يستخدم مفتاح شرط IAM s3:ResourceAccount لتخمين معرف حساب AWS المكون من 12 رقمًا رقمًا تلو الآخر من خلال سياسات جلسة STS المضمنة
  2. يكتشف المزيد من الدلاء — يُخمّن أسماء الدلاء من قائمة كلمات للعثور على دلاء إضافية مملوكة لنفس الحساب باستخدام عمال متزامنين
  3. يُبلغ عن كل شيء — معرف الحساب، منطقة الدلو، وجميع الدلاء المكتشفة

أهمية ذلك

كانت أسماء دلاء S3 تشترك في الأصل في مساحة اسم عالمية واحدة، مما أدى إلى ظهور bucketsquatting — حيث يمكن للمهاجمين احتلال أسماء يتوقعون أن المنظمات ستقوم بإنشائها. عالجت AWS هذه المشكلة من خلال طرح مساحات أسماء للحساب-المنطقة، وهو مخطط تسمية يربط كل دلو بحسابه ومنطقته المالكة:

{name}-{accountID}-{region}-an

دلو باسم myapp-123456789123-eu-north-1-an سيكون موجودًا على https://myapp-123456789123-eu-north-1-an.s3.eu-north-1.amazonaws.com. توصي AWS الآن بهذا التنسيق للدلاء الجديدة، على الرغم من أنه ليس الإعداد الافتراضي بعد. (للاطلاع على خلفية حول كيفية إنهاء مساحة الاسم الجديدة لظاهرة bucketsquatting، راجع One Cloud Please.)

المقابل هو أن معرف الحساب والمنطقة أصبحا الآن جزءًا من اسم الدلو نفسه. بمجرد حصول المهاجم على معرف حساب الهدف، يمكنه إقرانه بقائمة كلمات وبناء عناوين URL صالحة للدلاء بشكل منهجي — وسيؤكد S3 ما إذا كان كل منها موجودًا، حتى لو كان الدلو خاصًا. هذا الرد وحده يعد استطلاعًا مفيدًا.

يستغل Bucky هذه النقطة تحديدًا. بالاستناد إلى أبحاث من Pwned Labs، يقوم أولاً باستعادة معرف الحساب المكون من 12 رقمًا من أي دلو يمكن الوصول إليه باستخدام تقنية s3-account-search، ثم يقوم بتخمين نمط {name}-{accountID}-{region}-an للكشف عن البصمة الأوسع لنظام S3 للهدف.

كيفية عمل التقنية

  1. تقوم بإنشاء دور IAM في حسابك الخاص في AWS الذي لديه صلاحية s3:ListBucket أو s3:GetObject على الدلو الهدف
  2. تستدعي sts:AssumeRole على ذلك الدور، مررًا سياسة جلسة مضمنة مع شرط s3:ResourceAccount مثل "1*"
  3. إذا كان حساب الدلو الهدف يبدأ بـ 1، فإن استدعاء HeadBucket ينجح؛ وإلا فإنه يُرجع 403
  4. كرر لكل موضع رقم (0–9) حتى يتم اكتشاف جميع الأرقام الـ 12
  5. تعمل سياسة الجلسة المضمنة كحدود صلاحية — فهي تتقاطع مع صلاحيات الدور، لذلك يتم منح الوصول فقط عندما يطابق الشرط

يتطلب هذا على الأكثر 120 استدعاء API (12 موضعًا × 10 أرقام) وعادة ما يكتمل في أقل من دقيقة.

التثبيت

باستخدام go install

go install github.com/umair9747/bucky@latest

من المصدر

git clone https://github.com/umair9747/bucky.git
cd bucky
go build -o bucky .
sudo mv bucky /usr/local/bin/

التحديث

bucky --update

هذا يسحب وينصب أحدث إصدار من المستودع.

المتطلبات المسبقة: إعداد دور IAM

قبل استخدام Bucky، تحتاج إلى دور IAM في حسابك الخاص في AWS يمكنه الوصول إلى دلو S3 الهدف. يجب أن يكون الدلو الهدف عامًا أو لديه سياسة دلو تسمح بالوصول من حسابك.

الخطوة 1: إنشاء سياسة الثقة

أنشئ trust-policy.json — هذا يسمح لمستخدم IAM الخاص بك بافتراض الدور:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

استبدل <YOUR_ACCOUNT_ID> بمعرف حساب AWS المكون من 12 رقمًا. يمكنك تقييد الأساس إلى ARN مستخدم أو دور IAM محدد بدلاً من :root.

الخطوة 2: إنشاء سياسة الصلاحيات

أنشئ s3-policy.json — يحتاج الدور إلى صلاحية قراءة S3 واسعة (شرط s3:ResourceAccount في سياسة جلسة Bucky المضمنة يتعامل مع التصفية على مستوى الحساب):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": "*"
    }
  ]
}

الخطوة 3: إنشاء الدور

aws iam create-role \
  --role-name bucky-role \
  --assume-role-policy-document file://trust-policy.json

aws iam put-role-policy \
  --role-name bucky-role \
  --policy-name S3ReadAccess \
  --policy-document file://s3-policy.json

الخطوة 4: الحصول على ARN الدور

aws iam get-role --role-name bucky-role --query 'Role.Arn' --output text
# Output: arn:aws:iam::123456789012:role/bucky-role

الخطوة 5: التأكد من صلاحية AssumeRole

إذا لم يكن لدى مستخدم IAM لديك صلاحية sts:AssumeRole بالفعل، قم بإرفاقها:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/bucky-role"
    }
  ]
}

الاستخدام

سير العمل الكامل (الافتراضي)

الطريقة الأساسية لاستخدام Bucky — تعداد معرف الحساب من دلو معروف، ثم التخمين لمزيد من الدلاء في أمر واحد:

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket target-bucket \
  --wordlist wordlists/default.txt \
  --access-key AKIA... \
  --secret-key wJal...

مع مفتاح كائن معروف (يحسن الموثوقية):

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket s3://target-bucket/index.html \
  --wordlist wordlists/default.txt \
  --workers 20

دلاء متعددة (مفصولة بفاصلة):

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket bucket1,bucket2,bucket3 \
  --wordlist wordlists/default.txt

دلاء متعددة من ملف:

bucky \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket-file targets.txt \
  --wordlist wordlists/default.txt

حفظ النتائج إلى JSON:

bucky --bucket target-bucket --wordlist wordlists/default.txt --json
bucky --bucket target-bucket --wordlist wordlists/default.txt --json --output results.json

المخرجات:

=== Phase 1: Account ID Enumeration ===
[*] Verifying access to bucket: target-bucket
[+] Access confirmed
[+] Bucket region: us-west-2
[*] Enumerating account ID...
  [██████████████████████████████] 12/12 | 675351422352

[+] Account ID: 675351422352

=== Phase 2: Bucket Discovery ===
[*] Fuzzing buckets for account: 675351422352
[*] Loaded 312 candidates from wordlist
[+] FOUND: target-backups
[+] FOUND: target-logs
  [██████████████████████████████] 312/312 | 2 found

=== Summary ===
Account ID : 675351422352
Source     : target-bucket
Region     : us-west-2
Discovered : 2 additional bucket(s)
             - target-backups
             - target-logs

التعداد فقط

إذا كنت تحتاج فقط إلى معرف الحساب:

bucky enum \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket target-bucket

الدلاء المتعددة ومخرجات JSON تعمل أيضًا مع الأوامر الفرعية:

bucky enum --bucket bucket1,bucket2 --json
bucky enum --bucket-file targets.txt --json --output results.json

التخمين فقط

إذا كان لديك بالفعل معرف حساب وتريد اكتشاف الدلاء:

bucky fuzz \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --account-id 675351422352 \
  --wordlist wordlists/default.txt \
  --workers 20

متغيرات البيئة

يمكن تعيين جميع الأعلام عبر متغيرات البيئة. الأعلام لها الأولوية عند ضبط كليهما.

تنزيل الأداة