در این مقاله آموزشی قصد دارم تا شمارا با تست نفوذ پروتکل HTTP آشنا کنم. پروتکل HTTP برای دسترسی به صفحات وب میان کلاینت و سرور استفاده میشود. این پروتوکل امکان دارد شامل یکسری آسیبپذیری باشد و در صورت وجود آسیبپذیری در این پروتکل امکان سوءاستفاده توسط یک هکر وجود دارد. در ادامه به روشهایی که برای تست نفوذ وب پروتکل HTTP وجود دارد میپردازیم.
نحوه تست نفوذ پروتکل HTTP
پروتکل HTTP از تعدادی متد برای ایفای Action بر روی وب سرور استفاده میکند. در حالی متدهای GET و POST جز معمولترین متدها برای دسترسی به اطلاعات یک وب سرور و تست نفوذ وب هستند، پروتکل HTTP به شما اجازه میدهد که در صورت Misconfiguration وب سرور از متدهای دیگر نیز برای اهداف مخرب استفاده کنید. پروتکل HTTP شامل متدهای زیر است:
- GET
- HEAD
- POST
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
انواع تست نفوذ وب پروتکل HTTP
- شناسایی متدهای پروتکل HTTP
- تست برای Access Control Bypass
- تست آسیبپذیری XST
- تست HTTP Method Overriding
شناسایی متدهای پروتکل HTTP
در این مرحله تست نفوذ وب، تستر بایستی متدهایی که توسط وب سرور ساپورت میشود را شناسایی کند. درحالیکه متد Options روشی برای شناسایی متدهای سمت وب سرور است بایستی یک تستر با ایجاد درخواستهای مختلف و بررسی Response از سمت سرور متدهای سمت سرور را شناسایی کند. این روش در تست نفوذ وب معمولاً بهصورت Manual انجام میشود. شما میتوانید با استفاده از ابزار NMAP و اسکریپت http-methods تست Manual را برای شناسایی متدهای وب سرور و تست نفوذ وب انجام دهید.
تست متد PUT
برای این تست مراحل زیر را انجام دهید:
- Request به سمت Target را توسط Web Proxy خود Capture کنید.
- در این مرحله Request Method را به PUT تغییر دهید و یک فایل html را به درخواست خود اضافه کنید. سپس درخواست را به سمت وب سرور ارسال کنید.
- درصورتیکه در Response از سمت وب سرور HTTP Status Code های ۲XX که به معنی Success و یا ۳XX که معنی Redirection هست گرفتید به این معنی که متد GET بر روی وب سرور آسیبپذیر است.
تست نفوذ وب برای Access Control Bypass
در این تست نفوذ وب بایستی صفحهای از سایت را پیدا کنید که در صورتی به آن GET Request بدهید سرور شمارا HTTP Status Code 300 به یک Login Page ارسال کند. در این حالت سعی کنید با تغییر متد GET به متدهای POST یا HEAD و یا PUT درخواست خود را به سمت وب سرور ارسال کنید. درصورتیکه سرور با یک HTTP/1.1 200 OK پاسخ دهد ممکن Authentication یا Authorization سایت Bypass شود.
درصورتیکه سیستم آسیبپذیر باشد شما میتوانید از CSRF Attack برای Exploit کردن سایت استفاده کنید. میتوانید از درخواستهای زیر برای این منظور استفاده کنید:
با استفاده از دستورات بالا میتوان یک User ایجاد کرد و برای آنیک پسورد SET کرد. سپس در قدم بعدی User مربوطه را به گروه Admin اختصاص داد. همه این موارد به خاطر این است که درخواستهای شما با متدهای مختلف از سمت وب سرور Submit میشود.
تست Cross-Site Tracing(XST)
هدف از متد Trace برای Test و Debugging بر روی ساختار وب سرور است. این متد جز متدهای خطرناک است. درصورتیکه یک هکر از این متد استفاده کند امکان Steal کردن User Credential ها وجود دارد .
تست Cross-Site Tracing
برای تست نفوذ وب شما میتوانید یک درخواست با متد Trace به سمت سرور ارسال کنید:
همانطوری که در تصویر بالا مشاهده میکنید سرور با HTTP Status Code 200 پاسخ داده و شما میتوانید در این مرحله سرور را با استفاده از کد زیر Exploit کنید.
تست HTTP Method Override
بعضی از فریمورکهای وب روشی را ارائه میدهند که میتواند Actual HTTP Method را در یک Request با یک Custom Header در Request جایگزین یا Override میکند. این به دلیل فایروال و یا پروکسیهای هست که در مسیر درخواست میتوانند درخواستهای PUT یا Delete را Block کنند .
بهعبارتدیگر این فریمورکهای وب از این متدها استفاده میکنند ولی با استفاده از یک Custom Header که توسط آنها ساپورت میشود. در قسمت زیر میتوانید تعدادی از این Custom Header ها را مشاهده کنید.
برای تست بایستی یک درخواستی با متد Delete به سمت سرور ارسال کنید. درصورتیکه در پاسخ کد ۴۰۵ را گرفتید به معنی این است که استفاده از این متد مجاز نیست. در این مرحله میتوانید با اضافه کردن یک Custom Header دوباره از متد Delete استفاده کنید و درخواستی را به سمت وب سرور ارسال کنید.
درصورتیکه سرور پاسخ درخواست را با کد ۲۰۰ دهد به معنی آن است که Method Overriding ساپورت میشود. همانطوری که در تصویر زیر مشاهده میکنید متد Delete توسط سرور مجاز نیست.
همانطوری که در تصویر زیر مشاهده میکنید بعد از اضافه کردن X-HTTP-Method سرور پاسخی با کد ۲۰۰ به شما میدهد.
منابع: https://www.sans.org/cyber-security-courses/web-app-penetration-testing-ethical-hacking https://www.imperva.com/learn/application-security/penetration-testing/
امیدوارم از این مقاله آموزشی لذت برده باشید. درصورتیکه علاقهمند به دورههای تست نفوذ وب هستید میتوانید در دوره تست نفوذ وب آکادمی تکوان ۲۴ شرکت کنید.