ทำไม“ nodev” ใน / etc / fstab สำคัญมาก? อุปกรณ์อักขระสามารถใช้สำหรับการแฮ็กได้อย่างไร


19

ฉันกำลังเรียนรู้เกี่ยวกับความปลอดภัยของ linux และพยายามเข้าใจว่าเหตุใดอุปกรณ์ USB ที่ติดกับอุปกรณ์อักขระจึงอาจเป็นอันตรายได้

หากฉันมีอุปกรณ์ USB ที่มีการปฏิบัติการทุบตีที่มีราก setuid สิ่งที่เป็นอันตรายก็ชัดเจน: ใครก็ตามที่มีอุปกรณ์ USB นั้นสามารถได้รับสิทธิ์รูทในคอมพิวเตอร์ของฉันหากฉันมีรายการเช่น

/dev/sdb1 /media/usbstick auto defaults 0 0

ในของฉัน/etc/fstabเพราะมีdefaultssuid

แต่สิ่งที่เกี่ยวกับอุปกรณ์ตัวละคร? ฉันจะใช้อุปกรณ์ตัวละครเพื่อรับสิทธิพิเศษรูทหรือทำลายไฟล์ได้อย่างไรหาก USB stick ที่มีอุปกรณ์ตัวละครอยู่นั้นถูกเมาท์ด้วยdevหรือdefaults?

คำตอบ:


31

เนื่องจากการเข้าถึงอุปกรณ์ที่อยู่ภายใต้การควบคุมโดยสิทธิ์ของไฟล์โดยค่าเริ่มต้นดังนั้นหาก USB stick ของคุณมีระบบไฟล์ POSIX ที่มีโหนดอุปกรณ์ที่เขียนได้ทั่วโลกซึ่งสอดคล้องกับอุปกรณ์จริงในระบบคุณสามารถใช้โหนดอุปกรณ์นั้นในการเข้าถึง อุปกรณ์ในฐานะผู้ใช้ "ธรรมดา" ลองนึกภาพอุปกรณ์ที่สอดคล้องกับหนึ่งในอุปกรณ์เสียงเว็บแคมของคุณ/dev/sda(ซึ่งเป็นอุปกรณ์บล็อกมากกว่าอุปกรณ์ตัวละคร แต่ข้อโต้แย้งนั้นเหมือนกัน) ...

นี่คือตัวอย่างที่จะทำให้สิ่งต่าง ๆ ชัดเจนขึ้น สมมติว่าคุณต้องการเข้าถึง/dev/sda(จากนั้นคุณสามารถทำสิ่งใดก็ได้ที่คุณต้องการด้วยเนื้อหาของดิสก์รวมถึงการสร้างโปรแกรมที่จะทำให้คุณกลายrootเป็นอุปกรณ์บล็อก แต่ปัญหาจะเหมือนกันกับอุปกรณ์ตัวอักษร) ในระบบเป้าหมายของคุณls -l /dev/sdaจะแสดง

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

ซึ่งหมายความว่า/dev/sdaเป็นอุปกรณ์บล็อก ( bที่จุดเริ่มต้นของบรรทัด) ด้วยหมายเลขหลัก 8 และหมายเลขรอง 0 ( 8, 0ในช่วงกลางของบรรทัด) อุปกรณ์นี้สามารถเข้าถึงได้root(อ่าน / เขียน) และสมาชิกของdiskกลุ่มเท่านั้น (อ่าน / เขียน)

ตอนนี้คิดว่าในระบบนี้คุณไม่สามารถกลายเป็นrootแต่ด้วยเหตุผลบางอย่างที่คุณสามารถติด USB sticks nodevได้เป็นผู้ใช้โดยไม่ต้อง ในระบบอื่นที่คุณอยู่rootคุณสามารถสร้างไฟล์พิเศษที่สอดคล้องกันบนคีย์ USB ของคุณ:

mknod -m 666 usersda b 8 0

สิ่งนี้จะสร้างไฟล์พิเศษที่usersdaทุกคนเรียกว่าอ่านและเขียนได้

เมาท์กุญแจบนระบบเป้าหมายของคุณและเฮ้โอมเพี้ยงคุณสามารถใช้usersdaอุปกรณ์ได้ในลักษณะเดียว/dev/sdaกับ แต่ไม่มีข้อ จำกัด การเข้าถึง ...

(สิ่งนี้จะทำงานได้แม้กับระบบไฟล์ที่เข้ารหัสตราบใดที่คุณสามารถเข้าถึงอุปกรณ์ตัวทำแผนที่ถอดรหัส: สร้างอุปกรณ์ที่ตรงกับ/dev/mapperรายการที่เหมาะสม)


นั่นฟังดูน่าสนใจ! แต่ฉันไม่แน่ใจว่าฉันเข้าใจ อุปกรณ์คือไฟล์และไฟล์ถูกเข้าถึงผ่าน inodes อุปกรณ์ปลอมที่ติด USB ของฉันจะมีไอโหนดที่แตกต่างกันดังนั้นมันจะเป็นอุปกรณ์ที่แตกต่างกันใช่มั้ย
rosix

7
อุปกรณ์เป็นไฟล์พิเศษที่มีหมายเลขหลักและรอง; คุณสามารถดูได้หากคุณls -l /devเป็นตัวเลขสองตัวที่ปรากฏแทนขนาดไฟล์ เคอร์เนลจับคู่ไฟล์พิเศษของอุปกรณ์กับไดรเวอร์โดยใช้หมายเลขเหล่านั้นดังนั้นคุณสามารถมีหลายไฟล์ซึ่งชี้ไปที่เคอร์เนลไดรเวอร์และอุปกรณ์เดียวกัน mknodแฟ้มพิเศษที่สร้างขึ้นโดยใช้
Stephen Kitt

โปรดทราบว่า/dev/tty*อุปกรณ์นี้เป็นอุปกรณ์ตัวอักษรและผู้บุกรุกเข้าถึงการอ่าน / เขียนแบบเต็มเพื่อการประชุมขั้วและ / หรือระบบคอนโซลรวมกับคุณสมบัติเหยียดหยามจำลอง terminal อาจช่วยให้ทุกชนิดของเทคนิคที่น่ารังเกียจ ...
Telcom

1
@TheQuark สวยมากใช่ เป็นเรื่องทั่วไปมากกว่าเล็กน้อย ฉันจะบอกว่า "ตีความ" หมายถึง "จัดการไฟล์อุปกรณ์เป็นโหนดอุปกรณ์ไม่ใช่ไฟล์ธรรมดา"
Stephen Kitt

1
@ n00b คุณไม่สามารถเมานusersdaต์ได้ แต่อย่างน้อยคุณสามารถใช้มันเพื่ออ่านจากดิสก์ที่อยู่ข้างใต้โดยไม่มีข้อ จำกัด และอาจเขียนลงไปได้เช่นกัน คุณสามารถคัดลอกเนื้อหาของดิสก์ทั้งหมดและเครื่องมือเช่นdebuge2fsเขียนทับ/etc/shadowและอื่น ๆได้อย่างง่ายดาย
Stephen Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.