การเปิดเผย S3 และพื้นที่จัดเก็บ
บักเก็ตสาธารณะ
การเปิดเผย S3 และพื้นที่จัดเก็บ เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดบักเก็ตพื้นที่จัดเก็บจึงทำให้ข้อมูลรั่วไหล
พื้นที่จัดเก็บออบเจ็กต์อย่าง AWS S3, Azure Blob และ GCP Cloud Storage เป็นหนึ่งในแหล่งที่มาที่พบบ่อยที่สุดของการรั่วไหลของข้อมูลบนคลาวด์ บักเก็ตสร้างได้ง่ายและกำหนดค่าผิดพลาดได้ง่าย
- ถูกตั้งค่าให้อ่านหรือเขียนแบบสาธารณะโดยไม่ได้ตั้งใจ
- ใช้ชื่อที่คาดเดาได้
- นโยบายบักเก็ตหรือ ACL กว้างเกินไป
บักเก็ตสาธารณะเพียงหนึ่งรายการอาจทำให้ข้อมูลหลายล้านระเบียนรั่วไหล
การทำงานของการตั้งชื่อ S3
ชื่อบักเก็ต S3 ต้อง ไม่ซ้ำกันทั่วโลก และเชื่อมโยงกับ URL ที่คาดเดาได้ ความสามารถในการคาดเดานี้เองที่ทำให้การสำรวจเป็นไปได้
ผู้ใดก็ตามที่เดาชื่อบักเก็ตที่มีอยู่ได้ สามารถตรวจสอบระดับการเข้าถึงของบักเก็ตนั้น
# Two equivalent S3 URL forms
https://my-bucket.s3.amazonaws.com/
https://s3.amazonaws.com/my-bucket/
# Region-specific endpoint
https://my-bucket.s3.eu-west-1.amazonaws.com/การตรวจหาบักเก็ตสาธารณะ
การทดสอบที่รวดเร็วที่สุดคือการส่งคำขอโดยไม่ผ่านการยืนยันตัวตน รหัสสถานะ HTTP จะบอกสถานะการเข้าถึง
- 200 พร้อมรายการ XML — เข้าถึงรายการแบบสาธารณะ
- 403 AccessDenied — มีบักเก็ตอยู่ แต่เป็นแบบส่วนตัว
- 404 NoSuchBucket — ไม่มีบักเก็ตดังกล่าว
# Anonymous listing attempt
curl -s https://example-data.s3.amazonaws.com/
# Anonymous via the AWS CLI (no signing)
aws s3 ls s3://example-data --no-sign-requestการเดาชื่อบักเก็ตแบบไล่ครบทุกกรณี
ผู้โจมตีสร้างชื่อที่เป็นไปได้จากชื่อบริษัทและคำลงท้ายที่พบบ่อย แล้วทดสอบทีละชื่อ เครื่องมือช่วยทำงานนี้โดยอัตโนมัติในปริมาณมาก
รูปแบบทั่วไป: company-backups, company-dev, company-logs, company-assets
# Permutate and probe bucket names from a keyword
cloud_enum -k example
# Dedicated S3 enumerator
s3scanner scan --bucket-file candidates.txtการอ่านสาธารณะเทียบกับการเขียนสาธารณะ
การเข้าถึงแบบสาธารณะมีสองลักษณะ และการเขียนอันตรายกว่าการอ่านมาก
- การอ่านสาธารณะ — ผู้โจมตีดาวน์โหลดข้อมูลของคุณ (ข้อมูลรั่วไหล)
- การเขียนสาธารณะ — ผู้โจมตีอัปโหลดหรือเขียนทับออบเจ็กต์
การเขียนสาธารณะเปิดโอกาสให้ทำลายหรือเปลี่ยนหน้าเว็บไซต์ โฮสต์มัลแวร์บนโดเมนของคุณ และแม้แต่โจมตีห่วงโซ่อุปทาน หากบักเก็ตให้บริการทรัพยากรเว็บไซต์หรือซอฟต์แวร์
# Test for public write (DANGEROUS - only with authorization)
aws s3 cp test.txt s3://example-data/ --no-sign-request
# If this succeeds, the bucket allows anonymous uploads.ความเข้าใจผิดเกี่ยวกับ 'Block Public Access'
AWS มีการตั้งค่า Block Public Access ทั้งในระดับบัญชีและระดับบักเก็ต การตั้งค่าเหล่านี้มีประสิทธิภาพสูง แต่ก็มักถูกเข้าใจผิด
- การตั้งค่าระดับบัญชีมีผลเหนือกว่านโยบายบักเก็ต
- บักเก็ตอาจเป็นส่วนตัวได้แม้นโยบายจะอนุญาตกว้าง หากเปิดใช้ BPA
- ในทางกลับกัน การปิด BPA อาจทำให้บักเก็ตหลายรายการเปิดเผยต่อสาธารณะทันที
ตรวจสอบสิทธิ์การเข้าถึงที่มีผลจริงเสมอ อย่าตรวจเพียงนโยบายเดียว
# Inspect block-public-access configuration
aws s3api get-public-access-block --bucket example-data
aws s3api get-bucket-policy-status --bucket example-dataการเปิดเผยข้อมูลจาก Azure Blob
Azure จัดเก็บออบเจ็กต์ไว้ใน คอนเทนเนอร์ภายใน บัญชีพื้นที่จัดเก็บ การกำหนดค่าที่ผิดพลาดจะตั้งระดับการเข้าถึงสาธารณะของคอนเทนเนอร์เป็น blob หรือ container
ชื่อบัญชีพื้นที่จัดเก็บก็ไม่ซ้ำกันทั่วโลกและคาดเดาได้เช่นกัน
# Azure blob URL pattern
https://exampleacct.blob.core.windows.net/container/file.txt
# Anonymous list attempt against a public container
curl -s 'https://exampleacct.blob.core.windows.net/backups?restype=container&comp=list'การเปิดเผยข้อมูลจาก GCP Cloud Storage
บักเก็ต Google Cloud Storage อาจถูกทำให้เป็นสาธารณะได้โดยมอบบทบาทการอ่านให้กับหลักการ allUsers หรือ allAuthenticatedUsers
รูปแบบการเปิดเผยคล้ายกับ S3 ได้แก่ ชื่อที่คาดเดาได้ การตรวจสอบโดยไม่ระบุตัวตน และการผูก IAM แบบสาธารณะ
# Anonymous list of a GCS bucket
curl -s https://storage.googleapis.com/example-bucket/
# Check IAM bindings for allUsers (authenticated)
gsutil iam get gs://example-bucketสิ่งที่ผู้โจมตีมองหาภายใน
บักเก็ตสาธารณะเป็นเพียงประตู สิ่งที่มีค่าจริง ๆ คือข้อมูลภายใน:
- ข้อมูลดัมป์และข้อมูลสำรองของฐานข้อมูล
- ซอร์สโค้ดและไฟล์
.envที่มีความลับ - ข้อมูลรับรองคลาวด์และคีย์ API
- PII ของลูกค้า (ข้อมูลส่วนบุคคล)
- เอกสารและการกำหนดค่าภายใน
แม้ไฟล์ที่รั่วไหลเพียงเล็กน้อยก็อาจมีคีย์ที่ใช้ยกระดับไปสู่การเข้าถึงบัญชีทั้งหมดได้
การแก้ไขและเสริมความปลอดภัย
การแก้ปัญหาการเปิดเผยข้อมูลจากพื้นที่จัดเก็บต้องดำเนินการเป็นหลายชั้น:
- เปิดใช้ Block Public Access ในระดับบัญชี
- ลบ ACL สาธารณะและสิทธิ์ที่มอบให้
allUsers/allAuthenticatedUsers - ใช้นโยบายบักเก็ตที่จำกัดขอบเขตไว้เฉพาะหลักการที่ระบุ
- เปิดใช้การเข้ารหัสและการบันทึกการเข้าถึง
- สแกนการกำหนดค่าอย่างต่อเนื่องเพื่อค้นหาบักเก็ตสาธารณะที่เกิดขึ้นใหม่
จัดการข้อมูลที่เปิดเผยอย่างมีความรับผิดชอบ
การพบบักเก็ตสาธารณะที่มีข้อมูลจริงจำนวนมากมีทั้งประเด็นด้านจริยธรรมและกฎหมาย
- อย่าดาวน์โหลดข้อมูลเกินกว่าขั้นต่ำที่จำเป็นต่อการพิสูจน์การเปิดเผย
- ห้ามดึงออกหรือติดตั้งข้อมูล PII ของลูกค้าไว้โดยเด็ดขาด
- รายงานทันทีผ่านช่องทางที่ปลอดภัย
- ปฏิบัติงานภายในขอบเขตและกฎการดำเนินงาน
เป้าหมายคือการพิสูจน์ว่ามีการเข้าถึงได้ ไม่ใช่การเก็บรวบรวมข้อมูล
ตรวจสอบอย่างรวดเร็ว
คำขอแบบไม่ระบุตัวตนไปยัง URL ของบักเก็ต S3 ได้รับ HTTP 403 AccessDenied สิ่งนี้บ่งชี้ว่าอย่างไร
สรุป: การเปิดเผยข้อมูลจาก S3 และพื้นที่จัดเก็บ
คุณได้เรียนรู้ว่าพื้นที่จัดเก็บออบเจ็กต์ทำให้ข้อมูลรั่วไหลได้อย่างไร และจะทดสอบอย่างปลอดภัยได้อย่างไร
- ชื่อบักเก็ตไม่ซ้ำกันทั่วโลกและ คาดเดาได้ จึงทำให้สำรวจได้
- รหัสสถานะ HTTP เปิดเผยสถานะการเข้าถึง: 200 (สาธารณะ), 403 (ส่วนตัว), 404 (ไม่มีอยู่)
- การเขียนสาธารณะอันตรายกว่าการอ่านสาธารณะ
- รูปแบบเดียวกันนี้ใช้กับ Azure Blob และ GCP Cloud Storage
- แก้ไขด้วย Block Public Access และนโยบายตามหลักสิทธิ์เท่าที่จำเป็น
ถัดไป: บริการข้อมูลเมตาและ SSRF ซึ่งเป็นห่วงโซ่การโจมตีเฉพาะของระบบคลาวด์
คำถามที่พบบ่อย
บทเรียน “การเปิดเผย S3 และพื้นที่จัดเก็บ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเปิดเผย S3 และพื้นที่จัดเก็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเปิดเผย S3 และพื้นที่จัดเก็บ”
บักเก็ตสาธารณะ คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเปิดเผย S3 และพื้นที่จัดเก็บ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นผิวการโจมตีบนคลาวด์
- การกำหนดค่า IAM ผิดพลาด
- การเปิดเผย S3 และพื้นที่จัดเก็บ
- เมทาดาทาและ SSRF