การใช้ SUID และ Sudo ในทางที่ผิด
การกำหนดค่าผิดพลาด
การใช้ SUID และ Sudo ในทางที่ผิด เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
บิต SUID
บิตสิทธิ์ SUID ทำให้ไฟล์ทำงานด้วยสิทธิ์ของเจ้าของ แทนผู้ใช้ที่เรียกใช้ไฟล์นั้น เมื่อเจ้าของคือ root ไบนารี SUID จะทำงานในฐานะ root ซึ่งมีประโยชน์กับเครื่องมืออย่าง passwd แต่อันตรายหากถูกใช้ในทางที่ผิด
-rwsr-xr-x 1 root root /usr/bin/passwd
# the s in rws = SUID bitการค้นหาไบนารี SUID
สำรวจไฟล์ SUID ทุกไฟล์และเปรียบเทียบกับข้อมูลอ้างอิงที่ทราบว่าปลอดภัย สิ่งที่ผิดปกติ เช่น โปรแกรมแก้ไขข้อความ ตัวแปลภาษา หรือไบนารีที่สร้างขึ้นเอง ล้วนเป็นตัวเลือกที่ควรตรวจสอบ
find / -perm -4000 -type f 2>/dev/nullGTFOBins
GTFOBins เป็นแค็ตตาล็อกที่รวบรวมวิธีใช้ไบนารี Unix มาตรฐานในทางที่ผิดเพื่อหลบหนีการจำกัด ยกระดับสิทธิ์ หรืออ่าน/เขียนไฟล์เมื่อได้รับสิทธิ์ SUID หรือ sudo ควรตรวจสอบไบนารีที่ค้นพบกับ GTFOBins เสมอ
# gtfobins.github.io -> search the binary nameการใช้ SUID ของ find ในทางที่ผิด
หาก find มีบิต SUID ตัวเลือก -exec ของมันจะเรียกใช้คำสั่งในฐานะ root ทำให้ได้เชลล์ root ทันที
find . -exec /bin/sh -p \; -quit
# -p preserves the elevated privilegesการหลบออกจากเชลล์ผ่าน SUID
ตัวแปลภาษาและเพจเจอร์จำนวนมากสามารถเรียกใช้เชลล์ได้ vim, less, awk หรือ python ที่มี SUID สามารถพาคุณเข้าสู่เชลล์ root ได้
awk "BEGIN {system(\"/bin/sh -p\")}"
# or in less: !/bin/shการกำหนดค่า Sudo ผิดพลาด
เรียกใช้ sudo -l เพื่อแสดงคำสั่งที่อนุญาต รายการที่ให้คุณเรียกใช้ไบนารีที่ใช้ประโยชน์ได้ในฐานะ root หรือใช้ NOPASSWD ได้ ถือเป็นโอกาสสำคัญทันที คำสั่งนั้นไม่จำเป็นต้องเป็นเชลล์ เพราะ GTFOBins แสดงวิธีหลบออกสำหรับคำสั่งจำนวนมาก
sudo -l
# (ALL) NOPASSWD: /usr/bin/vimSudo กับโปรแกรมแก้ไขข้อความหรือเพจเจอร์
หากคุณสามารถเรียกใช้ sudo vim (หรือรูปแบบของ less, more, man, nano) ได้ คุณก็สามารถเรียกเชลล์ในฐานะ root จากภายในโปรแกรมได้
sudo vim -c ":!/bin/sh"
# inside less: sudo less file -> !/bin/shเทคนิค LD_PRELOAD
หาก sudo รักษาค่า LD_PRELOAD ไว้ (ผ่าน env_keep) คุณสามารถโหลดไลบรารีร่วมที่เป็นอันตราย ซึ่งจะทำงานในฐานะ root เมื่อคำสั่ง sudo เริ่มทำงาน
sudo -l # look for env_keep+=LD_PRELOAD
sudo LD_PRELOAD=/tmp/evil.so programช่องโหว่ของรุ่น Sudo
sudo บางรุ่นมีข้อบกพร่อง เช่น heap overflow Baron Samedit (CVE-2021-3156) และการหลบเลี่ยงด้วย -u#-1 (CVE-2019-14287) ให้ตรวจสอบ sudo --version กับรายการ CVE ที่ทราบ
sudo --version
# vulnerable < 1.9.5p2 -> Baron Sameditไบนารี SUID ที่สร้างขึ้นเอง
บางครั้งนักพัฒนาจัดส่งตัวช่วย SUID ที่สร้างขึ้นเอง ซึ่งเรียกโปรแกรมอื่นด้วยชื่อโดยไม่ใช้พาธแบบสัมบูรณ์ หากคุณควบคุม PATH ได้ คุณสามารถยึดการเรียกนั้นมาใช้เอง ซึ่งเชื่อมโยงไปยังเทคนิคการใช้ PATH ในทางที่ผิดที่จะกล่าวถึงต่อไป
การเสริมความปลอดภัยและจริยธรรม
ผู้ป้องกันระบบควรลดจำนวนไบนารี SUID ใช้พาธแบบสัมบูรณ์ ลดสิทธิ์ตั้งแต่เนิ่น ๆ และอัปเดต sudo ให้ทันสมัยพร้อมกฎที่รัดกุม ในฐานะผู้ทดสอบ ให้ใช้ประโยชน์จากสิ่งเหล่านี้เฉพาะภายในขอบเขตที่ได้รับอนุญาต
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับ SUID/sudo ของคุณ
สรุปทบทวน
คุณได้เรียนรู้การใช้ SUID และ sudo ในทางที่ผิด:
- SUID ทำให้ไบนารีทำงานในฐานะเจ้าของ ซึ่งมักเป็น root
- ตรวจสอบไบนารีที่ค้นพบกับ GTFOBins
- หลบออกเข้าสู่เชลล์ผ่าน SUID/sudo ด้วย
find,vim,awk,less - LD_PRELOAD และ CVE ของ sudo (Baron Samedit) ก็ใช้ยกระดับสิทธิ์ได้เช่นกัน
ถัดไป: งาน cron และการใช้ PATH ในทางที่ผิด
คำถามที่พบบ่อย
บทเรียน “การใช้ SUID และ Sudo ในทางที่ผิด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การใช้ SUID และ Sudo ในทางที่ผิด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การใช้ SUID และ Sudo ในทางที่ผิด”
การกำหนดค่าผิดพลาด คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การใช้ SUID และ Sudo ในทางที่ผิด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การแจกแจงข้อมูล
- การใช้ SUID และ Sudo ในทางที่ผิด
- งาน Cron และ PATH
- ช่องโหว่เคอร์เนล