กลับไปหน้าบทความ

อ่าน 3 นาที

การโจมตีแบบ Directory traversal

การโจมตี แบบ Directory Traversal , Path Traversal หรือ Dot-dot-slash Attack ใช้ประโยชน์จาก ช่องโหว่ด้านความปลอดภัยที่ไม่เพียงพอในการตรวจสอบหรือการกรองชื่อไฟล์ที่ผู้ใช้ป้อน...

การโจมตีแบบ Directory traversal

การโจมตี แบบ Directory Traversal , Path TraversalหรือDot-dot-slash Attack ใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยที่ไม่เพียงพอในการตรวจสอบหรือการกรองชื่อไฟล์ที่ผู้ใช้ป้อน ทำให้ตัวอักษรที่แสดงถึง "การเข้าถึงไดเร็กทอรีแม่" ถูกส่งผ่านไปยังAPI ระบบไฟล์ของระบบปฏิบัติการแอปพลิเคชันที่ได้รับผลกระทบสามารถถูกใช้ประโยชน์เพื่อเข้าถึงระบบไฟล์ โดยไม่ได้รับอนุญาต ได้

ตัวอย่าง

ใน PHP

ตัวอย่างทั่วไปของแอปพลิเคชันที่มีช่องโหว่ในโค้ด PHP ได้แก่:

<?php $template = "red.php" ; if ( isset ( $_COOKIE [ "TEMPLATE" ])) { $template = $_COOKIE [ "TEMPLATE" ]; } include "/home/users/phpguru/templates/" . $template ;

การโจมตีระบบนี้อาจเกิดขึ้นได้จากการส่งคำขอ HTTP ดังต่อไปนี้:

GET /vulnerable.php HTTP / 1.0 Cookie : TEMPLATE=../../../../../../../../../etc/passwd

จากนั้นเซิร์ฟเวอร์จะสร้างการตอบกลับดังนี้:

HTTP / 1.0 200 OK Content-Type : text/html Server : Apache root:fi3sED95ibqR6:0:1:System Operator:/:/bin/ksh เดมอน:*:1:1::/tmp: phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/csh 

อักขระ ที่ซ้ำกัน../หลังจากนั้น/home/users/phpguru/templates/ทำให้ include()เข้าถึงไดเร็กทอรีรากและจากนั้นรวมไฟล์รหัสผ่าน Unix เข้าไป/etc/passwdด้วย

ไฟล์ Unix /etc/passwdเป็นไฟล์ที่ใช้กันทั่วไปในการสาธิตการโจมตีแบบ Directory Traversal เนื่องจากแฮชของแฮชเชอร์ มักใช้ไฟล์นี้ เพื่อพยายาม ถอดรหัส ผ่านอย่างไรก็ตาม ในระบบ Unix รุ่นใหม่ๆ/etc/passwdไฟล์นี้ไม่ได้เก็บรหัสผ่านที่ถูกเข้ารหัสไว้ แต่จะเก็บไว้ใน/etc/shadowไฟล์อื่นที่ผู้ใช้ที่ไม่มีสิทธิ์เข้าถึงไม่สามารถอ่านได้ แม้ในกรณีนั้น การอ่านไฟล์ดังกล่าว/etc/passwdก็ยังแสดงรายการบัญชีผู้ใช้ ซึ่งอาจกลายเป็นจุดเริ่มต้นสำหรับการโจมตีเพิ่มเติมได้

ช่องโหว่ Zip Slip

อีกตัวอย่างหนึ่งคือช่องโหว่ "Zip Slip" ที่ส่งผลกระทบต่อรูปแบบไฟล์เก็บถาวร หลาย รูป แบบ เช่นZIP [ 1 ]

การเปลี่ยนแปลง

การท่องไปในโครงสร้างไดเร็กทอรีในรูปแบบที่ง่ายที่สุดจะใช้../รูปแบบดังกล่าว ตัวอย่างรูปแบบที่พบได้ทั่วไปมีดังต่อไปนี้:

ไมโครซอฟต์ วินโดวส์

การเข้าถึงไดเร็กทอรี ของ Microsoft WindowsและDOSใช้รูปแบบ..\or [ 2 ]../

แต่ละพาร์ติชันจะมีไดเร็กทอรีรากแยกต่างหาก (โดยระบุชื่อC:\พาร์ติชันที่ C อาจเป็นพาร์ติชันใดก็ได้) และไม่มีไดเร็กทอรีรากทั่วไปอยู่เหนือพาร์ติชันนั้น ซึ่งหมายความว่าสำหรับช่องโหว่ด้านไดเร็กทอรีส่วนใหญ่ใน Windows การโจมตีจะจำกัดอยู่เพียงพาร์ติชันเดียว

การเข้าถึงไดเร็กทอรีเป็นสาเหตุของช่องโหว่ของ Microsoft จำนวนมาก[ 3 ] [ 4 ]

เปอร์เซ็นต์การเข้ารหัสใน URI

แอปพลิเคชันเว็บบางตัวพยายามป้องกันการเข้าถึงไดเร็กทอรีโดยการสแกนเส้นทางของURI คำขอ เพื่อหารูปแบบต่างๆ เช่น../การตรวจสอบนี้บางครั้งดำเนินการผิดพลาดก่อนการถอดรหัสเปอร์เซ็นต์ทำให้ URI ที่มีรูปแบบเช่น%2e%2e/ได้รับการยอมรับแม้ว่าจะถูกถอดรหัสเป็น../ก่อนการใช้งานจริงก็ตาม[ 5 ]

การเข้ารหัสสองชั้น

การถอดรหัสเปอร์เซ็นต์อาจเกิดขึ้นโดยไม่ได้ตั้งใจหลายครั้ง ครั้งหนึ่งก่อนการตรวจสอบความถูกต้อง แต่อีกครั้งหลังจากนั้น ทำให้แอปพลิเคชันมีความเสี่ยงต่อการโจมตีการเข้ารหัสเปอร์เซ็นต์สองเท่า[ 6 ]ซึ่งอักขระที่ไม่ถูกต้องจะถูกแทนที่ด้วยรูปแบบที่เข้ารหัสเปอร์เซ็นต์สองเท่าเพื่อหลีกเลี่ยงมาตรการรักษาความปลอดภัย[ 7 ]ตัวอย่างเช่น ในการโจมตีการเข้ารหัสเปอร์เซ็นต์สองเท่า อาจถูกแทนที่ด้วยรูปแบบ ที่../เข้ารหัสเปอร์เซ็นต์สองเท่า[ 8 ]ช่องโหว่ประเภทนี้ส่งผลกระทบอย่างมากต่อซอฟต์แวร์เว็บเซิร์ฟเวอร์IISของMicrosoft เวอร์ชัน 5.0 และก่อนหน้า [ 9 ]%252E%252E%252F

ยูทีเอฟ-8

ตัวถอดรหัส UTF-8ที่ใช้งานไม่ดีอาจยอมรับอักขระที่เข้ารหัสโดยใช้ไบต์มากกว่าที่จำเป็น ทำให้เกิดการเข้ารหัสที่ยาวเกินไปเช่น%c0%aeแทนที่จะใช้%2eเพื่อแสดง.สิ่งนี้ถูกห้ามโดยเฉพาะตามมาตรฐาน UTF-8 [ 10 ]แต่ก็ยังนำไปสู่ช่องโหว่การเข้าถึงไดเร็กทอรีในซอฟต์แวร์ เช่นเว็บเซิร์ฟเวอร์IIS [ 11 ]

หอจดหมายเหตุ

รูปแบบไฟล์บีบอัดบางประเภทเช่นzipอนุญาตให้มีการโจมตีแบบเจาะระบบไดเร็กทอรีได้: ไฟล์ในไฟล์บีบอัดสามารถเขียนทับไฟล์บนระบบไฟล์ได้โดยการย้อนกลับ การเขียนโค้ดเพื่อแตกไฟล์บีบอัดสามารถตรวจสอบได้ว่าเส้นทางของไฟล์ในไฟล์บีบอัดนั้นไม่ได้เกี่ยวข้องกับการโจมตีแบบเจาะระบบเส้นทาง

การป้องกัน

อัลกอริทึมที่เป็นไปได้สำหรับการป้องกันการเข้าถึงไดเร็กทอรีโดยไม่ได้รับอนุญาตคือ:

  1. ดำเนินการกับคำขอ URI ที่ไม่ส่งผลให้เกิดคำขอไฟล์ เช่น การเรียกใช้ hook ในโค้ดของผู้ใช้ ก่อนที่จะดำเนินการต่อในขั้นตอนถัดไป
  2. เมื่อมีการร้องขอ URI สำหรับไฟล์/ไดเร็กทอรี ให้สร้างเส้นทางแบบเต็มไปยังไฟล์/ไดเร็กทอรีหากมีอยู่ และแปลงอักขระทั้งหมดให้เป็นมาตรฐาน (เช่น%20แปลงเป็นช่องว่าง)
  3. ถือว่าทราบพาธแบบเต็มรูปแบบของ 'Document Root' แล้ว และสตริงนี้มีความยาวNและถือว่าไม่สามารถให้บริการไฟล์ใดๆ ที่อยู่นอกไดเร็กทอรีนี้ได้
  4. โปรดตรวจสอบให้แน่ใจว่าอักขระ N ตัว แรกของเส้นทางแบบเต็มไปยังไฟล์ที่ร้องขอตรงกับ 'Document Root' ทุกประการ
  5. ถ้าเป็นเช่นนั้น โปรดอนุญาตให้ส่งไฟล์คืน
  6. หากไม่เป็นเช่นนั้น ให้ส่งคืนข้อผิดพลาด เนื่องจากคำขออยู่นอกขอบเขตที่เว็บเซิร์ฟเวอร์ควรอนุญาตให้ให้บริการอย่างชัดเจน

การใช้ส่วนขยายไฟล์ที่กำหนดไว้ล่วงหน้าเพื่อต่อท้ายเส้นทางไม่ได้หมายความว่าจะจำกัดขอบเขตของการโจมตีให้เฉพาะไฟล์ที่มีส่วนขยายนั้นเท่านั้น

<?php include $_GET [ "file" ] . ".html" ;

ผู้ใช้สามารถใช้ตัวอักษร NULL (ซึ่งบ่งบอกถึงจุดสิ้นสุดของสตริง) เพื่อข้ามทุกอย่างที่อยู่หลังจุด$_GET(นี่เป็นคุณสมบัติเฉพาะของ PHP)

ดูเพิ่มเติม

ทรัพยากร

  • โครงการรักษาความปลอดภัยแอปพลิเคชันเว็บแบบเปิด
  • การจำแนกประเภทภัยคุกคาม WASC – การทะลุผ่านเส้นทาง
  • การใช้ประโยชน์และการแก้ไขช่องโหว่การเข้าถึงเส้นทาง
  • CWE Common Weakness Enumeration - Path Traversal
  • DotDotPwn – Fuzzer Traversal ไดเรกทอรี
  • ถูกตัดสินว่ามีความผิดฐานใช้เทคนิคการเข้าถึงข้อมูลแบบเจาะระบบ (directory traversal)
  • "มีแต่คนชั่วเท่านั้นที่ได้ประโยชน์จากกฎหมายที่เลวร้าย" comment.zdnet.co.uk 7ตุลาคม 2548 เก็บถาวรจากต้นฉบับเมื่อ 8 ตุลาคม 2549
  • Bugtraq: การเรียกใช้คำสั่งระยะไกล IIS %c1%1c
  • จดหมายข่าวการเข้ารหัสลับ เดือนกรกฎาคม 2544
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Directory_traversal_attack&oldid=1336255515 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การโจมตีแบบ Directory traversal

การโจมตี แบบ Directory Traversal , Path Traversal หรือ Dot-dot-slash Attack ใช้ประโยชน์จาก ช่องโหว่ด้านความปลอดภัยที่ไม่เพียงพอในการตรวจสอบหรือการกรองชื่อไฟล์ที่ผู้ใช้ป้อน...

ใน PHP

ตัวอย่างทั่วไปของแอปพลิเคชันที่มีช่องโหว่ในโค้ด PHP ได้แก่:

ช่องโหว่ Zip Slip

อีกตัวอย่างหนึ่งคือช่องโหว่ "Zip Slip" ที่ส่งผลกระทบต่อ รูปแบบไฟล์เก็บถาวร หลาย รูป แบบ เช่น ZIP [ 1 ]

การเปลี่ยนแปลง

การท่องไปในโครงสร้างไดเร็กทอรีในรูปแบบที่ง่ายที่สุดจะใช้ ../ รูปแบบดังกล่าว ตัวอย่างรูปแบบที่พบได้ทั่วไปมีดังต่อไปนี้: