ช่องโหว่อื่นใน Apache httpd ที่อนุญาตให้เข้าถึงภายนอกไดเร็กทอรีรากของไซต์

พบเวกเตอร์การโจมตีใหม่สำหรับเซิร์ฟเวอร์ Apache http ซึ่งยังคงไม่ได้รับการแก้ไขในการอัปเดต 2.4.50 และอนุญาตให้เข้าถึงไฟล์จากพื้นที่นอกไดเรกทอรีรากของไซต์ นอกจากนี้ นักวิจัยยังพบวิธีการที่ช่วยให้ไม่เพียงแต่สามารถอ่านไฟล์ระบบเท่านั้น แต่ยังช่วยให้สามารถรันโค้ดจากระยะไกลบนเซิร์ฟเวอร์ได้อีกด้วย ปัญหาปรากฏในรุ่น 2.4.49 และ 2.4.50 เท่านั้น เวอร์ชันก่อนหน้าจะไม่ได้รับผลกระทบ เพื่อกำจัดช่องโหว่ใหม่ Apache httpd 2.4.51 ได้รับการเผยแพร่อย่างรวดเร็ว

โดยแก่นแท้แล้ว ปัญหาใหม่ (CVE-2021-42013) นั้นคล้ายคลึงกับช่องโหว่เดิมอย่างสิ้นเชิง (CVE-2021-41773) ใน 2.4.49 ข้อแตกต่างเพียงอย่างเดียวคือการเข้ารหัสอักขระ “..” ที่แตกต่างกัน โดยเฉพาะอย่างยิ่ง ในรุ่น 2.4.50 ความสามารถในการใช้ลำดับ "%2e" เพื่อเข้ารหัสจุดถูกบล็อก แต่ความเป็นไปได้ของการเข้ารหัสซ้ำพลาดไป - เมื่อระบุลำดับ "%%32%65" เซิร์ฟเวอร์จะถอดรหัส ลงใน "%2e" จากนั้นจึงเข้าสู่ " ” เช่น อักขระ "../" เพื่อไปยังไดเร็กทอรีก่อนหน้าสามารถเข้ารหัสเป็น ".%%32%65/"

สำหรับการใช้ประโยชน์จากช่องโหว่ผ่านการเรียกใช้โค้ด สิ่งนี้เป็นไปได้เมื่อเปิดใช้งาน mod_cgi และใช้พาธพื้นฐานซึ่งอนุญาตให้เรียกใช้สคริปต์ CGI ได้ (ตัวอย่างเช่น หากเปิดใช้งานคำสั่ง ScriptAlias ​​หรือมีการระบุแฟล็ก ExecCGI ใน คำสั่งตัวเลือก) ข้อกำหนดบังคับสำหรับการโจมตีที่ประสบความสำเร็จคือการให้การเข้าถึงไดเร็กทอรีที่มีไฟล์ปฏิบัติการ เช่น /bin หรือการเข้าถึงรูทของระบบไฟล์ “/” ในการตั้งค่า Apache อย่างชัดเจน เนื่องจากโดยปกติแล้วจะไม่ได้รับอนุญาตให้เข้าถึง การโจมตีแบบเรียกใช้โค้ดจึงแทบไม่มีการประยุกต์ใช้กับระบบจริงเลย

ในขณะเดียวกัน การโจมตีเพื่อรับเนื้อหาของไฟล์ระบบที่กำหนดเองและข้อความต้นฉบับของสคริปต์เว็บ ซึ่งผู้ใช้ที่เซิร์ฟเวอร์ http ใช้งานอยู่สามารถอ่านได้ ยังคงมีความเกี่ยวข้อง ในการโจมตีดังกล่าว ก็เพียงพอแล้วที่จะมีไดเร็กทอรีบนไซต์ที่กำหนดค่าโดยใช้คำสั่ง "Alias" หรือ "ScriptAlias" (DocumentRoot ยังไม่เพียงพอ) เช่น "cgi-bin"

ตัวอย่างการหาประโยชน์ที่อนุญาตให้คุณเรียกใช้งานยูทิลิตี้ “id” บนเซิร์ฟเวอร์: curl 'http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%% 32%65/.%% 32%65/.%%32%65/bin/sh' —data 'echo Content-Type: ข้อความ/ธรรมดา; เสียงสะท้อน; id' uid=1(ภูต) gid=1(ภูต) กลุ่ม=1(ภูต)

ตัวอย่างการหาประโยชน์ที่อนุญาตให้คุณแสดงเนื้อหาของ /etc/passwd และหนึ่งในสคริปต์ของเว็บ (ในการส่งออกโค้ดสคริปต์ จะต้องระบุไดเร็กทอรีที่กำหนดผ่านคำสั่ง "Alias" ซึ่งไม่ได้เปิดใช้งานการเรียกใช้สคริปต์ จะต้องระบุ เป็นไดเรกทอรีฐาน): curl 'http://192.168.0.1 .32/cgi-bin/.%%65%32/.%%65%32/.%%65%32/.%%65%32/.% %65%192.168.0.1/etc/passwd' ขด 'http: //32/aliaseddir/.%%65%32/.%%65%32/.%%65%32/.%%65%32/. %%65%2/usr/local/apacheXNUMX/cgi -bin/test.cgi'

ปัญหาส่วนใหญ่ส่งผลกระทบต่อการแจกแจงที่อัปเดตอย่างต่อเนื่อง เช่น Fedora, Arch Linux และ Gentoo รวมถึงพอร์ตของ FreeBSD แพ็คเกจในสาขาที่เสถียรของการกระจายเซิร์ฟเวอร์แบบอนุรักษ์นิยม Debian, RHEL, Ubuntu และ SUSE จะไม่ได้รับผลกระทบจากช่องโหว่ ปัญหาจะไม่เกิดขึ้นหากการเข้าถึงไดเรกทอรีถูกปฏิเสธอย่างชัดเจนโดยใช้การตั้งค่า "ต้องปฏิเสธทั้งหมด"

ที่มา: opennet.ru

เพิ่มความคิดเห็น