หากคุณมีรูทเชลล์ในเซสชันหน้าจอ (แยกออกหรือไม่ป้องกันด้วยรหัสผ่านหรือไม่) และscreen
ไฟล์ปฏิบัติการของคุณไม่ได้ตั้งค่าไว้ผู้โจมตีที่ได้รับสิทธิพิเศษของคุณจะสามารถเรียกใช้คำสั่งในเชลล์นั้นได้ หากไม่มีสิ่งอื่นใดพวกเขาสามารถทำได้โดยทำหน้าที่ประมวลผลหน้าจอ
หากหน้าจอเป็น setuid หรือ setgid และเซสชันถูกถอดออกและมีการป้องกันด้วยรหัสผ่านดังนั้นโดยหลักการแล้วจะใช้รหัสผ่านหน้าจอเพื่อเรียกใช้คำสั่งในเชลล์นั้น หากหลักการนี้ยังคงมีอยู่ใครบางคนที่เพียงแค่ทำลายบัญชีของคุณจะต้องใส่โทรจันในสถานที่และรอให้คุณพิมพ์รหัสผ่าน อย่างไรก็ตามพื้นผิวการโจมตี (เช่นจำนวนของสถานที่ที่สิ่งต่าง ๆ สามารถผิดพลาดได้เนื่องจากข้อผิดพลาดหรือการกำหนดค่าผิดพลาด) มีขนาดใหญ่อย่างไม่สบายใจ นอกจากคุณสมบัติความปลอดภัยของระบบพื้นฐานแล้วคุณยังไว้วางใจ:
- หน้าจอเพื่อรับการตรวจสอบรหัสผ่านที่ถูกต้อง
- เพื่อป้องกันการเข้าถึงเซสชันโดยวิธีการอื่น
- หน้าจอเพื่อใช้กลไกควบคุมการเข้าถึงระบบปฏิบัติการอย่างถูกต้อง (เช่นการอนุญาตบนไพพ์)
- เคอร์เนลเพื่อทำการตรวจสอบความปลอดภัยของ ptrace อย่างถูกต้อง (นี่เป็นแหล่งที่มาของช่องโหว่บ่อยครั้ง)
- เปลือกที่กำลังทำงานอยู่จะไม่ทำอะไรโง่ ๆ
- คุณสมบัติอื่นที่จะไม่กัดคุณ
“ ฟีเจอร์อื่นที่ไม่กัดคุณ”: ใช่มันคลุมเครือ แต่ความกังวลด้านความปลอดภัยอยู่เสมอ คุณอาจถูกล่อลวงให้ยกเลิกสิ่งนี้เป็นความคิดที่ปรารถนาธรรมดา ๆ แต่คุณคิดทุกอย่างจริงๆหรือ? ตัวอย่างเช่น…
ตราบใดที่คุณสามารถเขียนไปยังอุปกรณ์ปลายทางคุณสามารถฉีดข้อมูลลงในอินพุตของเชลล์นั้น ภายใต้การกำหนดค่าเริ่มต้นของหน้าจอบนเครื่องของฉัน:
printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33
ส่วนแทรกนี้␛]lfoobar␛l
ในสตรีมอินพุตของเชลล์ \ek
คือลำดับการควบคุมที่อนุญาตให้แอปพลิเคชั่น (หรือสิ่งใดก็ตามที่สามารถเขียนไปยังอุปกรณ์ปลายทาง) ตั้งชื่อหน้าต่าง (ดูที่ส่วน"หน้าต่างการตั้งชื่อ" ในคู่มือหน้าจอ ) และ\e[21t
ทำให้เทอร์มินัลรายงานชื่อเรื่องของอินพุตมาตรฐานของแอปพลิเคชัน หน้าจอไม่ได้เรียงลำดับนี้ แต่ใช้มันคุณสามารถค้นหามันได้CSI Ps ; Ps ; Ps ; t
ในรายการลำดับการควบคุม xtermอันที่จริงอย่างน้อยภายใต้หน้าจอ 4.0.3 ตัวควบคุมทั้งหมดจะถูกถอดออกจากชื่อรายงานดังนั้นเชลล์จึงอ่านlfoobar
(สมมติ␛]
ว่าไม่ได้ถูกผูกไว้กับคำสั่งแก้ไข) และไม่มีการขึ้นบรรทัดใหม่ดังนั้นผู้โจมตีจึงไม่สามารถเรียกใช้คำสั่งในลักษณะนั้นได้chmod u+s /bin/sh
ตามด้วยช่องว่างจำนวนมากและข้อความแจ้งเตือนที่น่าจะเป็นไปได้
หน้าจอใช้ลำดับการควบคุมที่มีความเสี่ยงอื่น ๆ ที่คล้ายกันหลายอย่างฉันไม่ทราบว่าช่องโหว่เหล่านั้นมีศักยภาพอย่างไร แต่หวังว่าในตอนนี้คุณจะเห็นได้ว่าการป้องกันด้วยรหัสผ่านเซสชันของหน้าจอนั้นยอดเยี่ยมมาก เครื่องมือรักษาความปลอดภัยโดยเฉพาะเช่น sudo มีโอกาสน้อยมากที่จะมีช่องโหว่
sudo
แต่ผมไม่คิดว่ามันจะทำให้ความแตกต่างระหว่างการทำเหมือนที่คุณพูดและออกจากงานเพื่อใด