0Pricing
Ethical Hacking Academy · บทเรียน

การใช้ 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/null

GTFOBins

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/vim

Sudo กับโปรแกรมแก้ไขข้อความหรือเพจเจอร์

หากคุณสามารถเรียกใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแจกแจงข้อมูล
  2. การใช้ SUID และ Sudo ในทางที่ผิด
  3. งาน Cron และ PATH
  4. ช่องโหว่เคอร์เนล
← กลับไปที่ Ethical Hacking Academy