Restricted Shell คืออะไร และเหตุใดการโจมตีแบบ Jumping Shell จึงมีความสำคัญ
เชลล์แบบจำกัดสิทธิ์ใช้เพื่อควบคุมคำสั่งที่ผู้ใช้สามารถเรียกใช้ได้ ซึ่งมักจะป้องกันการกระทำต่างๆ เช่น cdเช่น การเปิดใช้งานเชลล์ใหม่ หรือการส่งออกตัวแปรสภาพแวดล้อม โดยทั่วไปแล้วจะถูกนำไปใช้งานใน CI/CD ตัวแทนหรือสร้างสภาพแวดล้อมเพื่อจำกัดพฤติกรรมของผู้ใช้ อย่างไรก็ตาม ผู้โจมตีมองหาวิธีการสร้าง jumping shell ซึ่งเป็นวิธีการที่ใช้ในการหลุดพ้นจากสภาพแวดล้อม shell ที่ถูกจำกัด และเข้าถึง shell ที่ไม่จำกัด เช่น ถัง / ทุบตีเมื่อเข้าไปข้างในแล้ว itผู้โจมตีสามารถควบคุมผ่านบรรทัดคำสั่งได้อย่างเต็มที่ โดยหลีกเลี่ยงข้อจำกัดทั้งหมดของสภาพแวดล้อมที่ถูกจำกัดไว้
วิธีใช้งาน Jumping Shell: จากโหมดจำกัดสิทธิ์ไปจนถึงโหมด bin/bash
เป้าหมายของ jumping shell คือการใช้ประโยชน์จากจุดอ่อนในสภาพแวดล้อมที่จำกัด และกระตุ้นให้ shell หลุดออกจากพื้นที่ ซึ่งจะนำไปสู่... ถัง / ทุบตีเทคนิคทั่วไปในการหลบหนีการโจมตีแบบจำกัดขอบเขต ได้แก่:
$ ls /bin/bash $ /bin/bashIf ถัง / ทุบตี สามารถเข้าถึงได้ การเรียกใช้งานอย่างง่ายนี้ก็ทำให้เสร็จสมบูรณ์แล้ว
อีกวิธีที่นิยมใช้:
$ echo "/bin/bash" > run.sh $ sh run.sh ผู้โจมตีอาจใช้ช่องโหว่ของโปรแกรมแก้ไขข้อความ เช่น vi or น้อยลง:
vi :set shell=/bin/bash :shell วิธีการเหล่านี้แสดงให้เห็นว่ากระสุนกระโดดสามารถนำไปสู่สิ่งต่างๆ ได้ง่ายเพียงใด ถัง / ทุบตี การดำเนินการนี้เป็นการหลีกเลี่ยงระบบป้องกันเชลล์ที่มีข้อจำกัดได้อย่างมีประสิทธิภาพ
ความเสี่ยงที่แท้จริงของการโจมตีเหล่านี้ใน DevOps
ในการแบ่งปัน CI/CD ในสภาพแวดล้อมต่างๆ เชลล์ที่จำกัดจะถูกใช้เพื่อแยกการสร้างและลดความเสี่ยง แต่เมื่อผู้โจมตีประสบความสำเร็จในการใช้ jumping shell และเข้าถึงได้ ถัง / ทุบตีรูปแบบการรักษาความปลอดภัยจึงล่มสลาย
ความเสี่ยงรวมถึง:
- การเข้าถึงข้อมูลลับของสภาพแวดล้อมโดยไม่ได้รับอนุญาต
- การยกระดับสิทธิ์ผ่านทางการเข้าถึงแบบไม่จำกัด ถัง / ทุบตี
- การแก้ไขดัดแปลงโครงสร้าง pipelineหรือสิ่งประดิษฐ์
- การใช้งานเครื่องมือแบบถาวรภายใน pipeline
เปลือกหุ้มที่จำกัดการหลบหนีไปยัง ถัง / ทุบตี เปิดประตูสู่การเจาะระบบอย่างสมบูรณ์ ซึ่งมักเป็นขั้นตอนแรกในแผนการที่กว้างขวางกว่า การโจมตี DevSecOps.
การตรวจสอบและตรวจจับ Jumping Shell และ bin/bash Escapes
ในการตรวจจับพฤติกรรมการกระโดดเข้าสู่เชลล์ และบล็อกความพยายามในการเข้าสู่เชลล์ที่ถูกจำกัดการเข้าถึง ทีมรักษาความปลอดภัยต้องดำเนินการดังต่อไปนี้:
- บันทึกกิจกรรมทั้งหมดของเชลล์ โดยเฉพาะ... / bin / bash การปฏิบัติ
- ตรวจสอบการใช้โปรแกรมแก้ไขข้อความในทางที่ผิดและการใช้สคริปต์เป็นช่องทางในการเรียกใช้เชลล์
- ติดตามการเข้าถึงไฟล์การกำหนดค่าเชลล์ เช่น .bashrc or .bash_profile
รูปแบบพฤติกรรม เช่น การเปิดตัว ถัง / ทุบตี การตรวจจับจากสภาพแวดล้อมที่จำกัดควรได้รับการพิจารณาว่าเป็นสัญญาณเตือนที่มีความสำคัญสูง การตรวจพบตั้งแต่เนิ่นๆ สามารถป้องกันการเคลื่อนตัวในแนวด้านข้างที่รุนแรงขึ้นได้
การป้องกันการโจมตีและการใช้ช่องโหว่ของ Escape Restricted Shell
เพื่อลดความเสี่ยงจากการโจมตีแบบ Jumping Shell และป้องกันไม่ให้ผู้โจมตีทำการโจมตี ถัง / ทุบตี:
- เสริมความแข็งแกร่งให้กับเปลือกหุ้มที่ถูกจำกัด: ถอดหรือปิดกั้น เข้า
- ใช้ AppArmor หรือ SELinux เพื่อจำกัดการเรียกใช้คำสั่ง
- บังคับใช้หลักสิทธิพิเศษขั้นต่ำสุดในทุกด้าน CI/CD บทบาทและนักวิ่ง
- Containerize สร้างอิมเมจด้วยดิสโทรเลสที่ไม่มีเชลล์ เช่น ถัง / ทุบตี
- ตรวจสอบสภาพแวดล้อมก่อนและหลังการสร้างเพื่อตรวจจับความผิดปกติ
การป้องกันการหลบหนีจากสถานการณ์ที่มีข้อจำกัดของเชลล์นั้น จำเป็นต้องมีการควบคุมหลายชั้น ไม่ใช่แค่การพึ่งพาเชลล์ที่มีข้อจำกัดเพียงอย่างเดียว อย่าคิดว่าเชลล์ที่มีข้อจำกัดนั้นปลอดภัยเสมอไป ถัง / ทุบตี เป็นไปได้ที่จะบรรลุเป้าหมายนั้นด้วยซ้ำ
สรุป: ทางออกของกระสุนปืนเป็นจุดเข้า
กระสุนจำกัดเป็นเพียงชั้นป้องกัน ไม่ใช่การรับประกัน การโจมตีด้วยกระสุนกระโดดมุ่งเป้าไปที่การแยกส่วนที่อ่อนแอและการตรวจสอบที่ไม่ดี เมื่อเข้าไปข้างในได้แล้ว / bin / bashผู้โจมตีสามารถเปลี่ยนกลยุทธ์ รุกคืบ และบุกรุกโครงสร้างพื้นฐาน DevSecOps ได้
การตรวจจับและการแยกตัวเป็นสิ่งสำคัญ การผสมผสานการบันทึกคำสั่ง สภาพแวดล้อมที่จำกัด และการล้างข้อมูลในโปรแกรมจัดการแพ็กเกจอย่างเหมาะสม จะช่วยลดความเสี่ยงลงได้
สุดท้ายนี้ เครื่องมือต่างๆ เช่น ไซเกนี ช่วยให้มองเห็นความเสี่ยงเหล่านี้ได้ชัดเจนยิ่งขึ้น ช่วยบังคับใช้ความถูกต้องของโค้ด ตรวจจับพฤติกรรมที่ผิดปกติของเชลล์ และ รักษาความปลอดภัยของคุณ pipelineจากภัยคุกคามทั้งภายในและภายนอกรวมถึงพวกที่เริ่มต้นด้วยเปลือกหอยกระโดดแบบง่ายๆ ด้วย / bin / bash หรือความพยายามที่จะหลุดพ้นจากสภาพแวดล้อมเชลล์ที่ถูกจำกัด






