Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

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

bucky

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Bucky

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




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

ما يفعله

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

أهمية ذلك

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

root@kitploit:~
{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

root@kitploit:~
go install github.com/umair9747/bucky@latest

من المصدر

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

التحديث

root@kitploit:~
bucky --update

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

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

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

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

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

root@kitploit:~
{
  "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 المضمنة يتعامل مع التصفية على مستوى الحساب):

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

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

root@kitploit:~
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 الدور

root@kitploit:~
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 بالفعل، قم بإرفاقها:

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

الاستخدام

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

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

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

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

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

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

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

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

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

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

root@kitploit:~
bucky --bucket target-bucket --wordlist wordlists/default.txt --json
bucky --bucket target-bucket --wordlist wordlists/default.txt --json --output results.json

المخرجات:

root@kitploit:~
=== 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

التعداد فقط

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

root@kitploit:~
bucky enum \
  --role-arn arn:aws:iam::123456789012:role/bucky-role \
  --bucket target-bucket

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

root@kitploit:~
bucky enum --bucket bucket1,bucket2 --json
bucky enum --bucket-file targets.txt --json --output results.json

التخمين فقط

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

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

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

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

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

root@kitploit:~
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=wJal...
export BUCKY_ROLE_ARN=arn:aws:iam::123456789012:role/bucky-role

# الآن حدد الهدف فقط
bucky --bucket target-bucket --wordlist wordlists/default.txt

قوائم الكلمات

يأتي Bucky مع قائمة كلمات افتراضية في wordlists/default.txt تحتوي على حوالي 300 نمط تسمية شائع لدلاء S3:

  • الأسماء العامة (backups, logs, data, assets, uploads)
  • أنماط خدمات AWS (cloudtrail-logs, terraform-state, lambda-artifacts)
  • متغيرات البيئة (prod-logs, staging-data, dev-backups)
  • أنماط التطبيقات (api, web-assets, cdn-origin)
  • البنية التحتية (ci-artifacts, , )

قوائم كلمات مخصصة

للتدخلات المستهدفة، قم بإنشاء قائمة كلمات مخصصة بإضافة اسم المنظمة:

root@kitploit:~
ORG="acme"
while read -r line; do
  [[ "$line" =~ ^#.*$ || -z "$line" ]] && continue
  echo "${ORG}-${line}"
  echo "${line}-${ORG}"
  echo "${ORG}${line}"
done < wordlists/default.txt > wordlists/acme.txt

أي قائمة كلمات متوافقة مع أدوات مثل ffuf أو gobuster تعمل. التنسيق: اسم دلو واحد في كل سطر، تعليقات #، الأسطر الفارغة تُتجاهل.

مرجع الأوامر

الأمرالوصف
buckyسير العمل الكامل — تعداد معرف الحساب ثم التخمين لمزيد من الدلاء
bucky enumتعداد معرف الحساب المكون من 12 رقمًا من دلو معروف
bucky fuzzتخمين أسماء الدلاء مقابل معرف حساب معروف

الأعلام

الأعلام العامة (جميع الأوامر):

bucky (سير العمل الكامل):

العلمالوصف
--bucket

bucky enum:

العلمالوصف
--bucketدلاء S3 الهدف، مفصولة بفاصلة
--bucket-fileملف يحتوي على أسماء/عناوين URL للدلاء، دلو واحد في كل سطر

bucky fuzz:

العلمالوصف
--account-id

تنسيقات إدخال الدلو

يقبل العلم --bucket و--bucket-file تنسيقات إدخال متعددة. يستخرج Bucky تلقائيًا اسم الدلو (والمفتاح الاختياري) من:

التنسيقمثال
اسم عاديmy-bucket
URI S3s3://my-bucket/path/to/key

يمكن تمرير دلاء متعددة مفصولة بفاصلة عبر --bucket:

root@kitploit:~
--bucket bucket1,s3://bucket2/key,https://bucket3.s3.amazonaws.com/

أو مذكورة سطرًا سطرًا في ملف عبر --bucket-file:

root@kitploit:~
my-bucket
s3://another-bucket/index.html
https://third.s3.us-east-1.amazonaws.com/

عندما تتحل عدة دلاء إلى نفس معرف الحساب، يقوم Bucky بإزالة التكرار ويقوم بالتخمين مرة واحدة فقط لكل حساب فريد.

مخرجات JSON

استخدم --json لحفظ النتائج إلى ملف JSON. اسم الملف الافتراضي هو bucky-{uuid}.json في الدليل الحالي، أو حدد مسارًا باستخدام --output:

root@kitploit:~
bucky --bucket target-bucket --wordlist wordlists/default.txt --json
bucky --bucket target-bucket --wordlist wordlists/default.txt --json --output results.json

تنسيق المخرجات:

root@kitploit:~
{
  "timestamp": "2024-01-15T10:30:00Z",
  "results": [
    {
      "bucket": "target-bucket",
      "account_id": "675351422352",
      "region": "ap-south-1",
      "discovered_buckets": [
        "dev-675351422352-ap-south-1-an.s3.ap-south-1.amazonaws.com",
        "prod-675351422352-ap-south-1-an.s3.ap-south-1.amazonaws.com"
      ]
    }
  ]
}

معالجة منطقة الدلو

يكتشف Bucky تلقائيًا منطقة الدلاء الهدف. عندما يُرجع S3 إعادة توجيه 301 (الدلو في منطقة مختلفة عن --region)، يحل Bucky المنطقة الصحيحة عبر رأس استجابة HTTP x-amz-bucket-region ويخزنها مؤقتًا لجميع الطلبات اللاحقة. لا حاجة لتكوين يدوي للمنطقة للدلو الهدف.

دعنا نتواصل!

إذا كان لديك أي أسئلة أو تعليقات حول Bucky أو ترغب فقط في التواصل معي، فلا تتردد في الاتصال بي عبر LinkedIn أو البريد الإلكتروني.

تنزيل الأداة
متغيرالعلمالوصف
AWS_ACCESS_KEY_ID--access-keyمعرف مفتاح الوصول AWS
AWS_SECRET_ACCESS_KEY--secret-keyمفتاح الوصول السري AWS
AWS_SESSION_TOKEN--session-tokenرمز جلسة AWS (للبيانات المعتمدة المؤقتة)
AWS_REGION--regionمنطقة AWS (الافتراضي: us-east-1)
AWS_DEFAULT_REGION--regionاحتياطي إذا لم يتم تعيين AWS_REGION
AWS_PROFILE--profileملف تعريف AWS المسمى من ~/.aws/credentials
BUCKY_ROLE_ARN--role-arnARN لدور IAM لافتراضه
BUCKY_BUCKET--bucketاسم دلو S3 الهدف
BUCKY_ACCOUNT_ID--account-idمعرف حساب AWS الهدف (fuzz فقط)
BUCKY_WORDLIST--wordlistمسار ملف قائمة الكلمات
BUCKY_WORKERS--workersالعمال المتزامنين للتخمين (الافتراضي: 10)
build-output
docker-images
العلمالوصف
--access-keyمعرف مفتاح الوصول AWS
--secret-keyمفتاح الوصول السري AWS
--session-tokenرمز جلسة AWS
--regionمنطقة AWS (الافتراضي: us-east-1)
--profileملف تعريف AWS المسمى
--role-arnARN لدور IAM لافتراضه
--jsonحفظ النتائج إلى ملف JSON
--outputمسار ملف مخرجات JSON (الافتراضي: bucky-{uuid}.json)
دلاء S3 الهدف، مفصولة بفاصلة
--bucket-fileملف يحتوي على أسماء/عناوين URL للدلاء، دلو واحد في كل سطر
--wordlistمسار ملف قائمة الكلمات
--workersالعمال المتزامنين (الافتراضي: 10)
معرف حساب AWS الهدف المكون من 12 رقمًا
--wordlistمسار ملف قائمة الكلمات
--workersالعمال المتزامنين (الافتراضي: 10)
--regionsمناطق مفصولة بفاصلة لتحويرات الأسماء
URL مستضاف افتراضيًا
https://my-bucket.s3.us-west-2.amazonaws.com/key
URL بنمط المسارhttps://s3.us-west-2.amazonaws.com/my-bucket/key