ทำไมสิ่งนี้ถึงไม่สร้างรูตเชลล์


2

ฉันใช้ OSX 10.8

ก่อนการทดลองของฉันมันเป็นเช่นนี้:

Nathan-der-Graue:~ max$ ls -l /bin/bash
-r-xr-xr-x  1 root  wheel  1333920 17 Feb 15:22 /bin/bash

จากนั้นฉันก็วิ่ง

Nathan-der-Graue:~ max$ sudo chmod +s /bin/bash

ฉันคาดว่าสิ่งนี้จะทำให้ bash เกิดขึ้นเสมอในฐานะเชลล์รูท แต่ดูเหมือนว่าไม่ได้เปลี่ยนอะไรเลยกับพฤติกรรมของ bash:

Nathan-der-Graue:~ max$ /bin/bash
bash-3.2$ whoami
max

ฉันรู้ว่านี่ไม่ใช่ความคิดที่ดีเลย ความผิดพลาดของฉันอยู่ที่ไหน ฉันเดาว่าฉันเข้าใจผิดกับ + s-flag


การสร้าง / bin / bash setuid มีแนวโน้มที่จะแบ่งบางส่วนของ OS X เองเนื่องจากมันใช้สำหรับสคริปต์ที่หลากหลายภายใน OS ซึ่งบางตัวไม่ควรทำงานเป็นรูท หากคุณต้องการเชลล์ setuid ให้ตั้งชื่ออื่นเพื่อหลีกเลี่ยงข้อขัดแย้ง
Gordon Davisson

คำตอบ:


3

มันไม่ทำงานเพราะทุบตีตรวจสอบอย่างชัดเจนสำหรับกรณี "running setuid" และตั้งค่า EUID ให้เหมือนกับ RUID - กล่าวอีกนัยหนึ่งมันจะลดสิทธิ์ทั้งหมดที่อาจได้รับจาก setuid bit


กระบวนการมีUID แยกกันหลายตัว - สองตัวหลักคือRUID (UID จริงมักจะเป็นแค่ "UID") ซึ่งกำหนดว่าใครเป็นเจ้าของกระบวนการและEUID (UID ที่มีประสิทธิภาพ) ซึ่งกำหนดสิทธิ์ที่กระบวนการนั้นมี

เมื่อ EUID เป็น 0 (root) กระบวนการสามารถตั้งค่า RUID หรือ EUID ที่ต้องการได้ และหากกระบวนการไม่มีสิทธิ์ใช้งานรูทก็ยังสามารถตั้งค่า RUID ให้เหมือนกับ EUID หรือกลับกันได้

เมื่อตั้งค่าบิตsetuidจะมีผลเฉพาะกระบวนการใหม่ 'EUID ไม่ใช่ RUID - กล่าวอีกนัยหนึ่งเท่านั้นจะให้สิทธิ์ของเจ้าของไฟล์เท่านั้นไม่ใช่ตัวตน /usr/bin/idลองมันอีกครั้งกับ


ดังนั้นฉันไม่เข้าใจผิดมันเป็นเพียงการทุบตีที่มีวิธีการพิเศษในการป้องกันสิ่งนี้? มีวิธีอื่นในการบรรลุสถานการณ์ที่ฉันต้องการหรือไม่
Max Ried

1
@MaxRied: เขียนโปรแกรม C ขนาดเล็กที่ตั้งค่า RUID เป็น EUID ก่อนเริ่มการทุบตี #include <unistd.h> /*newline*/ int main(int argc, char *argv[]) { setgid(getegid()); setuid(geteuid()); argv[0] = "bash"; execvp(argv[0], argv); }
grawity

-1

หากคุณมีsudoสิทธิ์คุณสามารถเรียกใช้

sudo -s

เพื่อรับรูตเชลล์


มีเหตุผลพิเศษสำหรับ downvote ไหม?
chepner

2
ฉันสงสัยว่าเป็นเพราะคุณไม่ได้ตอบคำถาม คำถามคือ " ทำไม setuid_bash ใช้งานไม่ได้ฉันเข้าใจผิดบิตหรือไม่" ไม่ใช่ "ฉันจะรูทเชลล์ได้อย่างไร"
Hennes

1
จริงฉันทำสมมติฐาน (ไม่รับประกัน?) ว่านี่เป็นปัญหา XY และเขาแค่อยากมีรูตเชลล์
chepner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.