دوره SEC542 – بخش سیزدهم

دوره آموزشی SEC542

در این بخش از دوره آموزشی SEC542 با ادامه مبحث جمع آوری اطلاعات وب یا Information Gathering آشنا خواهید شد. HTML Comments، Disabled Functionality و دایرکتوری لیست نیز از مواردی است که در این بخش به آن اشاره خواهد شد.

HTML Comments

یکی از منابع مناسب برای جمع آوری اطلاعات، به دست آوردن کامنت های HTML است. در برخی موارد توسعه دهندگان وب سایت، برای خوانایی بیشتر، از کامنت ها استفاده می کنند که در بعضی از آن ها نام کاربری و حتی کلمه عبور هم قرار داده می شود. توسعه دهندگان اغلب فراموش می کنند که کاربر نهایی می تواند با استفاده View-Source به این کامنت ها دسترسی داشته باشند و این اطلاعات را در پایان پروژه حذف نمی نمایند. همچنین از اطلاعات مربوط به کامنت های درون سایت می توان برای انجام حملات مهندسی اجتماعی در آینده نیز استفاده نمود.

Disabled Functionality

با توجه به اینکه برخی از برنامه های کاربردی وب در حال توسعه می باشند و هنوز کامل نشده اند و یا برخی دیگر کامل شده ولی بخش هایی از آن ها برای مشتری مورد نظر نباید فعال باشد، توسعه دهندگان وب دسترسی به آن ها را غیرفعال می کنند ولی با توجه به این که چنین غیرفعال سازی به صورت کامل صورت نمی گیرد، امکان مشاهده آن ها وجود خواهد داشت.

این مورد موجب می شود تا برخی از قابلیت هایی که از دید عموم غیرفعال است توسط نفوذگر مشاهده شود و این مشکل می تواند کل برنامه را تحت تاثیر قرار دهد.

این موارد می تواند صفحات قدیمی باشد که دیگر در برنامه جدید استفاده نمی شوند و یا ویژگی هایی باشد که با توجه به دسترسی کاربر به وی نمایش داده می شوند. همچنین با توجه به اینکه اصل مهم در برنامه های کاربردی وب، Session، احراز هویت و تعیین سطح دسترسی می باشد، به همین دلیل اگر صفحه ای که با مشخصات مذکور کشف شود، امکان عبور از فرآیند احراز هویت نیز وجود دارد.

لازم به ذکر است که Disabled Functionality معمولا به دو شکل وجود دارند که یکی شامل لینک های غیرفعال شده می باشند و دیگری در کدهای سمت کاربر (Client-side code) قرار می گیرند.

Fuzzing

Fuzzing یک تکنیک است که در سراسر انواع تست های امنیتی از آن استفاده می شود. در واقع Fuzzing ارسال درخواست های مختلف تصادفی به مقصد و بررسی نتایج حاصل از آن است. این درخواست ها به نقاط ورودی مختلف ارسال می شود و در برخی از موارد نتایج حاصل از آن جالب بوده و معمولا در تست نفوذ کاربردی می باشد. به عنوان مثال ما می توانیم رشته های مختلف SQL را به ورودی های سایت ارسال نماییم و به دنبال پیام های خطای پایگاه داده در نتایج درخواست ها باشیم.

توجه داشته باشید که نتایج فرآیند Fuzzing باید به دقت بررسی گردد. ما با توجه به نوع Fuzzing و هدف مورد نظر، به دنبال مطلب خاصی در نتایج خواهیم بود. بازتاب ورودی ها(چاپ همان ورودی در خروجی که امکان آسیب پذیری XSS متصور خواهد بود)، پیام های خطا، تغییر در صفحات و سایز آن ها پس از تغییر درخواست و حتی زمان بارگذاری صفحات می تواند بیانگر وجود مشکل و آسیب پذیری خاصی باشد. در واقع هر نتیجه ای که از الگوی طبیعی خارج باشد ممکن است نشان دهنده وجود مشکل در هدف مورد نظر ما باشد.

برای انجام Fuzzing ما نیاز به یک سری رشته های حمله داریم. البته می توان لیستی از رشته های مربوط به حملات مختلف را به صورت دستی ایجاد نمود ولی برای این منظور یک مجموعه رشته هایی وجود دارد که با عنوان FuzzDB شناخته می شود. پروژه FuzzDB دارای مجموعه ای از رشته های حملات مختلف است که بر اساس نوع حمله دسته بندی شده است و ما می توانیم آن را در ابزارهای مختلف به کار ببریم. شما می توانید از لینک زیر به این ابزار دسترسی داشته باشید:

https://github.com/fuzzdb-project/fuzzdb

یک از ابزارهای بسیار کاربردی که در تست نفوذ وب از آن استفاده می شود، ابزار Burp Suite می باشد. این ابزار دارای بخش با نام Intruder است که در آن می توان حملات Fuzzing را انجام داد. البته توجه داشته باشید که در نسخه رایگان این ابزار، بخش Intruder دارای محدودیت هایی می باشد ولی همچنان می تواند حملات مختلف را برای ما انجام دهد. شما می توانید درخواست های دریافت شده را که در بخش Proxy ابزار Burp Suite دریافت می کنید را به بخش Intruder ارسال نمایید و بخش هایی که نیاز به تکرار و انجام عملیات Fuzzing در آن را دارید مشخص نموده و سپس اقدام به انجام Fuzzing نمایید.

Burp Suite

در بخش Intruder شما در قسمت Attack Type می توانید نوع انجام Fuzzing خود را مشخص نمایید. ابزار Burp Suite چهار نوع Fuzzing را در اختیار شما قرار می دهد:

Sniper: در این نوع، شما باید مکانی که Fuzzing در آن جا انجام خواهد شد را مشخص نمایید و پس از آن تنها یک بار کلیه موارد موجود در بخش Payload که لیست رشته های قابل تست در آن مشخص می شود، تست خواهد شد.
Battering Ram: در این نوع، مجموعه Payload ها در تمام بخش های مشخص شده تست خواهند شد. این تست زمانی استفاده می شود که شما بیشتر از یک پارامتر دارید و می خواهید مقادیر یکسان را در آن ها تست نمایید.
Pickfork: این نوع برای زمانی استفاده می شود که ما می خواهیم مقادیر مختلف را برای پارامترهای مختلف تست کنیم به عنوان مثال اگر ما دو ورودی داشته باشید. در این حالت دو Payload خواهیم داشته که در Payload اول مقادیری که باید در پارامتر اول تست شود قرار داده شده و در Payload دوم مقادیری که باید در پارامتر دوم تست شود، قرار داده می شود. معموارت برای حملاتی که مرتبط با Injection می باشند این گزینه انتخاب می شود.
Cluster Bomb: این نوع از Fuzzing به گونه ای عمل می کند که اگر دو پارامتر ورودی داشته باشیم، دو Payload باید تعریف شود که کلیه موارد موجود در بخش Payload اول با کلیه موارد موجود در Payload دوم تست خواهد شد.

توجه داشته باشید با توجه به Attack Type انتخاب شده، باید رشته هایی که باید تست شوند را در Payload های مورد نظر نیز تعریف کنیم. در بخش Payload شما هم می توانید رشته های مورد نظر را به صورت تکی وارد نموده و یا یک فایل از قبل تهیه شده را در این بخش Import نمایید.

همچنین در بخش Payload شما می توانید Processing Rules را نیز تعریف کنید که در این بخش تنظیمات Prefix، Suffix، Match/Replace و موارد دیگر قابل پیاده سازی است. به عنوان مثال شما می توانید عبارتی را در ابتدا یا انتهای کل رشته های وارد شده در Payload اضافه نمایید و یا بخشی را با بخش دیگر جایگزین نمایید.

گزینه دیگری که در بخش Payload نیاز به تنظیم آن وجود دارد، بخش Payload Type است. در این بخش شما می توانید نوع پیلود مورد نظر خود را انتخاب نمایید. به عنوان مثال در صورتی که Brute Force را انتخاب نمایید، باید تعداد کاراکترها و نوع آن ها را انتخاب نمایید تا کلمات ترکیبی از آن ها برای تست ایجاد شود و یا اگر عبارت Number را انتخاب کنید، باید بازه عددی مورد نظر و همچنین میزان فاصله آن ها از یکدیگر را برای تست مشخص نمایید.

Information Leakage

افشای اطلاعات حساس در برنامه های تحت وب یکی از مواردی است که در اکثر این برنامه ها به چشم می خورد. به همین دلیل یکی از بخش های OWASP Testing Guideمربوط به این موضوع می گردد که با عنوان OTG-CONFIG-004: Review Unreferenced Files for Sensitive Information شناخته می شود. همواره امکان این موضوع وجود دارد که فایل های ایجاد شده توسط مدیران وب سایت، حذف نشده باشند. فایل هایی که با پسوند .bak یا .old از این دست فایل ها می باشند. یکی از راه های شناسایی چنین فایل هایی جست و جو در سورس صفحات می باشد.

یکی از مواردی که در آن افشای اطلاعات وجود دارد، پیام های خطای کنترل نشده هستند. به عنوان مثال در صورتی که از یک کوتیشن در عبارات موجود در Query String وارد کنیم، در صورت عدم کنترل پیام های خطا، نوع پایگاه داده استفاده شده در سرور، در متن پیام خطا مشخص می گردد.

همچنین شما می توانید عبارت خطا را در گوگل جست و جو نمایید تا به سایت هایی که این پیام خطا را باز می گردانند هدایت شوید. بدین منظور عبارت زیر را در گوگل جست و جو نمایید:

“microsoft ole db provider for odbc drivers” site:gov

در ادامه تصویر مربوط به یکی از سایت هایی است که در نتیجه جست و جوی عبارت بالا به آن رسیده ایم:

همانطور که مشاهده می کنید در بخشی از این صفحه، پیام خطای مربوط به پایگاه داده قابل مشاهده می باشد.
در آسیب پذیری افشای اطلاعات، ممکن است اطلاعات مربوط به کاربران که شامل نام های کاربری می باشد، اطلاعات پایگاه داده، ساختار دایرکتوری های سرور، نوع به همراه نسخه سیستم عامل و سرویس های نصب شده بر روی سرور، افشا گردد.

یکی از صفحاتی که اطلاعات بسیار زیادی را در خصوص سرور افشا می کند فایل phphinfo.php در سایت های مبتنی بر PHP می باشد که باید دسترسی به این فایل توسط مدیر سایت محدود گردد.

Directory Browsing

یکی دیگر از مصادیق افشای اطلاعات، فعال بودن قابلیت Directory Browsing است که در این حالت کلیه دایرکتوری ها و فایل های موجود در آن ها به صورت لیست شده قابل مشاهده می باشند.

این قابلیت به صورت پیش فرض در سیستم عامل های لینوکسی فعال است و امکان مشاهده دایرکتوری ها و فایل را امکان پذیر می کند. مشکل دیگری که در این صحفات وجود دارد، افشای اطلاعات مربوط به سرور و نسخه سیستم عامل است که در انتهای صفحات قابل مشاهده است.

Directory Browsing

برای جلوگیری از نمایش لیست شده دایرکتوری ها باید در تنظیمات وب سرور لینوکسی خود عبارت Options Indexes را جست و جو نموده و عبارت Indexes را از آن حذف نمایید و یا یک فایل .htaccess ایجاد نموده و عبارت Options -Indexes را وارد نمایید.

شما می توانید سایت هایی که دارای آسیب پذیری Directory Browsing می باشند را با استفاده از گوگل پیدا نمایید. یکی از عبارتی که می توان از آن برای مشاهده سایت های آسیب پذیر استفاده نمود، عبارتست از:

Site:gov intitle:”index of” “last modified”

همچنین شما می توانید برای کسب اطلاعات و عبارات بیشتر به بخش گوگل هکینگ سایت Explopit-db.com نیز مراجعه نمایید.
توجه داشته باشید که در صورت استفاده زیاد از عبارت گوگل هکینگ، با صفحات کپچای مربوط به گوگل مواجه می شوید که در صورت ادامه امکان مسدودسازی آدرس IP شما وجود خواهد داشت.

روش دیگری که برای جست و جوی آسیب پذیری افشای اطلاعات از آن استفاده می شود، جست و جو در سایت cve.mitre.org می باشد. شما در بخش جست و جوی این وب سایت می توانید عبارت مورد نظر خود که می تواند شامل Directory یا Information یا عبارت مشابه باشد را جست و جو نمایید. لینک زیر نمونه ای از نتایج مربوط به عبارت Directory را نمایش می دهد:

http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=directory

علاوه بر موارد مذکور، ابزارهایی نیز برای جست و جوی لیست دایرکتوری ها و همچنین وجود آسیب پذیری Directory Browsing در دسترسی هستند که برخی آن ها عبارتند از:

Dirb
DirBuster
FuzzDB
JBroFuzz
WMAP

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید