ช่องโหว่ใน telnetd อนุญาตให้เชื่อมต่อผ่าน root โดยไม่ต้องมีการตรวจสอบสิทธิ์

พบช่องโหว่ในเซิร์ฟเวอร์ telnetd จากชุดซอฟต์แวร์ GNU InetUtils ช่องโหว่นี้อนุญาตให้เชื่อมต่อในฐานะผู้ใช้ใดๆ ก็ได้ รวมถึง root โดยไม่ต้องยืนยันรหัสผ่าน ยังไม่มีการกำหนดหมายเลข CVE ช่องโหว่นี้มีมาตั้งแต่ InetUtils เวอร์ชัน 1.9.3 (2015) และยังไม่ได้รับการแก้ไขในเวอร์ชันปัจจุบัน 2.7.0 การแก้ไขมีอยู่ในแพทช์ (1, 2)

ปัญหาเกิดจากข้อเท็จจริงที่ว่า ในการตรวจสอบรหัสผ่าน กระบวนการ telnetd จะเรียกใช้ยูทิลิตี้ "/usr/bin/login" โดยส่งชื่อผู้ใช้ที่ไคลเอ็นต์ระบุเมื่อเชื่อมต่อเป็นอาร์กิวเมนต์ เซิร์ฟเวอร์โปรแกรม "ล็อกอิน" รองรับตัวเลือก "-f" ซึ่งอนุญาตให้ล็อกอินโดยไม่ต้องยืนยันตัวตน (ตัวเลือกนี้มีไว้สำหรับใช้เมื่อผู้ใช้ได้รับการยืนยันตัวตนแล้ว) ดังนั้น การแทนที่ตัวเลือก "-f" ลงในชื่อผู้ใช้ จะช่วยให้คุณเชื่อมต่อได้โดยไม่ต้องยืนยันรหัสผ่าน

ในการเชื่อมต่อแบบปกติ คุณไม่สามารถใช้ชื่อผู้ใช้เช่น "-f root" ได้ แต่ Telnet มีโหมดการเชื่อมต่ออัตโนมัติที่เปิดใช้งานโดยตัวเลือก "-a" ในโหมดนี้ ชื่อผู้ใช้จะไม่ถูกดึงมาจากบรรทัดคำสั่ง แต่จะถูกส่งผ่านตัวแปรสภาพแวดล้อม USER เมื่อเรียกใช้ยูทิลิตี้การเข้าสู่ระบบ ค่าของตัวแปรสภาพแวดล้อมนี้จะถูกแทนที่โดยไม่มีการตรวจสอบเพิ่มเติมและไม่มีการหลีกเลี่ยงอักขระพิเศษ ดังนั้น ในการเชื่อมต่อในฐานะผู้ใช้ root เพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อม USER เป็น "-f root" และเชื่อมต่อกับเซิร์ฟเวอร์ Telnet โดยใช้ตัวเลือก "-a": $ USER='-f root' telnet -a server_name

การเปลี่ยนแปลงที่ทำให้เกิดช่องโหว่นี้ถูกเพิ่มเข้าไปในโค้ด telnetd ในเดือนมีนาคม 2015 และแก้ไขปัญหาที่ป้องกันไม่ให้ระบบตรวจสอบชื่อผู้ใช้ในโหมดล็อกอินอัตโนมัติโดยไม่ต้องใช้การตรวจสอบสิทธิ์ Kerberos โดยวิธีการแก้ไขคือ เพิ่มการรองรับการส่งชื่อผู้ใช้ในโหมดล็อกอินอัตโนมัติผ่านตัวแปรสภาพแวดล้อม แต่ลืมตรวจสอบความถูกต้องของชื่อผู้ใช้จากตัวแปรสภาพแวดล้อมไป

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster