
بررسی LDAP Injection
در این بخش از دوره آموزشی OWASP-WSTG به هفتمین بخش از استاندارد WSTG با شناسه WSTG-INPV-06 می پردازیم که مربوط به بررسی LDAP Injection می باشد.
خلاصه
Lightweight Directory Access Protocol یا LDAP برای ذخیره اطلاعات در مورد کاربران، میزبانها و بسیاری از اشیا دیگر به کار میرود. تزریق LDAP یک حمله سمت سرور است که اجازه میدهد اطلاعات حساس در مورد کاربران و میزبانهای نشاندادهشده در یک ساختار LDAP افشا، اصلاح یا Insert شوداین کار با دستکاری پارامترهای ورودی و سپس ارسال به جستجوی داخلی، افزودن و اصلاح توابع انجام می شود.
یک برنامه کاربردی وب میتواند از LDAP به منظور اجازه دادن به کاربران برای احراز هویت یا جستجوی اطلاعات کاربران در داخل یک ساختار شرکتی استفاده کند. هدف از حملات تزریق LDAP تزریق فیلترهای جستجوی LDAP در یک پرس و جو است که توسط برنامه اجرا خواهد شد.
RFC2254 دستور زبان را در مورد چگونگی ساخت یک فیلتر جستجو بر روی LDAPv3 تعریف میکند و RFC1960 مربوط به LDAPv2 میباشد.
یک فیلتر جست و جوی LDAP در Polish notation ساخته شدهاست که به Polish notation prefix notation نیز معروف است.
این بدان معنی است که یک شرط شبه کد در فیلتر جستجو مانند این:

به این شکل نمایش داده خواهد شد:

شرایط Boolean و جمعبندیهای گروهی بر روی یک فیلتر جستجوی LDAP را میتوان با استفاده از متاکارترهای زیر اعمال کرد:

مثالهای کاملتر در مورد چگونگی ساخت یک فیلتر جستجو را میتوان در RFC مربوطه یافت.
بهرهبرداری موفق از یک آسیبپذیری تزریق LDAP میتواند به تست نفوذگر اجازه دهد:
• به محتوای غیر مجاز دسترسی داشته باشد.
• از محدودیتهای برنامه عبور کند.
• اطلاعات غیر مجاز را جمعآوری کند.
• به ساختارLDAP یک شی را اضافه یا اصلاح کند.
اهداف تست
• شناسایی نقاط تزریق LDAP
• ارزیابی شدت تزریق
چگونه تست را انجام دهیم
مثال ۱: Search Filters
بیایید فرض کنیم یک برنامه کاربردی تحت وب داریم که از یک فیلتر جست و جو مانند زیر استفاده میکند:

که توسط یک درخواست HTTP مانند این معرفی میشود:

اگر مقدار John با a * جایگزین شود، با ارسال درخواست:

فیلتر به شکل زیر خواهد بود:

که هر شی را با ویژگی “cn” برابر با هر چیزی مطابقت میدهد.
اگر برنامه در برابر تزریق LDAP آسیبپذیر باشد، بسته به جریان اجرای برنامه و مجوزهای کاربر متصل به LDAP، برخی یا همه ویژگیهای کاربر را نمایش خواهد داد.
یک تست نفوذگر میتواند از روش آزمون و خطا با وارد کردن پارامتر ( ، *، &، | و دیگر کاراکترها به منظور بررسی برنامه برای خطاها استفاده کند.
مثال ۲: Login
اگر یک برنامه کاربردی وب از LDAP برای بررسی اعتبار کاربر در طول فرآیند ورود به سیستم استفاده کند و در برابر تزریق LDAP آسیبپذیر باشد، عبور از بررسی احراز هویت با تزریق یک پرس و جوی همیشه درست LDAP امکان پذیر است (به روشی مشابه با تزریق SQL و XPATH)
فرض کنید که یک برنامه کاربردی وب از یک فیلتر LDAP برای مطابقتuser/password استفاده میکند.

با استفاده از مقادیر زیر:

فیلتر جست و جو منجر به موارد زیر خواهد شد:

درست است و همیشه درست (Always True) است. به این ترتیب، تست نفوذگر به عنوان اولین کاربر در ساختار LDAP به سیستم وارد خواهد شد.
ابزارها
Softerra LDAP Browser