Directory Traversal

Directory Traversal או Path Traversal (באנגלית: Directory Traversal, "מעבר בין סיפריות") היא התקפה נגד שרת או יישום אינטרנטי שמטרתה גישה לא מורשית אל מערכת הקבצים.

בהתקפה זו, מזהה התוקף אתרי אינטרנט המפנים לעמודים ולקבצים שונים ובודק את אימות הנתונים כאשר מזין קלט שונה.

במידה ומבוצע אימות, היישום אינו פגיע אך במידה ולא מבוצע אימות, הוא מוסיף פרמטרים נוספים (/..) המשנים את מבנה הנתיב וכך הוא יכול לעבור בין סיפריות שונות במערכת הקבצים ואף לחזור אל ספריית השורש ולטעון קבצים שאינו מורשה לצפות בהם.

שימוש
פונקציית ()include מייבאת את הקובץ הרצוי, במידה והוא קיים מציגה אותו למשתמש.

בעזרת חזרה על מספר תווים הנחשבים למסוכנים, ניתן לגשת אל סיפריות שונות במערכת הקבצים ואף לחזור אל ספריית השורש ולצפות בקבצים חסויים:
 /..
 \..
 ..

ניתן לקודד את התווים ובכך לחמוק מזיהוי של מערכות ההגנה השונות.

בדוגמה שלהלן, פגיעות ביישום הכתוב בשפת 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 
daemon:*:1:1::/tmp: 
phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/csh

הפגיעות בכתובת ה-URL:

בדוגמה שלהלן, מתרחשת טעינה של קובץ בשם page.html. במידה והמערכת אינה בודקת את הערך יוכל התוקף לשנות את הערך לביטוי אחר כרצונו.
http://www.example.com/index.foo?item=page.html

בהתאם לסוג מערכת ההפעלה ובעזרת ניסוי וטעייה, יחזור התוקף אל סיפריות האב ויחפש את הקבצים הנדרשים. 
http://www.example.com/index.foo?item=../../../Config.sys

במידה וגם השרת עצמו פגיע, ניתן לקרוא ליישומים הרצים עליו:
http://www.example.com/index.foo?item=../../../Windows/System32/cmd.exe?/C+dir+C:\

ראו גם
 CSRF
 XSS
 File Inclusion

קישורים חיצוניים

 מידע על המתקפה באתר Acunetix 

 מידע על המתקפה באתר OWASP 

 מידע על המתקפה באתר WhiteHat 

אבטחת מחשבים
האקינג