การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด
การยกระดับสิทธิ์บนคลาวด์
การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
IAM ในฐานะกลไกยกระดับสิทธิ์
ในระบบคลาวด์ การยกระดับสิทธิ์มักหมายถึงการใช้ประโยชน์จากสิทธิ์ IAM แทนการโจมตีบั๊กด้านหน่วยความจำ หากข้อมูลประจำตัวที่มีสิทธิ์ต่ำสามารถแก้ไขนโยบาย สร้างคีย์ หรือรับบทบาทได้ ก็อาจเข้าถึงสิทธิ์ผู้ดูแลระบบ
- สิทธิ์ที่แก้ไข IAM ได้มีอันตรายโดยธรรมชาติ
- เส้นทางยกระดับสิทธิ์เป็นตรรกะของนโยบาย ไม่ใช่ช่องโหว่
- วิธีแก้คือการให้สิทธิ์เท่าที่จำเป็น ไม่ใช่การติดตั้งแพตช์
สิทธิ์ที่เป็นอันตราย
การดำเนินการ IAM บางอย่างทำให้ยกระดับสิทธิ์ได้โดยตรง ควรตรวจสอบสิ่งเหล่านี้ในตัวตนที่คุณควบคุม:
iam:CreateAccessKeyกับผู้ใช้รายอื่นiam:AttachUserPolicy/iam:PutUserPolicy(แนบ AdministratorAccess)iam:CreatePolicyVersion(เขียนนโยบายที่มีอยู่ใหม่)iam:PassRole+ บริการประมวลผล (เรียกใช้โค้ดในฐานะบทบาทที่มีสิทธิ์สูง)sts:AssumeRoleกับนโยบายความเชื่อถือที่อ่อนแอ
การยกระดับสิทธิ์ด้วยการแนบนโยบาย
หากข้อมูลประจำตัวของคุณสามารถแนบนโยบายให้ตัวเองได้ การยกระดับสิทธิ์ก็ห่างจากการเรียกใช้เพียงครั้งเดียว คุณเพียงแนบนโยบายผู้ดูแลระบบที่มีการจัดการ แล้วรับสิทธิ์ทั้งหมดมา
# Attach AdministratorAccess to yourself
aws iam attach-user-policy \
--user-name me \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccessการใช้ PassRole ในทางที่ผิด
iam:PassRole ช่วยให้คุณมอบบทบาทให้บริการได้ เมื่อใช้ร่วมกับบริการที่เรียกใช้โค้ดของคุณได้ (EC2, Lambda, Glue) คุณจะทำงานในฐานะบทบาทนั้น แม้บทบาทดังกล่าวจะมีสิทธิ์สูงกว่าคุณมากก็ตาม
# Launch a Lambda that assumes a privileged role you can pass
aws lambda create-function --function-name esc \
--role arn:aws:iam::111:role/AdminRole \
--runtime python3.12 --handler h.run --zip-file fileb://code.zipการย้อนกลับเวอร์ชันนโยบาย
iam:CreatePolicyVersion หรือ SetDefaultPolicyVersion ช่วยให้คุณแทนที่เอกสารนโยบายที่ใช้งานอยู่ หรือย้อนกลับไปใช้เวอร์ชันก่อนหน้าที่อนุญาตสิทธิ์มากกว่า ทำให้ได้การเข้าถึงอย่างกว้างขวางโดยไม่ต้องแก้ไขการเป็นสมาชิกกลุ่ม
# Make a new, permissive default version of an existing policy
aws iam create-policy-version \
--policy-arn arn:aws:iam::111:policy/devs \
--policy-document file://admin.json --set-as-defaultนโยบายความเชื่อถือและการใช้ AssumeRole ในทางที่ผิด
นโยบายความเชื่อถือของบทบาทกำหนดว่าใครสามารถรับบทบาทได้ เงื่อนไขความเชื่อถือที่อ่อนแอเปิดโอกาสให้ยึดบทบาท
- บทบาทที่เชื่อถือ
*หรือทั้งบัญชี สามารถถูกเรียกใช้ได้อย่างกว้างขวาง - หากคุณแก้ไขนโยบายความเชื่อถือของบทบาทได้ ให้เพิ่มตัวคุณเองเป็นตัวตนหลักที่เชื่อถือได้
- ปัญหาตัวแทนสับสน: ไม่มีรหัสภายนอกในบทบาทการผสานรวมของบุคคลที่สาม
# Assume a poorly-scoped role
aws sts assume-role \
--role-arn arn:aws:iam::111:role/CrossAccountAdmin \
--role-session-name ptสิ่งเทียบเท่าระหว่างระบบคลาวด์
รูปแบบเดียวกันนี้ปรากฏในผู้ให้บริการหลายราย
- Azure: การกำหนดบทบาท User Access Administrator หรือ Owner การใช้ Managed Identity ในทางที่ผิด และการเพิ่มข้อมูลรับรองให้ตัวตนบริการ
- GCP:
iam.serviceAccounts.actAsร่วมกับบริการประมวลผล การใช้setIamPolicyกับโครงการ และการสร้างคีย์บัญชีบริการ
# GCP: impersonate a privileged service account
gcloud compute instances create esc --service-account priv@proj.iam.gserviceaccount.com --scopes cloud-platformเครื่องมือสำหรับค้นหาเส้นทาง
แทนที่จะคาดเดา ให้ใช้เครื่องมือเพื่อเปิดเผยเส้นทางยกระดับสิทธิ์ที่ใช้งานได้จากตัวตนปัจจุบันของคุณ
# Pacu (AWS exploitation framework) escalation module
pacu
run iam__privesc_scan
# PMapper query for escalation
pmapper query 'preset privesc me'การเชื่อมต่อไปยังระนาบควบคุม
การยกระดับสิทธิ์มักเชื่อมโยงการเข้าถึงระนาบข้อมูลเข้ากับอำนาจในระนาบควบคุม
- เจาะ VM แล้วขโมยข้อมูลรับรองของบทบาทอินสแตนซ์จากเมทาดาทา
- บทบาทอินสแตนซ์มี
PassRole+ Lambda ทำให้เรียกใช้บทบาทผู้ดูแลระบบได้ - เมื่อได้สิทธิ์ผู้ดูแลระบบแล้ว ให้สร้างคีย์เข้าถึงแบบถาวรเพื่อปกปิดการเข้าถึง
แต่ละขั้นเชื่อมโยงเป็นข้อค้นพบแยกกันที่ควรรายงาน
การป้องกัน IAM
การป้องกันมุ่งเน้นที่การให้สิทธิ์เท่าที่จำเป็นและมาตรการควบคุม
- นำอักขระแทนที่ออก จำกัดขอบเขตการดำเนินการและทรัพยากรอย่างเคร่งครัด
- ใช้ ขอบเขตสิทธิ์ และ SCP เพื่อจำกัดเพดานสิทธิ์สูงสุด
- กำหนดให้บทบาทของบุคคลที่สามมี รหัสภายนอก และจำกัดขอบเขตนโยบายความเชื่อถือ
- เลือกใช้ข้อมูลรับรองของบทบาทที่มีอายุสั้นแทนคีย์ที่มีอายุยาว
- ใช้เครื่องมือวิเคราะห์การเข้าถึงเพื่อแจ้งเตือนสิทธิ์ที่มีความเสี่ยงและไม่ได้ใช้งาน
การดำเนินการอย่างมีจริยธรรม
การยกระดับ IAM อาจมอบอำนาจทั่วทั้งบัญชีให้ผู้โจมตี ให้หยุดที่การพิสูจน์แนวคิด: แสดงเส้นทางโดยไม่สร้างช่องทางลับถาวรหรือแก้ไขนโยบายระบบจริงที่คุณไม่สามารถย้อนคืนได้ ควรย้อนคืนการเปลี่ยนแปลงนโยบายหรือบทบาททั้งหมด และลบคีย์ที่สร้างขึ้นเสมอ
ประสานงานขั้นตอนที่อาจรบกวนระบบ เช่น การเขียนนโยบายที่ใช้ร่วมกันใหม่ กับลูกค้าล่วงหน้า
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตรวจสอบว่าคุณเข้าใจการยกระดับสิทธิ์ของ IAM แล้ว
สรุปทบทวน
คุณได้เรียนรู้ว่าการกำหนดค่า IAM ที่ไม่ถูกต้องทำให้ยกระดับสิทธิ์ได้อย่างไร
- การแนบนโยบาย PassRole การย้อนกลับเวอร์ชัน และ AssumeRole เป็นเส้นทางหลัก
- รูปแบบเดียวกันนี้เกิดขึ้นซ้ำใน AWS, Azure และ GCP
- Pacu และ PMapper ค้นหาเส้นทางที่ใช้งานได้โดยอัตโนมัติ
- การให้สิทธิ์เท่าที่จำเป็น ขอบเขตสิทธิ์ และรหัสภายนอกคือแนวทางป้องกัน
ถัดไป: การคงอยู่และการเคลื่อนย้ายด้านข้างข้ามบัญชีระบบคลาวด์
คำถามที่พบบ่อย
บทเรียน “การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด”
การยกระดับสิทธิ์บนคลาวด์ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นผิวการโจมตีบนคลาวด์
- การแจกแจงทรัพยากรคลาวด์
- การใช้ประโยชน์จากการกำหนดค่า IAM ที่ผิดพลาด
- การคงอยู่และการเคลื่อนที่ด้านข้าง