פגיעת האבטחה היא מסוג sql injection.
מה שאומר, שעקב כתיבה לא זהירה של המערכת, אחד הסקריפטים לא בודק את הקלט מהמשתמש,
לפני שהוא משתמש בו מול מסד הנתונים שהמערכת עובדת מולו.
הזרקה נכונה של פקודות שיצרו שאילתה לאותו מסד נתונים, תאפשר גילוי של שם המשתמש והסיסמא של האדמין.
תיקון של באג זה, מתאפשר על ידי בדיקה וסינון של קלט מהמשתמש, כגון:union, select, from , או אפילו תווים כגון: , ’ ,", וכ’ו ).
פרטים טכניים:
הסקריפט template_gallery_detail.asp, לא בודק את הערכים שהמשתמש מספק לו במשתנה id.
ולכן, כל מה שנכניס לערך id לא יבדק על ידי התוכנית ויכנס לתוך מבנה שאילתה מול המסד נתונים.
המבנה של ההזרקה:
ציטוט:
http://[the site]/[the Directory of the blog]/template_gallery_detail.asp?fldGalleryID=[sql injection]
דוגמא לניצול המבנה בכדי להוציא שם משתמש של האדמין ואת סיסמתו:
ציטוט:
http://[site]/bpdir/template_gallery_detail.asp?fldGalleryID=-1+UNION+SE
,LECT+null,fldAuthorUsername
fldAuthorPassword,null,null+FROM+tblAuthor+where+fldAuthorId=1
כמו שאנחנו רואים, הזרקנו שאילתה שמבקשת לדעת מה מכילה העמודה fldAuthorUsername,
שאחראית על שם המשתמש של מפרסם המאמר.
ומהעמודה fldAuthorPassword,
שאחראית על שמירת הסיסמה של מפרסם מאמר.
איפה שהמזהה של המפרסם שווה ל-1.
(המזהה של המשתמשים בטבלה שלנו הוא נשמר בעמודה fldAuthorId)
.עכשיו כידוע המזהה עולה עם כל הרשמה של משתמש באחד
.ואם נרשמתי היום, אז לדוגמא אם קיבלתי מזהה 345
אז זה שירשם אחרי מין הסתם יהיה עם מזהה 346
.אז למי יש את המזהה 1? אכן כן כמו שניחשתם, לבעל הפורום שהוא הרשום הראשון
ואם השאילתה תגלה מה הסיסמה והשם משתמש של האיש עם המזהה 1 (המנהל)א,
אז למעשה פרצנו, ונוכל להתחבר עם אותו שם משתמש והסיסמה שנקבל,
main.asp לסקריפט
וניהיה המנהלים של הבלוג.
החור נתגלה בתאריך 18/03/2006
ופורסם באותו יום, בצמוד להודעה לאתר המערכת.
תיקון מהמפיץ עדיין לא נתקבל.
הקרדיט למגלה החור, ניתן לכתובת הדוא"ל nukedx@nukedx.com
.הגירסאות הפגיעות: 6.0 החדשה ביותר, ומטה
[ההודעה נערכה על-ידי antivirus ב-19/03/2006 02:09:19]