Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
bucky — एक S3 खाता आईडी गणना और बकेट खोज उपकरण | Kitploit
उपकरण/GitHubGitHub/umair9747/bucky
OSINT (खुला स्रोत खुफिया)टोहीभेद्यता विश्लेषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगक्लाउड सुरक्षा
GitHubumair9747/bucky

bucky

एक S3 खाता आईडी गणना और बकेट खोज उपकरण

रिपॉजिटरी देखें
215 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Bucky

एक S3 खाता आईडी गणना और बकेट खोज उपकरण




एक एकल सुलभ S3 बकेट दिए जाने पर, bucky उसके मालिक की 12 अंकों की AWS खाता आईडी निकालता है, फिर एक वर्डलिस्ट के विरुद्ध बकेट नामों को फ़ज़ करके उसी खाते से संबंधित अतिरिक्त बकेट खोजता है — सब एक ही कमांड में।

यह क्या करता है

  1. खाता आईडी की गणना करता है — इनलाइन STS सत्र नीतियों के माध्यम से s3:ResourceAccount IAM शर्त कुंजी का उपयोग करके 12 अंकों की AWS खाता आईडी को एक-एक अंक करके ब्रूट-फ़ोर्स करता है
  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 के शोध पर आधारित, यह पहले s3-account-search तकनीक का उपयोग करके किसी भी सुलभ बकेट से 12 अंकों की खाता आईडी प्राप्त करता है, फिर {name}-{accountID}-{region}-an पैटर्न को ब्रूट-फ़ोर्स करके लक्ष्य के व्यापक S3 पदचिह्न को उजागर करता है।

तकनीक कैसे काम करती है

  1. आप अपने AWS खाते में एक IAM भूमिका बनाते हैं जिसके पास लक्ष्य बकेट पर s3:ListBucket या s3:GetObject की अनुमति है
  2. आप उस भूमिका पर sts:AssumeRole कॉल करते हैं, जिसमें "1*" जैसी s3:ResourceAccount शर्त के साथ एक इनलाइन सत्र नीति पारित करते हैं
  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 का उपयोग करने से पहले, आपको अपने AWS खाते में एक IAM भूमिका की आवश्यकता है जो लक्ष्य 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> को अपनी 12 अंकों की AWS खाता आईडी से बदलें। आप :root के बजाय प्रिंसिपल को किसी विशिष्ट IAM उपयोगकर्ता या भूमिका ARN तक सीमित कर सकते हैं।

चरण 2: अनुमतियाँ नीति बनाएँ

s3-policy.json बनाएँ — भूमिका को व्यापक S3 पढ़ने की पहुँच की आवश्यकता है (bucky की इनलाइन सत्र नीति में s3:ResourceAccount शर्त खाता-स्तरीय फ़िल्टरिंग को संभालती है):

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
# आउटपुट: 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:~
=== चरण 1: खाता आईडी गणना ===
[*] बकेट तक पहुँच सत्यापित की जा रही है: target-bucket
[+] पहुँच की पुष्टि हुई
[+] बकेट क्षेत्र: us-west-2
[*] खाता आईडी की गणना की जा रही है...
  [██████████████████████████████] 12/12 | 675351422352

[+] खाता आईडी: 675351422352

=== चरण 2: बकेट खोज ===
[*] खाते के लिए बकेट फ़ज़ किए जा रहे हैं: 675351422352
[*] वर्डलिस्ट से 312 उम्मीदवार लोड किए गए
[+] मिला: target-backups
[+] मिला: target-logs
  [██████████████████████████████] 312/312 | 2 मिले

=== सारांश ===
खाता आईडी : 675351422352
स्रोत     : target-bucket
क्षेत्र     : us-west-2
खोजा गया : 2 अतिरिक्त बकेट
             - 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
S3 URIs3://my-bucket/path/to/key
वर्चुअल-होस्टेड URL

--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 x-amz-bucket-region HTTP प्रतिक्रिया हेडर के माध्यम से सही क्षेत्र का समाधान करता है और इसे सभी बाद के अनुरोधों के लिए कैश करता है। लक्ष्य बकेट के लिए किसी मैन्युअल क्षेत्र कॉन्फ़िगरेशन की आवश्यकता नहीं है।

चलिए जुड़ते हैं!

यदि आपके पास Genzai के बारे में कोई प्रश्न या प्रतिक्रिया है या बस मुझसे जुड़ना चाहते हैं, तो कृपया LinkedIn या ईमेल के माध्यम से संपर्क करें।

टूल डाउनलोड करें
चरफ़्लैगविवरण
AWS_ACCESS_KEY_ID--access-keyAWS एक्सेस कुंजी ID
AWS_SECRET_ACCESS_KEY--secret-keyAWS गुप्त एक्सेस कुंजी
AWS_SESSION_TOKEN--session-tokenAWS सत्र टोकन (अस्थायी क्रेडेंशियल के लिए)
AWS_REGION--regionAWS क्षेत्र (डिफ़ॉल्ट: us-east-1)
AWS_DEFAULT_REGION--regionयदि AWS_REGION सेट नहीं है तो फ़ॉलबैक
AWS_PROFILE--profile~/.aws/credentials से AWS नामित प्रोफ़ाइल
BUCKY_ROLE_ARN--role-arnग्रहण करने के लिए IAM भूमिका का ARN
BUCKY_BUCKET--bucketलक्ष्य S3 बकेट नाम
BUCKY_ACCOUNT_ID--account-idलक्ष्य AWS खाता ID (केवल fuzz)
BUCKY_WORDLIST--wordlistवर्डलिस्ट फ़ाइल का पथ
BUCKY_WORKERS--workersसमवर्ती फ़ज़िंग वर्कर (डिफ़ॉल्ट: 10)
build-output
docker-images
फ़्लैगविवरण
--access-keyAWS एक्सेस कुंजी ID
--secret-keyAWS गुप्त एक्सेस कुंजी
--session-tokenAWS सत्र टोकन
--regionAWS क्षेत्र (डिफ़ॉल्ट: us-east-1)
--profileAWS नामित प्रोफ़ाइल
--role-arnग्रहण करने के लिए IAM भूमिका का ARN
--jsonपरिणाम JSON फ़ाइल में सहेजें
--outputJSON आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: bucky-{uuid}.json)
लक्ष्य S3 बकेट, अल्पविराम से अलग
--bucket-fileबकेट नाम/URL वाली फ़ाइल, प्रति पंक्ति एक
--wordlistवर्डलिस्ट फ़ाइल का पथ
--workersसमवर्ती वर्कर (डिफ़ॉल्ट: 10)
लक्ष्य 12 अंकों की AWS खाता ID
--wordlistवर्डलिस्ट फ़ाइल का पथ
--workersसमवर्ती वर्कर (डिफ़ॉल्ट: 10)
--regionsनाम उत्परिवर्तन के लिए अल्पविराम से अलग किए गए क्षेत्र
https://my-bucket.s3.us-west-2.amazonaws.com/key
पथ-शैली URLhttps://s3.us-west-2.amazonaws.com/my-bucket/key