Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود
در آخر مقاله ما صحبت کردیم Nemesida WAF رایگان - یک ابزار رایگان برای محافظت از وب سایت ها و API ها در برابر حملات هکرها، و در این یکی تصمیم گرفتیم یک اسکنر آسیب پذیری محبوب را بررسی کنیم. وپیتی.

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

Nikto، W3af (نوشته شده در Python 2.7، که دیگر پشتیبانی نمی شود) یا Arachni (دیگر از فوریه پشتیبانی نمی شود) محبوب ترین راه حل های ارائه شده در بخش رایگان هستند. البته موارد دیگری نیز وجود دارد، به عنوان مثال Wapiti که تصمیم گرفتیم روی آنها تمرکز کنیم.

Wapiti با انواع آسیب پذیری های زیر کار می کند:

  • گسترش فایل (محلی و از راه دور، fopen، readfile)؛
  • تزریق (PHP / JSP / ASP / SQL injection و XPath injection)؛
  • XSS (Cross Site Scripting) (بازتابی و پایدار)؛
  • تشخیص و اجرای دستورات (eval(), system(), passtru());
  • تزریق CRLF (تقسیم پاسخ HTTP، تثبیت جلسه)؛
  • جاسازی XXE (موجود خارجی XML)؛
  • SSRF (جعل درخواست سمت سرور)؛
  • استفاده از فایل های بالقوه خطرناک شناخته شده (به لطف پایگاه داده نیکتو)؛
  • پیکربندی های ضعیف htaccess که می توان آنها را دور زد.
  • وجود فایل های پشتیبان که اطلاعات محرمانه را فاش می کند (افشای کد منبع).
  • شل شوک؛
  • تغییر مسیرها را باز کنید.
  • روش های غیر استاندارد HTTP قابل حل (PUT).

ویژگی ها:

  • پشتیبانی از پروکسی HTTP، HTTPS و SOCKS5.
  • احراز هویت با استفاده از چندین روش: Basic، Digest، Kerberos یا NTLM.
  • توانایی محدود کردن منطقه اسکن (دامنه، پوشه، صفحه، URL)؛
  • حذف خودکار یکی از پارامترهای URL.
  • اقدامات احتیاطی متعدد در برابر حلقه های اسکن بی پایان (به عنوان مثال: ifor، مقادیر محدود کننده برای یک پارامتر)؛
  • امکان تعیین اولویت برای بررسی URL ها (حتی اگر در منطقه اسکن نباشند).
  • توانایی حذف برخی از URL ها از اسکن و حملات (به عنوان مثال: خروج از URL).
  • کوکی‌ها را وارد کنید (آنها را با استفاده از ابزار wapiti-getcookie دریافت کنید).
  • امکان فعال/غیرفعال کردن تأیید گواهی SSL.
  • توانایی استخراج URL از جاوا اسکریپت (یک مفسر JS بسیار ساده)؛
  • تعامل با HTML5؛
  • چندین گزینه برای مدیریت رفتار خزنده و محدودیت ها؛
  • تنظیم حداکثر زمان برای فرآیند اسکن؛
  • افزودن برخی هدرهای سفارشی HTTP یا راه‌اندازی یک User-Agent سفارشی.

ویژگی های اضافی:

  • ایجاد گزارش های آسیب پذیری در قالب های مختلف (HTML، XML، JSON، TXT).
  • مکث و از سرگیری یک اسکن یا حمله (مکانیسم جلسه با استفاده از پایگاه داده SQLite3).
  • نور پس زمینه در ترمینال برای برجسته کردن آسیب پذیری ها؛
  • سطوح مختلف ورود به سیستم؛
  • راهی سریع و آسان برای فعال/غیرفعال کردن ماژول های حمله.

نصب

نسخه فعلی Wapiti به دو روش قابل نصب است:

  • منبع را از رسمی دانلود کنید سایت و اسکریپت نصب را با نصب قبلی Python3 اجرا کنید.
  • با استفاده از دستور pip3 install wapiti3.

پس از این، Wapiti آماده حرکت خواهد بود.

کار با ابزار

برای نشان دادن کار Wapiti، ما از یک استند مخصوص sites.vulns.pentestit.ru (منبع داخلی)، حاوی آسیب پذیری های مختلف (تزریق، XSS، LFI/RFI) و سایر کاستی های برنامه های وب استفاده خواهیم کرد.

اطلاعات فقط برای مقاصد اطلاعاتی ارائه شده است. قانون را زیر پا نگذارید!

دستور اصلی برای راه اندازی اسکنر:

# wapiti -u <target> <options>

در عین حال، کمک بسیار دقیقی با تعداد زیادی از گزینه های راه اندازی وجود دارد، به عنوان مثال:

--محدوده - منطقه کاربردی
اگر پارامتر scope را به همراه URL خزیدن مشخص کنید، می توانید با تعیین یک صفحه و همه صفحاتی که در سایت یافت می شوند، ناحیه اسکن سایت را تنظیم کنید.

-s и -x - گزینه هایی برای افزودن یا حذف URL های خاص. این گزینه‌ها زمانی مفید هستند که نیاز به اضافه کردن یا حذف یک URL خاص در طول فرآیند خزیدن داشته باشید.

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

--verify-ssl - فعال یا غیرفعال کردن تأیید گواهی.
اسکنر Wapiti ماژولار است. با این حال، برای راه‌اندازی ماژول‌های خاص، از جمله آن‌هایی که به‌طور خودکار در حین کار کردن اسکنر متصل می‌شوند، باید از سوئیچ -m استفاده کنید و موارد مورد نیاز خود را با کاما از هم جدا کنید. اگر از کلید استفاده نشود، تمام ماژول ها به طور پیش فرض کار می کنند. در ساده ترین نسخه به این صورت خواهد بود:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

این مثال استفاده به این معنی است که ما فقط از ماژول های SQL، XSS و XXE هنگام اسکن هدف استفاده خواهیم کرد. علاوه بر این، می توانید عملکرد ماژول ها را بسته به روش مورد نظر فیلتر کنید. مثلا -m “xss: get, blindsql: post, xxe: post”. در این مورد، ماژول xss برای درخواست های ارسال شده با استفاده از روش GET و ماژول اعمال می شود blibdsql - برای ارسال درخواست‌ها و غیره به هر حال، اگر ماژولی که در لیست گنجانده شده بود در حین اسکن مورد نیاز نبود یا زمان زیادی طول می کشید، با فشار دادن ترکیب Ctrl+C می توانید با انتخاب مورد مربوطه در منوی تعاملی، از ماژول فعلی استفاده نکنید.

Wapiti از ارسال درخواست ها از طریق یک پروکسی با استفاده از یک کلید پشتیبانی می کند -p و احراز هویت در سایت هدف از طریق پارامتر -a. همچنین می توانید نوع احراز هویت را مشخص کنید: پایه ای, هضم, Kerberos и NTLM. دو مورد آخر ممکن است نیاز به نصب ماژول های اضافی داشته باشند. علاوه بر این، می‌توانید هر سرصفحه‌ای را در درخواست‌ها (از جمله دلخواه) درج کنید نماینده کاربر) و خیلی بیشتر.

برای استفاده از احراز هویت می توانید از ابزار استفاده کنید wapiti-getcookie. با کمک آن شکل می گیریم شیرینی، که Wapiti هنگام اسکن از آن استفاده می کند. تشکیل شیرینی با دستور انجام شد:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

در حین کار تعاملی، به سؤالات پاسخ می دهیم و اطلاعات لازم مانند ورود، رمز عبور و غیره را نشان می دهیم:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

خروجی یک فایل با فرمت JSON است. گزینه دیگر اضافه کردن تمام اطلاعات لازم از طریق پارامتر است -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

نتیجه مشابه خواهد بود:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

هنگام در نظر گرفتن عملکرد اصلی اسکنر، درخواست نهایی برای آزمایش برنامه وب در مورد ما این بود:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

که در میان پارامترهای دیگر:

-f и -o - قالب و مسیر ذخیره گزارش؛

-m - اتصال همه ماژول ها توصیه نمی شود، زیرا بر زمان آزمایش و اندازه گزارش تأثیر می گذارد.

--رنگ - طبق خود Wapiti، آسیب‌پذیری‌های یافت شده را بسته به بحرانی بودن آنها برجسته کنید.

-c - استفاده از یک فایل با شیرینی، تولید شده با استفاده از wapiti-getcookie;

--محدوده - انتخاب هدف برای حمله انتخاب یک گزینه پوشه هر URL خزیده می شود و مورد حمله قرار می گیرد و از آدرس اصلی شروع می شود. URL پایه باید دارای اسلش رو به جلو (بدون نام فایل) باشد.

--جلسه فلاش - امکان اسکن مکرر را فراهم می کند، که در آن نتایج قبلی در نظر گرفته نمی شود.

-A - صاحب نماینده کاربر;

-p - آدرس سرور پروکسی، در صورت لزوم.

کمی در مورد گزارش

نتیجه اسکن در قالب یک گزارش مفصل در مورد تمام آسیب پذیری های یافت شده در قالب صفحه HTML، به شکلی واضح و خوانا ارائه شده است. این گزارش دسته‌ها و تعداد آسیب‌پذیری‌های یافت شده، توضیحات، درخواست‌ها، دستورات آنها را نشان می‌دهد حلقه و نکاتی در مورد نحوه بستن آنها. برای سهولت در پیمایش، پیوندی به نام دسته ها اضافه می شود که با کلیک روی آن می توانید به آن بروید:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

یک نقطه ضعف قابل توجه گزارش عدم وجود نقشه برنامه کاربردی وب است که بدون آن مشخص نیست که آیا تمام آدرس ها و پارامترها تجزیه و تحلیل شده اند یا خیر. احتمال مثبت کاذب نیز وجود دارد. در مورد ما، گزارش شامل «فایل‌های پشتیبان» و «فایل‌های بالقوه خطرناک» است. تعداد آنها با واقعیت مطابقت ندارد، زیرا هیچ فایلی روی سرور وجود نداشت:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

شاید ماژول های نادرست کار به مرور زمان رفع شوند. یکی دیگر از اشکالات گزارش عدم رنگ آمیزی آسیب پذیری های یافت شده (بسته به بحرانی بودن آنها) یا حداقل تقسیم آنها به دسته ها است. تنها راهی که می توانیم به طور غیرمستقیم بحرانی بودن آسیب پذیری یافت شده را درک کنیم، استفاده از پارامتر است --رنگ در طول اسکن، و سپس آسیب پذیری های یافت شده در رنگ های مختلف رنگ آمیزی می شوند:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

اما خود گزارش چنین رنگ آمیزی ارائه نمی دهد.

آسیب پذیری ها

SQLi

اسکنر تا حدی با جستجوی SQLi مقابله کرد. هنگام جستجوی آسیب‌پذیری‌های SQL در صفحاتی که احراز هویت لازم نیست، هیچ مشکلی پیش نمی‌آید:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

یافتن آسیب‌پذیری در صفحاتی که فقط پس از احراز هویت در دسترس هستند، حتی با استفاده از اعتبار امکان‌پذیر نبود شیرینی، از آنجایی که به احتمال زیاد پس از احراز هویت موفقیت آمیز، جلسه آنها "از سیستم خارج می شود" و شیرینی باطل خواهد شد. اگر تابع deauthorization به عنوان یک اسکریپت جداگانه که مسئول پردازش این رویه است پیاده سازی شود، می توان آن را از طریق پارامتر -x کاملاً حذف کرد و در نتیجه از راه اندازی آن جلوگیری کرد. در غیر این صورت امکان حذف پردازش آن وجود نخواهد داشت. این مشکل با یک ماژول خاص نیست، بلکه با ابزار به عنوان یک کل مشکل دارد، اما به دلیل این تفاوت ظریف، تشخیص چندین تزریق در یک منطقه منبع بسته ممکن نبود.

XSS

اسکنر با وظیفه داده شده کاملاً کنار آمد و تمام آسیب پذیری های آماده شده را پیدا کرد:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

LFI/RFI

اسکنر تمام آسیب پذیری های اساسی را پیدا کرد:

Wapiti - بررسی یک سایت برای آسیب پذیری به خودی خود

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

سالم و محافظت بمانید!

منبع: www.habr.com

اضافه کردن نظر