در قسمت اول مقاله قدمها، روشها و ابزارهای تست نفوذ برنامه کاربردی وب چیست؟ در مورد تست نفوذ برنامه های کاربردی واشتباهات رایج در برنامه نویسی و همچنین دو قدم ز 4 قدم برای انجام تست نفوذ را توضیح دادیم.
چه ابزاری برای تست نفوذ برنامه کاربردی وب مورد استفاده قرار میگیرند؟
کل فرایند تست نفوذ عمیقاً بستگی دارد به مرحلهی شناسایی و آسیبپذیریهایی یافت شده. پیدا کردن Exploit مناسب و به دست آوردن دسترسی به یک سیستم، با یک بررسی کامل بسیار سادهتر است.
ابزاری مثل اسکنرهای آنلاین و موتورهای جستجو میتوانند به افراد کمک کنند که بهصورت منفعل اطلاعاتی را در مورد هدف خود جمعآوری نمایند. میتوان برای شمارش سیستم هدف و کشف پورتهای Live از Nmap استفاده نمود.
ابزار محبوبی که معمولاً در طول تست نفوذ وبسایت مورد استفاده قرار میگیرند، شامل موارد زیر هستند:
- W3af
- Burp Suite
- SQLMap
- Metasploit
- Hydra
- John Ripper
- Skipfish
- Ratproxy
- Wfuzz
- Watcher
برای اسکن آسیبپذیری برنامهی کاربردی وب خودکار، در مراحل Sniffing و Exploit میتوان از ابزاری مثل اسکنر W3af، Burp Suite Toolkit، SQLMap ابزار مختلف کشف رمز عبور مثل Hydra یا John Ripper استفاده نمود. بسیاری از ابزار دیگر نیز بهعنوان بخشی از پروژهی Metasploit قابلدسترسی هستند، اما در چارچوب این مقاله جای نمیگیرند.
چارچوب Metasploit در Kali Linux قطعاً انتخاب اول خواهد بود، اما میتوان آن را با برخی از بهترین ابزار صنعت که برای کمک در فرایند تست نفوذ برنامه کاربردی وب طراحی شدهاند نیز تکمیل کرد. فهرست زیر از ابزار و قابلیتهای آنها نشان میدهد که با کمی دستکاری برنامه کاربردی وب آسیبپذیر چه چیزهایی ممکن میشود.
چارچوب برنامه کاربردی وب (W3af) 300
W3af یا چارچوب برنامه کاربردی وب یک اسکنر امنیتی است که اصولاً برای کشف آسیبپذیریها مورد استفاده قرار میگیرد. میتوان تقریباً در همهی تستهای نفوذ برنامهی کاربردی وب از W3af استفاده نمود تا وبسایت هدف و سرور Host آن بهسرعت بررسی گردد.
برای شروع باید با تایپ کردن «cd w3af» کنسول W3af را باز کرد. وقتی که ورود به دایرکتوری مناسبی انجام شد، باید برای باز کردن W3af، عبارت «./w3af_console» را تایپ نمود.
سپس باید “target”, “set target x.x.x.x” را تایپ کرد و Enter را فشار داد. برای پرش از یک دایرکتوری باید «back» را تایپ کرد و پیکربندی ذخیره خواهد شد.
در نهایت باید «set plugins» را تایپ کرد تا گزینههای اسکن موردنظر انتخاب شوند. در این مورد با تایپ کردن «audit all» همهی گزینهها را انتخاب میکنیم و با تایپ کردن «back» یک دایرکتوری عقب میرویم. «start» را مینویسیم و اسکن را اجرا میکنیم.
وقتی که اسکن تکمیل شد، W3af آسیبپذیریهایی را که اسکن پیدا کرده است، گزارش میدهد. در مورد زیر، W3af متوجه شد که سیستم هدف روی سرور Apache نسخهی 2.2.8 و PHP 5.2.4 اجرا میشود.
هر دوی این نسخهها نسبت به یک حملهی Cross Side Scripting یا CSS که توسط W3af گزارش شده است، آسیبپذیر هستند. بهطورکلی، W3af دارای ویژگیهای بیشتری در رابطه با Exploit کردن است، اما این ویژگیها آنقدر گسترده هستند که در این مقاله جای نمیگیرند. بههرحال، W3af یک راه سریع و ساده برای جمعآوری اطلاعات در مورد سیستم هدف است.
Burp Suite
Burp Suite یک ابزار تست نفوذ برنامه کاربردی وب متنباز است که در دو نسخه عرضه میشود. نسخهی متنباز که چندین ویژگی آن ناقص است، برای استفادهی همه قابلدسترسی است. نسخهی تجاری Burp Suite خودکارسازی و قابلیتهای خیلی بیشتری را ارائه میدهد و برای بسیاری از شرکتهای تست نفوذ Licenseشده است.
برای مشاوره رایگان جهت (باز)طراحی امنیت شبکه و یا انجام تست نفوذ مطابق با الزامات افتا با کارشناسان شرکت APK تماس بگیرید. |
قابلیتهای مختلف در Burp Suite آن را تبدیل کرده است به یک ابزار تست امنیت برنامه کاربردی وب کامل که میتوان در طول کل فرایند تست نفوذ آن را مورد استفاده قرار داد. جمعآوری ترافیک HTTP با Burp Suite آسان است و امکانات زیادی در حوزهی Exploit وجود دارد. برای نشان دادن مفیدترین جوانب Burp Suite، در ادامه یک مثال ساده از Capture کردن ترافیک HTTP با Burp Suite و سپس انجام یک حملهی SQL injection با استفاده از Sqlmap نمایش داده میشود.
برای شروع باید با رفتن به سمت چپ دسکتاپ Kali Linux و پیدا کردن Burp Suite در دستهی تب «Web Application Analysis» آن را باز کرد. پس از لود شدن، باید اطمینان حاصل کرد که در تب «intercept» گزینهی «intercept is on» انتخاب گردد.
سپس باید طوری Burp Suite را تنظیم کرد که در مرورگر فایرفاکس بهعنوان پراکسی وب کار کند. باید بخش «preferences» را باز کرده و به «advanced settings»، سپس «connection settings» رفته «manual proxy configuration» را انتخاب نمود و آدرس IP و شمارههای پورت را انتخاب نمود: 127.0.0.1 و 8080.
بیشتر بخوانید: تست نفوذ مهندسی اجتماعی یا Social Engineering چیست و چه گام های اجرایی دارد – قسمت اول
حالا که همهچیز تنظیم شده است، باید از طریق مرورگر فایرفاکس خود به وبسایت هدف رفته و عدد 1 را در بخش آسیبپذیر URL برنامه کاربردی وارد کنیم. در این مورد، نسخهی PHP آسیبپذیر این توانایی را ایجاد میکند که پس از بخش «title» عدد 1 را وارد کنیم و تائید کنیم که یک SQL Injection ممکن است. باوجود ترافیک Captureشده، Burp Suite دیگر مورد نیاز نیست و میتوان «intercept is on» را خاموش کرد. باید ترافیک Captureشده را در یک فایل ذخیره کرد و از Burp Suite خارج شد. برای انجام SQL injection اصلی، SQLMap را باز میکنیم و حمله را انجام میدهیم. اما در ابتدا اگر کمی در مورد SQLMap اطلاعات داشته باشیم، متوجه خواهیم شد که این ابزار چقدر مفید است.
SQLMap
SQLMap یکی از بهترین ابزار خودکارسازیشده در قالب متنباز است. این ابزار فرایند انجام حملات SQL Injection را تسهیل کرده و دسترسی به سرورهای دیتابیس دچار نقض امنیتی را فراهم مینماید. یکی از ویژگیهای اصلی این ابزار شامل Fingerprinting دیتابیس و اسکن کردن برای پیدا کردن آسیبپذیریهای و Exploitهای ممکن میباشد.
برای ادامه دادن فرایند از ترافیک HTTP که در Burp Suite، Captureشده بود، فرایند انجام یک حملهی SQL Injection موفقیتآمیز را با استفاده از SQLMap را شرح میدهیم. باید عبارت «sqlmap -r nameOfTheSavedFile.txt -p title» را تایپ نمود. این کار عملاً موجب اجرای SQLMap شده و با استفاده از فایل ارائهشده که حاوی ترافیک Captureشده است، باید سعی کرد که پس از بخش «title» از URL برنامه کاربردی وب آسیبپذیر، کد را Inject نمود.
پس از تکمیل شدن اسکن، SQLMap روی برنامه کاربردی و نسخهی دیتابیس گزارشی ارائه میدهد که جزئیاتی را در مورد تمام تلاشهایی که برای Injection انجام شده است فراهم مینماید. در نهایت تلاش خواهد شد که یک SQL Shell انجام شود و دسترسی به دیتابیس Backend بهدست بیاید. باید «sqlmap -r nameOfTheSavedFile.txt -p title –sql-shell» تایپ شود و Enter فشار داده شود.
اگر دسترسی مناسبی به دیتابیس فراهم شود که به کاربر این توانایی را بدهد که اقداماتی مثل خواندن، نوشتن و حذف را انجام دهد، این روش بسیار کارآمد خواهد بود. روش دیگری برای اجرای یک حملهی SQL Injection این است که SQLMap در مقابل IP مقصد اجرا شده و سعی شود که دسترسی به دیتابیس بدست بیاید. در اینجا برنامه کاربردی وب BWAPP قابلدسترسی انتخاب شده است که نسبت به حملات آسیبپذیر است. سپس باید دستور زیر را اجرا نمود که سعی میکند یک کد SQL را پس از بخش «title=1» از URL مقصد برنامهی کاربردی وب، وارد کند.
SQLMap اجرا شده و از کاربر میخواهد که نسخهی شناساییشده از دیتابیس را تائید کند.
سپس «yes» را تایپ کرده و اسکن را ادامه میدهیم. در ادامه با اضافه کردن «dbs—» پس از هدف مشخص شده، به دنبال دیتابیسهایی میگردیم که در محیط قابلدسترسی هستند.
پسازاینکه SQLMap دیتابیسهای قابلدسترسی را شناسایی کرد، باید سعی شود که با اضافه کردن «tables -D- –» و مشخص کردن نام جدول، جداول یکی از دیتابیسها فهرست گردد.
ازآنجاییکه این Exploit موفقیتآمیز بود، ادامه میدهیم و تا جای ممکن اطلاعات بدست میآوریم. جدول «users» در دیتابیس «bwapp» ممکن است اطلاعات حساس بیشتری را نمایش دهد. با تایپ URL مقصد جدول «users» رها (Dump) میشود، سپس باید اقدام، دیتابیس و نام جدول مشخص شود و Enter فشرده گردد.
SQLMap بهطور خودکار تشخیص میدهد که جدول «users» حاوی Hashهای رمز عبور است و از کاربر میپرسد که آیا میخواهد آنها را برای حملهی رمز عبور Dictionary Brute Force در آینده ذخیره کند یا خیر. Hashها را در یک فایل ذخیره میکنیم و گزینهی دیکشنری پیشفرض را انتخاب کرده و اسکن Brute Force را اجرا مینماییم.
وقتی که این کار تمام شد، SQLMap نتایج گزارششده را ارائه میدهد. نیازی نیست که برای رسیدن به نتایج یکسان، از ویژگی پیدا کردن رمز عبور پیشفرض در SQLMap استفاده شود. Hydra و John Ripper دو مورد از محبوبترین ابزار پیدا کردن رمز عبور هستند که میتوانند در کشف رمز عبور مفید باشند.
Cross-site Scripting یا XSS
ابزار اسکن آنلاین زیادی وجود دارند که میتوانند بهصورت خودکار اسکن امنیت جامعی از یک وبسایت دلخواه را برای کاربر فراهم کنند. میتوان از این ابزار بهعنوان روش سریعی برای تائید آسیبپذیریهای موجود استفاده کرد. میتوان با استفاده از چارچوب W3af، به نتایج یکسانی رسید. برای تست کردن این حمله، تستکنندههای نفوذ معمولاً ارتباط HTTP بین Client و سرور را ردیابی کرده و با استفاده از این ترافیک سیستم هدف را Exploit مینمایند.
شناسایی Vendorهای نرمافزار Third-Party شناختهشده
گاهی اوقات برنامههای کاربردی برای عملکردهای بهخصوصی از ابزار Third-Party استفاده میکنند. این امر کل برنامه کاربردی را در معرض ریسک یکسانی با ابزار Third-Party قرار میدهد. باید در Vendorهای نرمافزاری که برنامه کاربردی از آنها استفاده میکند به دنبال آسیبپذیریها و Exploitها گشت و آنها را تست نمود. احتمال هزاران حملهی مختلف وجود دارد که میتوانند برنامههای کاربردی، سرورها و دیتابیسها را Exploit کنند. حملات متداول دیگری که باید به آنها اشاره شود شامل حملات Session Fixation، حملات Session Hijacking و حملات Binary هستند.
قدم 3: گزارشدهی و پیشنهادات
گزارشات برنامه کاربردی وب نیز مثل نوشتن هر گزارش تست نفوذ دیگر هستند. ساختار گزارش باید واضح و دقیق باشد و دادههای کافی برای پشتیبانی از نتایج داشته باشد. حتماً باید به روشهایی که جواب دادهاند اشاره کرد و تا جای ممکن توضیحات کاملی را ارائه داد.
بیشتر بخوانید: مراحل تست نفوذ چگونه انجام می شود؟ بررسی روشها و انواع
با نوشتن Exploitهای موفق و دستهبندی کردن آنها براساس میزان خطرناک بودن، به شرکتی که تست میشود کمک خواهد شد تمرکز خود را روی اصلاح حیاتیترین بخشهای سیستم خود قرار دهند. برخی از شرکتها اطمینان حاصل میکنند که همیشه گزارشی را برای افراد کسبوکارمحور بنویسند تا هم کارمندان IT شرکت و هم بخشهای مدیریتی بالاتر بهوضوح گزارش را درک کنند و متوجه شوند که تا چه حدی نسبت به ریسک آسیبپذیر هستند.
قدم 4: اصلاح و پشتیبانی مداوم
بسیاری از سازمان ها نمیتوانند تمام آسیبپذیریهایی که یک تست نفوذ نمایش داده است را اصلاح کنند. یکی از بهترین اقدامات این است که آسیبپذیریهای حیاتی و سطح بالا در ابتدا اصلاح شوند و در ادامه روی آسیبپذیریهای متوسط و سطح پایین تمرکز گردد. اولویتبندی نقش مهمی در این زمینه ایفا میکند، زیرا احتمال Exploit شدن هر آسیبپذیری، با آسیبپذیری دیگر متفاوت است. برخی از آسیبپذیریهای شناساییشده فقط با دسترسی قبلی به سیستم داخلی ممکن هستند و برخی از آسیبپذیریها دارای ریسک اجرا کد از راه دور میباشند و باید بهدرستی اولویتبندی گردند تا احتمال و تأثیرگذاری آنها نشان داده شود. بسیاری از شرکتهای تست نفوذ، تست مجدد را بهعنوان بخشی از قرارداد خود ارائه میدهند و با یک تست نفوذ ثانویه بررسی میکنند که آیا آسیبپذیریهای یافت شده در تست قبلی اصلاح شدهاند یا خیر. در اینجا شرکتها میتوانند همکاری نزدیکی با تیمهای امنیتی و IT داشته باشند تا تمام آسیبپذیریهایی که پس از اولین تست پیدا شدند را برطرف نمایند.
نتیجهگیری
برنامههای کاربردی وب، برخلاف برنامههای کاربردی «قدیمی» از نظر تجاری بودن و کاربرد بازار خیلی خوبی دارند. این برنامهها عملکرد مناسبی را در اینترنت به ارمغان میآورند، اما هزینهای هم دارند. این سیستمها معمولاً بهصورت عمومی قابلدسترسی هستند و درنتیجه همیشه در معرض اینترنت قرار میگیرند. بهدلیل محبوبیت روبهرشد برنامههای کاربردی وب و حضور آنها روی اینترنت، این برنامههای کاربردی معمولاً در طراحی و پیکربندی خود آسیبپذیریهایی دارند که هکرهای مخرب آنها را پیدا کرده و Exploit مینمایند.
ازآنجاییکه این سیستمها تقریباً همیشه رو به اینترنت قرار دارند، ریسک بیشتری به همراه دارند و در تستهای نفوذ باید در اولویت باشند. اگر یک برنامه کاربردی با اطلاعات کارت اعتباری، اطلاعات شخصی یا حتی آمار پزشکی سروکار داشته باشد، به نفع شرکت سازندهی آن است که تست نفوذ برنامه کاربردی وب را بهصورت سالانه انجام دهد تا پاسخگوی تطبیقپذیریهای قانونی لازم برای اکثر دادهها باشد. در مواردی که تست نفوذ الزامی نیست، بهشدت پیشنهاد میشود که این کار انجام گردد، زیرا بهترین راه برای دستیابی به استانداردهای امنیتی است.
با توجه به اینکه ابزار مختلفی برای انتخاب وجود دارد، تست نفوذ برنامه کاربردی وب رویکرد خیلی ساختارمندتری را به تست خودکارسازیشده و دستی پیش گرفته است. انتخاب هر راهکار امنیتی متنباز به شدن پیشنهاد میشود، درحالیکه نسخههای تجاری این راهکارها با قابلیتهای بیشتر هم قابلدسترسی هستند. در نهایت میتوان گفت که تست نفوذ برنامه کاربردی وب شامل تست کردن محیط برنامه کاربردی، اتصال دیتابیس، کد منبع، دادههای بد و دادههای خطا برای پیدا کردن آسیبپذیریها و Exploit کردن آنها است.