xp_cmdshell - Who really am I ?
למה בעת שימוש ב xp_cmdshell למרות שהוגדר לו Proxy account הוא לא מקבל את ההרשאה של המשתמש שהגדרתי ב Proxy account ?
בעיה זו נפוצה יותר בעת פניה למשאבי רשת – שם אנו צריכים משתמש
מהדומיין וגם Admin מקומי לא יכול לסייע.
1.
ראשית
נסביר מה זה בכלל xp_cmdshell?
זו פרוצדורת מערכת המאפשרת לנו באמצעות קוד T-SQL להריץ פקודות על מערכת
ההפעלה ממש כאילו שאנחנו עובדים ב Command Prompt
כך נוכל תוך כדי הרצת פרוצדורה לבצע פעולות על מערכת ההפעלה המארחת
שלנו. לדוגמא אם אנחנו רוצים להכין תיקיה לקראת גיבוי שאנו רוצים לבצע אוטומאטית –
זו אחת הדרכים לייצר את התיקיה הנדרשת או אפילו להעתיק קובץ מהרשת או אל הרשת.
שימו לב שבגלל השלכות רבות הנוגעות לאבטחת מידע השימוש ב xp_cmdshell חסום כברירת מחדל ויש לבצע הפעלה שלו
באמצעות הקוד
sp_configure 'show advanced options',1
GO
reconfigure
GO
sp_configure 'xp_cmdshell',1
GO
reconfigure
GO
2.
באמצעות
איזו זהות אני מוכר במערכת ההפעלה?
למה בכלל השאלה הזו מעניינת?
נניח שאני עובד ב SQL SERVER and Windows Authentication mode והיום החלטתי לבצע Login לשרת ה SQL שלי באמצעות המשתמש SA.
כך אני יודע שאני מנהל בתוך שרת ה SQL שלי, אבל מה קורה כאשר
אני מנסה לגשת למערכת הקבצים של Windows? ב Windows אין משתמש כזה בשם SA !
לכן חייב להתבצע מיפוי בין המשתמש ב SQL לבין משתמש ב Windows – אחרת לא
יהיו לנו הרשאות לבצע את המשימה.
אפשר להגדיר את המשתמש שבאמצעותו נבצע את הזיהוי שלנו מול Windows אם ניכנס ל מאפיינים של שרת הSQL, בלשונית Security קיימת
הגדרה עבור Enable Server Proxy Account
3.
למה כאשר
SQL Server רץ עם משתמש Admin מקומי ונתתי Proxy Account מהדומיין עם הרשאות על
תיקיה ברשת אני עדיין לא מצליח להגיע אליה באמצעות xp_cmdshell ?
אם ה Login באמצעותו אני מזדהה מול SQL server שייך ל sysadmin או שיש לי הרשאת control server אזי מיפוי המשתמש לי יתבצע אוטומאטית מול ה Service Account.
שימו לב שזה יקרה גם אם קיים Proxy account.
רק אם אינני שייך ל sysadmin או שאין לי הרשאת control server רק אז יתבצע מיפוי את מול ה Proxy Account
.
שימו לב שאם אני שייך ל sysadmin אני לא יכול להשתמש ב Proxy account גם אם אני רוצה.
מקסימום אם אתם ממש חייבים תריצו
Execute as user = [other-non-admin-user]
Xp_cmdshell….
Revert
כדי להריץ את הפקודה תחת הרשאות של משתמש אחר שאיננו מנהל.
4.
איך בכל
זאת אני יכול לדעת כמו מי אני מזוהה מול מערכת ההפעלה ?
Xp_cmdshell ‘whoami’
הפקודה הזו מבקשת ממערכת ההפעלה את שם המשתמש שכרגע נמצא ב Logon.
שימו לב שגם את תריצו whoami בשורת הפקודה תקבלו את שם
המשתמש שלכם.