LDAP یا Lightweight Directory Access Protocol یک پروتکل نرم افزاری رایج است که برای فعال کردن دسترسی هر کس در یک شبکه برای پیدا منابعی مانند سایر افراد ، پرونده ها و دستگاه ها استفاده می شود. خدمات دایرکتوری مانند LDAP برای اینترانت مفید است. همچنین می توان از آن برای ذخیره نام کاربری و کلمه عبور به عنوان بخشی از سیستم ورود به سیستم (SSO) استفاده کرد. در ادامه با ما در شتابان هاست همراه باشید تا با تزریق LDAP یا حملات LDAP بیشتر آشنا شویم.
تزریق LDAP یا حملات LDAP یک آسیب پذیری است که در آن نمایش داده ها از ورودی غیرقابل اعتماد بدون اعتبار سنجی قبلی ساخته می شود. LDAP از پرس و جوهای ساخته شده از محمولات استفاده می کند که شامل استفاده از کاراکترهای خاص (به عنوان مثال ، براکت ها ، ستاره ها ، آمپرها یا نقل قول ها) است. خصوصیات متاگاری مانند اینها معنی پرس و جو را کنترل می کند. از این طریق ، بر نوع و تعداد اشیاء بازیابی شده از فهرست زیر تأثیر می گذارد. اگر یک مهاجم بتواند ورودی حاوی این شخصیت های کنترل را ارسال کند ، می تواند پرس و جو را تغییر داده و رفتار مورد نظر را تغییر دهد.
معماری برنامه ای که از LDAP پشتیبانی می کند شامل هر دو مؤلفه سمت سرور و مشتری است. پرس و جوهای LDAP ارسال شده به سرور به عنوان فیلترهای جستجوی LDAP شناخته می شوند که با استفاده از نماد پیشوند ساخته می شوند. در زیر مثالی از فیلتر جستجوی LDAP آورده شده است:
find(“(&(cn=” + username +”)(userPassword=” + pass +”))”)
این یادداشت فیلتر پیشوند به پرس و جو دستور می دهد گره LDAP را با نام کاربری و رمزعبور داده شده پیدا کند. سناریویی را در نظر بگیرید که با اضافه کردن نام کاربری و رشته های رمز عبور به دست آمده از فرم HTML ، این پرس و جو ساخته می شود. اگر این مقادیر کنترل شده کاربر بدون هیچ گونه اعتبار سنجی به فیلتر جستجوی LDAP اضافه شوند ، یک نام کاربری و رمزعبور از ‘* ‘معنی مورد نظر پرس و جو را تغییر می دهد و لیستی از همه کاربران را برمی گرداند.
شخصیت های خاص به غیر از ‘* همچنین می توانند نمایش داده های مخرب ایجاد کنند. اگر مقدار نام کاربری روی ‘*) (cn = *)) (| (cn = *” تنظیم شود ، فیلتر جستجوی مؤثر تبدیل می شود:
find(“(&(cn=*)(cn=*))(|(cn=*)(userPassword=” + pass +”))”)
شرط برجسته شده در سؤال فوق همیشه درست را ارزیابی می کند. اگر از این پرس و جو در یک جریان تأیید اعتبار استفاده شود ، یک مهاجم می تواند به راحتی از طریق بارگذاری بالا ، کنترل احراز هویت را دور بزند.
تعداد زیادی از سوء استفاده از تزریق LDAP وجود دارد که می تواند در مقابل سرور آسیب پذیر اجرا شود. علاوه بر این ، سرورهای LDAP اغلب اطلاعاتی از قبیل کاربران ، نقش ها ، مجوزها و اشیاء مرتبط را برای آنها فراهم می کنند که در صورت به خطر انداختن می توانند ویران کننده باشند.
حملات تزریق LDAP در درجه اول به دلیل اعتبار ورودی ضعیف یا ضعیف رخ می دهد. اعتبار سنجی شامل رد ورودی نادرست یا از بین بردن شخصیت های کنترل LDAP مخرب قبل از وارد کردن ورودی غیرقابل اعتماد در یک پرس و جو است.
در زیر چندین روش عملی وجود دارد که می توانید از آنها برای محافظت از سازمان خود استفاده کنید:
اعتبار ورودی را اجرا کنید. قبل از وارد کردن ورودی غیرقابل اعتماد در نمایش داده های LDAP ، ورودی باید در برابر لیست سفید رشته ها یا کاراکترهای مجاز تأیید شود. این اعتبار سنجی همیشه باید در کنار سرور انجام شود حتی اگر ورودی قبلاً توسط مشتری انجام شود.
ورودی های ساختاری مانند شماره های تأمین اجتماعی ، شماره تلفن ها و آدرس های ایمیل را می توان با استفاده از یک الگوی بیان منظم قوی تأیید کرد. ورودی هایی مانند نام های کاربری باید در برابر مجموعه ای از شخصیت های تأیید شده که شخصیت های کنترل فیلتر LDAP را حذف می کنند ، تأیید شوند.
فرار از ورودی با رمزگذاری. فرار از رشته های ورودی تحت کنترل کاربر به گونه ای که شخصیت های کنترلی در ورودی معنای مورد نظر فیلتر جستجوی LDAP را تغییر ندهند. به عنوان مثال ، در یک برنامه جاوا ، متغیرهای متشکل در یک پرس و جو LDAP با کاراکترهای برگشت به عنوان کاراکتر فرار قابل تهیه هستند. با این روش ، ورودی های غیرقابل اعتماد به یک فیلتر جستجو اضافه می شوند به عنوان مقادیر رشته ای کلمه ای هستند ، نه به عنوان پیش بینی LDAP.
مجوز دایرکتوری هاردن. این روش دفاعی به منظور به حداقل رساندن تأثیر هرگونه تزریق تزریق با استفاده از اصل حداقل امتیاز است. حساب LDAP که برای اتصال فهرست به یک برنامه کاربردی استفاده می شود ، باید دسترسی محدود داشته باشد. با استفاده از این روش ، فقط نمایش داده شدگان مجاز LDAP در برابر سرور LDAP قابل اجرا هستند.
امیدوارم این مقاله براتون مفید بوده باشه.
ما رو تو شتابان هاست دنبال کنید. 🙂