سلام آخرین قسمت از سری VPN است. اگر هنوز مقالههای قبلی را نخواندهاید، در اینجا پیوندهای سریع برای شما وجود دارد:
پس از اینکه ما تحقیق خود را در Black Hat منتشر کردیم، به دلیل شدت زیاد و تأثیرات بسیار زیاد، مورد توجه و بحثهای زیادی قرار گرفت. بسیاری از مردم مایل به اخبار دست اول هستند و نمیدانند که چه زمانی این اکسپلویت (به خصوص Pulse Secure preAuth one) منتشر خواهد شد. در واقع، ما به سادگی میتوانیم بدون هیچ نگرانی، کل این اکسپلویتها را کنار بگذاریم و در معرض دید رسانههای زیادی قرار بگیریم. با این حال، به عنوان یک شرکت SECURITY، مسئولیت ما این است که جهان را امن تر کنیم. بنابراین ما تصمیم گرفتیم که افشای عمومی را به تعویق بیندازیم تا به جهان زمان بیشتری برای اعمال وصله ها بدهیم!
متاسفانه، سوء استفاده ها توسط شخص دیگری فاش شد. آنها را می توان به راحتی در GitHub[1] [2] [3] و exploit-db[1] پیدا کرد. راستش را بخواهید، نمیتوانیم بگوییم که آنها اشتباه میکنند، زیرا باگها از چندین ماه پیش کاملاً رفع شدهاند، و زمان خود را صرف تغییر/تولید/تولید معکوس کردهاند. اما واقعاً جای بحث برای جامعه امنیتی است: اگر یک سلاح هستهای دارید، چه زمانی برای افشای عمومی آماده است؟ از آمار Bad Packet، تعداد زیادی Fortune 500، ارتش ایالات متحده، دولت ها، موسسات مالی و دانشگاه ها نیز تحت تأثیر این موضوع قرار دارند. حتی 10 سرور ناسا برای این باگ در معرض دید قرار دارند. بنابراین، این افشاگریهای عمومی زودهنگام واقعاً این نهادها را مجبور میکند تا SSL VPN خود را ارتقا دهند، این بخش خوب است.
از سوی دیگر، بخش بد این است که تعداد فزایندهای از باتنتها که اینترنت را اسکن میکنند در این میان وجود دارد. یک اطلاعات همچنین اشاره می کند که در حال حاضر یک گروه APT چین وجود دارد که از این باگ سوء استفاده می کند. این یک فاجعه اینترنتی است. ظاهراً دنیا هنوز آماده نیست. بنابراین، اگر Palo Alto، Fortinet یا Pulse Secure SSL VPN خود را بهروزرسانی نکردهاید، لطفاً آن را در اسرع وقت بهروزرسانی کنید. Pulse Secure برای مدت طولانی در صف تحقیقات ما بوده است زیرا زیرساخت حیاتی Google بود که یکی از اهداف بلندمدت ما است. با این حال، Google از مدل امنیتی Zero Trust استفاده میکند، و بنابراین VPN اکنون حذف شده است.
ما در اواسط دسامبر سال گذشته شروع به بررسی Pulse Secure کردیم. در 2 ماه اول چیزی نگرفتیم. Pulse Secure سبک کدنویسی و آگاهی امنیتی خوبی دارد به طوری که یافتن باگهای پیش پا افتاده دشوار است. اینجا یک مقایسه جالب است، ما فایل دلخواه را با خواندن CVE-2018-13379 در FortiGate SSL VPN در اولین روز تحقیق خود پیدا کردیم…
Pulse Secure نیز عاشق پرل است و تعداد زیادی پسوند Perl را در C++ می نویسد. تعامل بین Perl و C++ نیز برای ما گیج کننده است، اما با آن بیشتر آشنا شدیم در حالی که زمان بیشتری را برای حفاری در آن صرف کردیم. بالاخره اولین خون را در 8 مارس 2019 گرفتیم! این یک سرریز مبتنی بر پشته در رابط مدیریت است! اگرچه این اشکال آنقدرها مفید نیست، پیشرفت تحقیقات ما از آن زمان به بعد رو به رو شد، و ما باگ های بیشتری را کشف کردیم.
ما همه یافته های خود را در 22 مارس 2019 به Pulse Secure PSIRT گزارش کردیم. . پاسخ آنها بسیار سریع است و این آسیب پذیری ها را جدی می گیرند! پس از چندین تماس کنفرانسی با Pulse Secure، آنها تمام اشکالات را فقط ظرف یک ماه برطرف کردند ، و وصله ها را در 24 آوریل 2019 منتشر کردند. میتوانید مشاوره امنیتی دقیق را بررسی کنید!
زمان بسیار خوبی برای کار با Pulse Secure است. از دیدگاه ما، Pulse Secure مسئول ترین فروشنده در بین تمام فروشندگان SSL VPN است که اشکالات را به آنها گزارش کرده ایم!
ما در مجموع 7 آسیب پذیری پیدا کرده ایم. این لیست است. ما هر یک را معرفی خواهیم کرد، اما روی CVE-2019-11510 و CVE-2019-11539 بیشتر تمرکز می کنیم. admin) Stack Buffer Overflow
اسکریپت /dana/cs/cs.cgi شناسه جلسه را در جاوا اسکریپت ارائه میکند. از آنجایی که نوع محتوا روی application/x-javascript تنظیم شده است، میتوانیم حمله XSSI را برای سرقت کوکی DSID انجام دهیم.
حتی بدتر، حفاظت CSRF در Pulse Secure SSL VPN مبتنی بر DSID. با این XSSI، میتوانیم تمام حفاظت CSRF را دور بزنیم!
CVE-2019-11538: خواندن فایل دلخواه پس از تأیید(کاربر)[ازطریقNF19659034]دو آسیبپذیری زیر (CVE-2019-11538 و CVE-2019-11508) بر پیکربندیهای پیشفرض تأثیر نمیگذارند. تنها در صورتی ظاهر میشود که ادمین اشتراکگذاری NFS را برای کاربران VPN پیکربندی کند.
اگر مهاجم بتواند هر فایلی را در سرور NFS راه دور کنترل کند، فقط میتواند یک پیوند نمادین به هر فایلی مانند /etc/passwd ایجاد کند. ، و آن را از رابط وب بخوانید. علت اصلی این است که پیاده سازی NFS سرور راه دور را به عنوان یک دایرکتوری واقعی لینوکس سوار می کند و اسکریپت /dana/fb/nfs/nfb.cgi بررسی نمی کند که آیا فایل مورد دسترسی یک پیوند نمادین است یا خیر. !
CVE-2019-11508: نوشتن فایل دلخواه پس از تأیید (کاربر) از طریق NFS
این فایل کمی شبیه به قبلی است، اما با بردار حمله متفاوت است!
هنگامی که مهاجم بارگذاری میکند یک فایل ZIP به NFS از طریق رابط وب، اسکریپت /dana/fb/nfs/nu.cgi نام فایل را در ZIP پاک نمی کند. بنابراین، یک مهاجم می تواند یک فایل ZIP مخرب بسازد و مسیر را با ../ در نام فایل طی کند! هنگامی که Pulse Secure از حالت فشرده خارج شد، مهاجم می تواند هر چیزی را که می خواهد در هر مسیری آپلود کند!
CGI-سرور [22950]: segfault در 61616161 آی پی 0000000002a80afd SP 00000000ff9a4d50 خطا 4 در DSHC.so [2a2f000+87000]
CVE-2019-11510: خواندن فایل دلخواه پیش از تأیید
در واقع، این شدیدترین اشکال در این زمان است. در اجرای وب سرور است. همانطور که در اسلایدهای ما ذکر شد، Pulse Secure وب سرور و پشته معماری خود را از ابتدا پیاده سازی می کند. اعتبارسنجی مسیر اصلی بسیار دقیق است. با این حال، از نسخه 8.2، Pulse Secure ویژگی جدیدی به نام HTML5 Access معرفی کرد، این ویژگی برای تعامل با Telnet، SSH و RDP توسط مرورگرها است. به لطف این ویژگی جدید، اعتبارسنجی مسیر اصلی شل میشود.
به منظور مدیریت منابع استاتیک، Pulse Secure یک IF-CONDITION جدید ایجاد کرد تا اعتبارسنجی مسیر اصلی را گسترش دهد. کد به اشتباه از request->uri و request->filepath استفاده می کند، به طوری که ما می توانیم /dana/html5acc/guacamole/[2] انتهای 194592 را مشخص کنیم. رشته کوئری برای دور زدن اعتبارسنجی و ایجاد request->filepath به هر فایلی که می خواهید دانلود کنید! ]/dana/html5acc/guacamole/ دوباره در میانه راه. در غیر این صورت، فقط میتوانید پسوندهای فایل محدودی مانند json.، xml. یا . درخواستها
آخرین مورد یک تزریق فرمان در رابط مدیریت است. ما خیلی زود این آسیب پذیری را پیدا کردیم، اما در ابتدا نتوانستیم راهی برای سوء استفاده از آن پیدا کنیم. زمانی که ما در وگاس بودیم، یکی از دوستانم به من گفت که قبلاً همان باگ را پیدا کرده بود، اما راهی برای سوء استفاده از آن پیدا نکرد، بنابراین به فروشنده گزارش نداد.
با این حال، ما این کار را انجام دادیم. ، و ما از آن به روشی بسیار هوشمندانه سوء استفاده می کنیم 🙂
علت اصلی این آسیب پذیری بسیار ساده است. در اینجا یک قطعه کد از /dana-admin/diag/diag.cgi:
# ...$options=tcpdump_123(299129129]691[6000000] CGI :: پرم ( "گزینه" ))؛ # ... زیر tcpdump_options_syntax_check { من $ options=shift;return$optionsifسیستمسیستم[19659042-$9659042](UMdn$9042]0$9659042[UMdn$9045)>&1")==0;بازگشتundef؛09[1]
آنقدر واضح و سرراست است که همه می توانند به این نکته اشاره کنند که یک فرمان تزریقی در پارامتر options وجود دارد! با این حال، آیا به همین راحتی است؟ نه!
برای جلوگیری از آسیب پذیری های احتمالی، Pulse Secure سختی های زیادی را روی محصولات خود اعمال می کند! مانند بررسی یکپارچگی سیستم، سیستم فایل فقط خواندنی و ماژولی برای اتصال همه فراخوانهای خطرناک پرل مانند system، open و این ماژول بک تیک25]029 DSSAFE.pm نامیده می شود. تجزیه کننده خط فرمان خود را پیاده سازی می کند و تغییر مسیرهای I/O را در Perl دوباره پیاده سازی می کند. در اینجا قطعات کد در Gist است.
از قطعات کد، می توانید ببینید که جایگزین سیستم اصلی شده است و بررسی های زیادی را در __parsecmd انجام می دهد. همچنین بسیاری از شخصیتهای بد مانند:
[&*(){}[]`;|?n~<>] را مسدود میکند.
بررسیها بسیار سختگیرانه هستند به طوری که ما نمیتوانیم هیچ دستوری را تزریق کنیم. ما چندین راه برای دور زدن آن تصور کردیم و اولین چیزی که از ذهن من خارج شد تزریق استدلال است. ما تمام آرگومان هایی را که TCPDUMP پشتیبانی می کند فهرست کردیم و دریافتیم که -z postrotate-command ممکن است مفید باشد. اما نکته غم انگیز این است که TCPDUMP در Pulse Secure برای پشتیبانی از این ویژگی شاداب خیلی قدیمی است (نسخه 3.9.4، سپتامبر 2005)، بنابراین ما شکست خوردیم:(
در حین بررسی سیستم، متوجه شدیم که اگرچه webroot فقط خواندنی است، اما همچنان میتوانیم از مکانیسم کش سوء استفاده کنیم. Pulse Secure نتیجه الگو را در /data/runtime/tmp/tt/ ذخیره میکند تا سرعت رندر اسکریپت را افزایش دهد. بنابراین تلاش بعدی ما این است که یک فایل را از طریق آرگومان -w write-file در دایرکتوری کش الگو بنویسید. با این حال، نوشتن یک فایل چند زبانه در هر دو فرمت PCAP و Perl غیرممکن به نظر می رسد.
همانطور که به نظر می رسد به پایان رسیده بودیم. برای تزریق آرگومان، سعی کردیم در پیاده سازی DSSFAFE.pm عمیق تر بگردیم تا ببینیم آیا چیزی وجود دارد که بتوانیم از آن استفاده کنیم یا خیر. در اینجا نقصی در تجزیه کننده خط فرمان پیدا کردیم. اگر یک I/O ناقص وارد کنیم. ریدایرکت، بقیه قسمت تغییر مسیر کوتاه می شود. اگرچه این یک نقص کوچک است، اما به ما کمک کرد تا I/O r را دوباره کنترل کنیم. جهت های الکترونیکی! با این حال، مشکل اینکه ما نمیتوانیم یک اسکریپت معتبر Perl تولید کنیم، همچنان ما را آزار میدهد.
ما در اینجا گیر کردیم، و زمان آن رسیده است که خارج از جعبه فکر کنیم. ایجاد یک اسکریپت معتبر Perl از طریق STDOUT دشوار است، آیا میتوانیم Perl را فقط توسط STDERR بنویسیم؟ پاسخ بله است. هنگامی که TCPDUMP را مجبور می کنیم که یک فایل غیرموجود را از طریق -r read-file بخواند. خطا را نشان میدهد:
tcpdump: [filename]: چنین فایل یا فهرستی وجود ندارد
به نظر میرسد که میتوانیم « جزئی» پیام خطا را کنترل کنیم. سپس نام فایل print 123# را امتحان کردیم، و جادو اتفاق افتاد!
tcpdump: print 123#: چنین فایل یا دایرکتوری وجود ندارد
$ tcpdump -d-r'print 123#' 2>&1 | پرل –
123
اکنون پیام خطا به یک اسکریپت پرل معتبر تبدیل می شود. چرا؟ خوب، بیایید اکنون یک درس Perl 101 داشته باشیم!
همانطور که می بینید، Perl از برچسب GOTO پشتیبانی می کند، بنابراین tcpdump: در Perl یک برچسب معتبر می شود. سپس بقیه را با هشتگ کامنت می گذاریم. با این ترفند خلاقانه، اکنون میتوانیم هر پرل معتبری را تولید کنیم!
در نهایت، از یک نماد ورودی/خروجی ناقص < برای فریب دادن DSSAFE.pm استفاده میکنیم و تجزیهکننده فرمان را تغییر مسیر میدهیم. STDERR به دایرکتوری کش! این اکسپلویت نهایی است:
tcpdump:$x==[1965917] 19659126]$x#: چنین فایل یا فهرستی وجود ندارد
هنگامی که این کار را انجام دادیم، میتوانیم صفحه مربوطه را برای اجرای دستور خود واکشی کنیم:
$ curl https://sslvpn/dana-na/auth/setcookie.cgi
boot bin home lib64 mnt opt proc sys usr var
داده ها و غیره lib گم شده + یافت شده ماژول های pkg sbin tmp
...
تا کنون، کل بخش فنی این تزریق فرمان به پایان رسیده است. با این حال، ما فکر میکنیم که ممکن است راه خلاقانه دیگری برای بهرهبرداری از این وجود داشته باشد، اگر یکی را پیدا کردید، لطفاً به من بگویید! ما به نظارت بر اینترنت ادامه دادیم تا زمان پاسخگویی هر شرکت بزرگ را اندازه گیری کنیم. توییتر یکی از آنهاست. آنها به خاطر برنامه پاداش باگ و خوب برای هکرها شناخته شده اند. با این حال، سوء استفاده از یک روز بلافاصله پس از انتشار پچ نامناسب است. بنابراین ما 30 روز صبر می کنیم تا توییتر SSL VPN خود را ارتقا دهد. اولین کاری که هر روز صبح انجام دادیم این بود که بررسی کنیم آیا توییتر SSL VPN خود را ارتقا می دهد یا خیر! زمان فراموش نشدنی برای ما بود 😛
ما در 28 مه 2019 شروع به هک کردن توییتر کردیم. در طول این عملیات با موانع متعددی مواجه می شویم. اولین مورد این است که اگرچه میتوانیم رمز عبور متن ساده کارکنان توییتر را بدست آوریم، اما هنوز نمیتوانیم به دلیل احراز هویت دو عاملی وارد SSL VPN آنها شویم. در اینجا دو راه برای دور زدن آن پیشنهاد می کنیم. اولین مورد این است که ما مشاهده کردیم توییتر از راه حل Duo استفاده می کند. در این راهنما آمده است:
امنیت برنامه Duo شما به امنیت کلید مخفی شما (کلید) مرتبط است. آن را مانند هر اعتبار حساسی ایمن کنید. آن را با افراد غیرمجاز به اشتراک نگذارید و تحت هیچ شرایطی آن را برای کسی ایمیل نکنید!
بنابراین اگر بتوانیم کلید مخفی را از سیستم استخراج کنیم، میتوانیم از Duo API برای دور زدن 2FA استفاده کنیم. با این حال، ما یک راه سریعتر برای دور زدن آن پیدا کردیم. توییتر ویژگی Roaming Session را فعال کرد که برای افزایش تحرک استفاده میشود و اجازه میدهد یک جلسه از چندین مکان IP انجام شود. برای ورود به سیستم آنها!
تا کنون، ما میتوانیم به اینترانت توییتر دسترسی داشته باشیم. با این وجود، هدف ما دستیابی به اجرای کد است! به نظر مهم تر از دسترسی به اینترانت است. بنابراین ما میخواهیم اشکال تزریق فرمان (CVE-2019-11539) را با هم زنجیره کنیم. خوب، در اینجا، ما با مانع دیگری روبرو شدیم. این رابط مدیریت محدود است!
همانطور که قبلاً ذکر کردیم، اشکال ما در رابط مدیریت است. اما برای ملاحظات امنیتی، اکثر شرکتها این رابط را در حالت عمومی غیرفعال میکنند، بنابراین ما به راه دیگری برای دسترسی به صفحه مدیریت نیاز داریم. اگر مقاله قبلی ما را به دقت خوانده باشید، ممکن است ویژگی “WebVPN” را به خاطر بیاورید! WebVPN یک پروکسی است که به اتصال به هر جایی کمک می کند. بنابراین، بیایید به خودش وصل شویم.
بله، این SSRF است!
در اینجا ما از یک ترفند کوچک برای دور زدن حفاظت های SSRF استفاده می کنیم.
آها! از طریق SSRF ما، اکنون می توانیم رابط را لمس کنیم! سپس، آخرین مانع ظاهر شد. ما هیچ رمز عبور متنی ساده ای از مدیران نداشتیم. وقتی پرل می خواهد داده ها را با رویه های بومی مبادله کند، مانند پسوند Perl در C++ یا وب سرور، از کش برای ذخیره داده ها استفاده می کند. مشکل این است که Pulse Secure فراموش می کند که داده های حساس را پس از تبادل پاک کند، به همین دلیل است که می توانیم رمزهای عبور متن ساده را در حافظه پنهان به دست آوریم. اما عملاً اکثر مدیران فقط برای اولین بار وارد سیستم خود می شوند، بنابراین دریافت رمز عبور متن ساده مدیر دشوار است. تنها چیزی که به دست آوردیم، هش رمز عبور در قالب sha256(md5_crypt(salt,…)) است…
اگر در شکستن هش تجربه داشته باشید، میدانید که چقدر سخت است. بنابراین…
ما یک AWS 72 هستهای را برای شکستن آن راهاندازی کردیم.
ما هش را شکستیم و RCE را با موفقیت دریافت کردیم! من فکر می کنم ما خوش شانس هستیم زیرا از نظر ما، یک سیاست رمز عبور بسیار قوی در کارکنان توییتر وجود دارد. اما به نظر می رسد این سیاست در مورد مدیر اعمال نمی شود. طول رمز عبور مدیر تنها ده است و اولین کاراکتر B است. این در مراحل اولیه صف کرک ما است تا بتوانیم هش را در عرض 3 ساعت بشکنیم.
ما همه یافتههای خود را به توییتر گزارش کردیم و بالاترین جایزه را از آنها دریافت کردیم. اگرچه ما نمی توانیم آن را ثابت کنیم، اما به نظر می رسد این اولین اجرای کد از راه دور در توییتر است! اگر به گزارش کامل علاقه مند هستید، می توانید لینک HackerOne را برای جزئیات بیشتر بررسی کنید.
چگونه چنین حملاتی را کاهش دهیم؟ در اینجا ما چندین توصیه را ارائه می کنیم.
اولین مورد گواهی سمت مشتری است. همچنین موثرترین روش است. بدون گواهی معتبر، اتصال مخرب در طول مذاکره SSL حذف خواهد شد! مورد دوم احراز هویت چند عاملی است. اگرچه ما این بار توییتر 2FA را شکستیم، اما با یک تنظیم مناسب، MFA همچنان می تواند سطح حملات متعدد را کاهش دهد. سپس، حسابرسی گزارش کامل را فعال کنید و به یاد داشته باشید که آن را به یک سرور گزارش خارج از مرز ارسال کنید.
همچنین، فهرست دارایی شرکت خود را به طور منظم انجام دهید و در مشاوره امنیتی فروشنده مشترک شوید. مهمتر از همه، همیشه سیستم خود را به روز نگه دارید!
شرکت ما، DEVCORE، حرفه ای ترین خدمات تیم قرمز را در آسیا ارائه می دهد. در این بخش جایزه، بیایید در مورد چگونگی بیشتر کردن تیم قرمز قرمز صحبت کنیم!
ما همیشه می دانیم که در عملیات تیم قرمز، رایانه شخصی ارزشمندتر است! چندین روش قدیمی برای به خطر انداختن کلاینتهای VPN از طریق SSL VPN وجود دارد، مانند حمله water-hole و جایگزینی عامل VPN. این ویژگی «logon script» است. تقریباً در هر VPN SSL مانند OpenVPN، Fortinet، Pulse Secure و غیره ظاهر می شود. میتواند اسکریپتهای مربوطه را برای نصب فایل-سیستم شبکه یا تغییر جدول مسیریابی پس از برقراری اتصال VPN اجرا کند. می تواند از این ویژگی برای آلوده کردن تمام مشتریان VPN استفاده کند! در اینجا ما از Pulse Secure به عنوان مثال استفاده میکنیم و نشان میدهیم که چگونه نه تنها SSL VPN را به خطر بیندازیم، بلکه همه کلاینتهای متصل خود را نیز در اختیار بگیریم:
خوب، اینجا پایان این سری حمله به SSL VPN است! از یافتههای ما، SSL VPN یک سطح حمله بزرگ است که تعداد کمی از محققان امنیتی در آن جستجو میکنند. ظاهراً سزاوار توجه بیشتری است. ما امیدواریم که این نوع سریال بتواند سایر محققان را تشویق کند تا در این زمینه مشارکت کنند و امنیت شرکت ها را افزایش دهند! ما تحقیقات ابتکاری بیشتری را در آینده منتشر خواهیم کرد 🙂
RARBG یکی دیگر از سایت های تورنت موسیقی جالب است. این سایت در سال 2008 تأسیس شد. از آن زمان، طبق فهرست سالانه TorrentFreak، TorrentFreak همیشه آن را به عنوان یکی از پربازدیدترین وب سایت های تورنت معرفی کرده است.
در ژوئن 2021، زمانی که رتبه بندی سال منتشر شد، در جایگاه پنجم قرار گرفت. . مانند سایر سایتهای تورنت، با به اشتراکگذاری فایل p2p از طریق پروتکل BitTorrent کار میکند.
اما این سایت از آپلود تورنتهای کاربران جلوگیری میکند تا میزان بدافزار موجود را کاهش دهد. این مجموعه گسترده ای از تورنت ها و همچنین جامعه ای قوی از کاربران دارد. جستجوی تکآهنگها و آلبومهای مورد علاقهتان را میتوان بر اساس نام، تاریخ آپلود، دانهها و زالو مرتب کرد. RARBG نسبتاً ایمن است. با این حال، به نفع شماست که سایت را با استفاده از VPN مرور کنید.
به دلایل قانونی، RARBG در بسیاری از کشورهای جهان مسدود شده است، مانند عربستان سعودی و بریتانیا، که در سال 2014 آن را مسدود کردند. امارات متحده عربی ، فنلاند و بلژیک همه آن را در سال 2018 ممنوع کردند.
سلام آخرین قسمت از سری VPN است. اگر هنوز مقالههای قبلی را نخواندهاید، در اینجا پیوندهای سریع برای شما وجود دارد:
پس از اینکه ما تحقیق خود را در Black Hat منتشر کردیم، به دلیل شدت زیاد و تأثیرات بسیار زیاد، مورد توجه و بحثهای زیادی قرار گرفت. بسیاری از مردم مایل به اخبار دست اول هستند و نمیدانند که چه زمانی این اکسپلویت (به خصوص Pulse Secure preAuth one) منتشر خواهد شد. در واقع، ما به سادگی میتوانیم بدون هیچ نگرانی، کل این اکسپلویتها را کنار بگذاریم و در معرض دید رسانههای زیادی قرار بگیریم. با این حال، به عنوان یک شرکت SECURITY، مسئولیت ما این است که جهان را امن تر کنیم. بنابراین ما تصمیم گرفتیم که افشای عمومی را به تعویق بیندازیم تا به جهان زمان بیشتری برای اعمال وصله ها بدهیم!
متاسفانه، سوء استفاده ها توسط شخص دیگری فاش شد. آنها را می توان به راحتی در GitHub[1] [2] [3] و exploit-db[1] پیدا کرد. راستش را بخواهید، نمیتوانیم بگوییم که آنها اشتباه میکنند، زیرا باگها از چندین ماه پیش کاملاً رفع شدهاند، و زمان خود را صرف تغییر/تولید/تولید معکوس کردهاند. اما واقعاً جای بحث برای جامعه امنیتی است: اگر یک سلاح هستهای دارید، چه زمانی برای افشای عمومی آماده است؟ از آمار Bad Packet، تعداد زیادی Fortune 500، ارتش ایالات متحده، دولت ها، موسسات مالی و دانشگاه ها نیز تحت تأثیر این موضوع قرار دارند. حتی 10 سرور ناسا برای این باگ در معرض دید قرار دارند. بنابراین، این افشاگریهای عمومی زودهنگام واقعاً این نهادها را مجبور میکند تا SSL VPN خود را ارتقا دهند، این بخش خوب است.
از سوی دیگر، بخش بد این است که تعداد فزایندهای از باتنتها که اینترنت را اسکن میکنند در این میان وجود دارد. یک اطلاعات همچنین اشاره می کند که در حال حاضر یک گروه APT چین وجود دارد که از این باگ سوء استفاده می کند. این یک فاجعه اینترنتی است. ظاهراً دنیا هنوز آماده نیست. بنابراین، اگر Palo Alto، Fortinet یا Pulse Secure SSL VPN خود را بهروزرسانی نکردهاید، لطفاً آن را در اسرع وقت بهروزرسانی کنید. Pulse Secure برای مدت طولانی در صف تحقیقات ما بوده است زیرا زیرساخت حیاتی Google بود که یکی از اهداف بلندمدت ما است. با این حال، Google از مدل امنیتی Zero Trust استفاده میکند، و بنابراین VPN اکنون حذف شده است.
ما در اواسط دسامبر سال گذشته شروع به بررسی Pulse Secure کردیم. در 2 ماه اول چیزی نگرفتیم. Pulse Secure سبک کدنویسی و آگاهی امنیتی خوبی دارد به طوری که یافتن باگهای پیش پا افتاده دشوار است. اینجا یک مقایسه جالب است، ما فایل دلخواه را با خواندن CVE-2018-13379 در FortiGate SSL VPN در اولین روز تحقیق خود پیدا کردیم…
Pulse Secure نیز عاشق پرل است و تعداد زیادی پسوند Perl را در C++ می نویسد. تعامل بین Perl و C++ نیز برای ما گیج کننده است، اما با آن بیشتر آشنا شدیم در حالی که زمان بیشتری را برای حفاری در آن صرف کردیم. بالاخره اولین خون را در 8 مارس 2019 گرفتیم! این یک سرریز مبتنی بر پشته در رابط مدیریت است! اگرچه این باگ چندان مفید نیست، پیشرفت تحقیقات ما از آن زمان به بعد رو به رو شد و ما باگ های بیشتری را کشف کردیم.
ما همه یافته های خود را در 22 مارس 2019 به Pulse Secure PSIRT گزارش کردیم. . پاسخ آنها بسیار سریع است و این آسیب پذیری ها را جدی می گیرند! پس از چندین تماس کنفرانسی با Pulse Secure، آنها تمام اشکالات را فقط ظرف یک ماه برطرف کردند ، و وصله ها را در 24 آوریل 2019 منتشر کردند. میتوانید مشاوره امنیتی دقیق را بررسی کنید!
زمان بسیار خوبی برای کار با Pulse Secure است. از دیدگاه ما، Pulse Secure مسئول ترین فروشنده در بین تمام فروشندگان SSL VPN است که اشکالات را به آنها گزارش کرده ایم!
ما در مجموع 7 آسیب پذیری پیدا کرده ایم. این لیست است. ما هر یک را معرفی خواهیم کرد، اما روی CVE-2019-11510 و CVE-2019-11539 بیشتر تمرکز می کنیم. admin) Stack Buffer Overflow
اسکریپت /dana/cs/cs.cgi شناسه جلسه را در جاوا اسکریپت ارائه میکند. از آنجایی که نوع محتوا روی application/x-javascript تنظیم شده است، میتوانیم حمله XSSI را برای سرقت کوکی DSID انجام دهیم!
حتی بدتر، حفاظت CSRF در Pulse Secure SSL VPN مبتنی بر DSID. با این XSSI، میتوانیم تمام حفاظت CSRF را دور بزنیم!
CVE-2019-11538: خواندن فایل دلخواه پس از تأیید(کاربر)[ازطریقNF19659034]دو آسیبپذیری زیر (CVE-2019-11538 و CVE-2019-11508) بر پیکربندیهای پیشفرض تأثیر نمیگذارند. تنها در صورتی ظاهر میشود که ادمین اشتراکگذاری NFS را برای کاربران VPN پیکربندی کند.
اگر مهاجم بتواند هر فایلی را در سرور NFS راه دور کنترل کند، فقط میتواند یک پیوند نمادین به هر فایلی مانند /etc/passwd ایجاد کند. ، و آن را از رابط وب بخوانید. علت اصلی این است که پیاده سازی NFS سرور راه دور را به عنوان یک دایرکتوری واقعی لینوکس سوار می کند و اسکریپت /dana/fb/nfs/nfb.cgi بررسی نمی کند که آیا فایل مورد دسترسی یک پیوند نمادین است یا خیر. !
CVE-2019-11508: نوشتن فایل دلخواه پس از تأیید (کاربر) از طریق NFS
این فایل کمی شبیه به قبلی است، اما با بردار حمله متفاوت است!
هنگامی که مهاجم بارگذاری میکند یک فایل ZIP به NFS از طریق رابط وب، اسکریپت /dana/fb/nfs/nu.cgi نام فایل را در ZIP پاک نمی کند. بنابراین، یک مهاجم می تواند یک فایل ZIP مخرب بسازد و مسیر را با ../ در نام فایل طی کند! هنگامی که Pulse Secure از حالت فشرده خارج شد، مهاجم میتواند هر چیزی را که میخواهد در هر مسیری آپلود کند!
CGI-سرور [22950]: segfault در 61616161 آی پی 0000000002a80afd SP 00000000ff9a4d50 خطا 4 در DSHC.so [2a2f000+87000]
CVE-2019-11510: خواندن فایل دلخواه پیش از تأیید
در واقع، این شدیدترین اشکال در این زمان است. در اجرای وب سرور است. همانطور که در اسلایدهای ما ذکر شد، Pulse Secure وب سرور و پشته معماری خود را از ابتدا پیاده سازی می کند. اعتبارسنجی مسیر اصلی بسیار دقیق است. با این حال، از نسخه 8.2، Pulse Secure ویژگی جدیدی به نام HTML5 Access معرفی کرد، این ویژگی برای تعامل با Telnet، SSH و RDP توسط مرورگرها است. به لطف این ویژگی جدید، اعتبارسنجی مسیر اصلی شل میشود.
به منظور مدیریت منابع استاتیک، Pulse Secure یک IF-CONDITION جدید ایجاد کرد تا اعتبارسنجی مسیر اصلی را گسترش دهد. کد به اشتباه از request->uri و request->filepath استفاده می کند، به طوری که ما می توانیم /dana/html5acc/guacamole/[2] انتهای 194592 را مشخص کنیم. رشته کوئری برای دور زدن اعتبارسنجی و ایجاد request->filepath به هر فایلی که می خواهید دانلود کنید! ]/dana/html5acc/guacamole/ دوباره در میانه راه. در غیر این صورت، فقط میتوانید پسوندهای فایل محدودی مانند json.، xml. یا . درخواستها
آخرین مورد یک تزریق فرمان در رابط مدیریت است. ما خیلی زود این آسیب پذیری را پیدا کردیم، اما در ابتدا نتوانستیم راهی برای سوء استفاده از آن پیدا کنیم. زمانی که ما در وگاس بودیم، یکی از دوستانم به من گفت که قبلاً همان باگ را پیدا کرده بود، اما راهی برای سوء استفاده از آن پیدا نکرد، بنابراین به فروشنده گزارش نداد.
با این حال، ما این کار را انجام دادیم. ، و ما از آن به روشی بسیار هوشمندانه سوء استفاده می کنیم 🙂
علت اصلی این آسیب پذیری بسیار ساده است. در اینجا یک قطعه کد از /dana-admin/diag/diag.cgi:
# ...$options=tcpdump_123(299129129]691[6000000] CGI :: پرم ( "گزینه" ))؛ # ... زیر tcpdump_options_syntax_check { من $ options=shift;return$optionsifسیستمسیستم[19659042-$9659042](UMdn$9042]0$9659042[UMdn$9045)>&1")==0;بازگشتundef؛09[1]
آنقدر واضح و سرراست است که همه می توانند به این نکته اشاره کنند که یک فرمان تزریقی در پارامتر options وجود دارد! با این حال، آیا به همین راحتی است؟ نه!
برای جلوگیری از آسیب پذیری های احتمالی، Pulse Secure سختی های زیادی را روی محصولات خود اعمال می کند! مانند بررسی یکپارچگی سیستم، سیستم فایل فقط خواندنی و ماژولی برای اتصال همه فراخوانهای خطرناک پرل مانند system، open و این ماژول بک تیک25]029 DSSAFE.pm نامیده می شود. تجزیه کننده خط فرمان خود را پیاده سازی می کند و تغییر مسیرهای I/O را در Perl دوباره پیاده سازی می کند. در اینجا قطعات کد در Gist است.
از قطعات کد، می توانید ببینید که جایگزین سیستم اصلی شده است و بررسی های زیادی را در __parsecmd انجام می دهد. همچنین بسیاری از شخصیتهای بد مانند:
[&*(){}[]`;|?n~<>] را مسدود میکند.
بررسیها بسیار سختگیرانه هستند به طوری که ما نمیتوانیم هیچ دستوری را تزریق کنیم. ما چندین راه برای دور زدن آن تصور کردیم و اولین چیزی که از ذهن من خارج شد تزریق استدلال است. ما تمام آرگومان هایی را که TCPDUMP پشتیبانی می کند فهرست کردیم و دریافتیم که -z postrotate-command ممکن است مفید باشد. اما نکته غم انگیز این است که TCPDUMP در Pulse Secure برای پشتیبانی از این ویژگی شاداب خیلی قدیمی است (نسخه 3.9.4، سپتامبر 2005)، بنابراین ما شکست خوردیم:(
در حین بررسی سیستم، متوجه شدیم که اگرچه webroot فقط خواندنی است، اما همچنان میتوانیم از مکانیسم کش سوء استفاده کنیم. Pulse Secure نتیجه الگو را در /data/runtime/tmp/tt/ ذخیره میکند تا سرعت رندر اسکریپت را افزایش دهد. بنابراین تلاش بعدی ما این است که یک فایل را از طریق آرگومان -w write-file در دایرکتوری کش الگو بنویسید. با این حال، نوشتن یک فایل چند زبانه در هر دو فرمت PCAP و Perl غیرممکن به نظر می رسد.
همانطور که به نظر می رسد به پایان رسیده بودیم. برای تزریق آرگومان، سعی کردیم در پیاده سازی DSSFAFE.pm عمیق تر بگردیم تا ببینیم آیا چیزی وجود دارد که بتوانیم از آن استفاده کنیم یا خیر. در اینجا نقصی در تجزیه کننده خط فرمان پیدا کردیم. اگر یک I/O ناقص وارد کنیم. ریدایرکت، بقیه قسمت تغییر مسیر کوتاه می شود. اگرچه این یک نقص کوچک است، اما به ما کمک کرد تا I/O r را دوباره کنترل کنیم. جهت های الکترونیکی! با این حال، مشکل اینکه ما نمیتوانیم یک اسکریپت معتبر Perl تولید کنیم، همچنان ما را آزار میدهد.
ما در اینجا گیر کردیم، و زمان آن رسیده است که خارج از جعبه فکر کنیم. ایجاد یک اسکریپت معتبر Perl از طریق STDOUT دشوار است، آیا میتوانیم Perl را فقط توسط STDERR بنویسیم؟ پاسخ بله است. هنگامی که TCPDUMP را مجبور می کنیم که یک فایل غیرموجود را از طریق -r read-file بخواند. خطا را نشان میدهد:
tcpdump: [filename]: چنین فایل یا فهرستی وجود ندارد
به نظر میرسد که میتوانیم « جزئی» پیام خطا را کنترل کنیم. سپس نام فایل print 123# را امتحان کردیم، و جادو اتفاق افتاد!
tcpdump: print 123#: چنین فایل یا دایرکتوری وجود ندارد
$ tcpdump -d-r'print 123#' 2>&1 | پرل –
123
اکنون پیام خطا به یک اسکریپت پرل معتبر تبدیل می شود. چرا؟ خوب، بیایید اکنون یک درس Perl 101 داشته باشیم!
همانطور که می بینید، Perl از برچسب GOTO پشتیبانی می کند، بنابراین tcpdump: در Perl یک برچسب معتبر می شود. سپس بقیه را با هشتگ کامنت می گذاریم. با این ترفند خلاقانه، اکنون میتوانیم هر پرل معتبری را تولید کنیم!
در نهایت، از یک نماد ورودی/خروجی ناقص < برای فریب دادن DSSAFE.pm استفاده میکنیم و تجزیهکننده فرمان را تغییر مسیر میدهیم. STDERR به دایرکتوری کش! این اکسپلویت نهایی است:
tcpdump:$x==[1965917] 19659126]$x#: چنین فایل یا فهرستی وجود ندارد
هنگامی که این کار را انجام دادیم، میتوانیم صفحه مربوطه را برای اجرای دستور خود واکشی کنیم:
$ curl https://sslvpn/dana-na/auth/setcookie.cgi
boot bin home lib64 mnt opt proc sys usr var
داده ها و غیره lib گم شده + یافت شده ماژول های pkg sbin tmp
...
تا کنون، کل بخش فنی این تزریق فرمان به پایان رسیده است. با این حال، ما فکر میکنیم که ممکن است راه خلاقانه دیگری برای بهرهبرداری از این وجود داشته باشد، اگر یکی را پیدا کردید، لطفاً به من بگویید! ما به نظارت بر اینترنت ادامه دادیم تا زمان پاسخگویی هر شرکت بزرگ را اندازه گیری کنیم. توییتر یکی از آنهاست. آنها به خاطر برنامه پاداش باگ و خوب برای هکرها شناخته شده اند. با این حال، سوء استفاده از یک روز بلافاصله پس از انتشار پچ نامناسب است. بنابراین ما 30 روز صبر می کنیم تا توییتر SSL VPN خود را ارتقا دهد. اولین کاری که هر روز صبح انجام دادیم این بود که بررسی کنیم آیا توییتر SSL VPN خود را ارتقا می دهد یا خیر! زمان فراموش نشدنی برای ما بود 😛
ما در 28 مه 2019 شروع به هک کردن توییتر کردیم. در طی این عملیات با موانع متعددی مواجه می شویم. اولین مورد این است که اگرچه میتوانیم رمز عبور متن ساده کارکنان توییتر را بدست آوریم، اما هنوز نمیتوانیم به دلیل احراز هویت دو عاملی وارد SSL VPN آنها شویم. در اینجا دو راه برای دور زدن آن پیشنهاد می کنیم. اولین مورد این است که ما مشاهده کردیم توییتر از راه حل Duo استفاده می کند. در این راهنما آمده است:
امنیت برنامه Duo شما به امنیت کلید مخفی شما (کلید) مرتبط است. آن را مانند هر اعتبار حساسی ایمن کنید. آن را با افراد غیرمجاز به اشتراک نگذارید و تحت هیچ شرایطی آن را برای کسی ایمیل نکنید!
بنابراین اگر بتوانیم کلید مخفی را از سیستم استخراج کنیم، میتوانیم از Duo API برای دور زدن 2FA استفاده کنیم. با این حال، ما یک راه سریعتر برای دور زدن آن پیدا کردیم. توییتر ویژگی Roaming Session را فعال کرد که برای افزایش تحرک استفاده میشود و اجازه میدهد یک جلسه از چندین مکان IP انجام شود.
با توجه به این ویژگی « راحت»، ما فقط میتوانیم پایگاه داده جلسه را دانلود کرده و کوکیهای خود را جعل کنیم. برای ورود به سیستم آنها!
تا کنون، ما میتوانیم به اینترانت توییتر دسترسی داشته باشیم. با این وجود، هدف ما دستیابی به اجرای کد است! به نظر مهم تر از دسترسی به اینترانت است. بنابراین ما میخواهیم اشکال تزریق فرمان (CVE-2019-11539) را با هم زنجیره کنیم. خوب، در اینجا، ما با مانع دیگری روبرو شدیم. این رابط مدیریت محدود است!
همانطور که قبلاً ذکر کردیم، اشکال ما در رابط مدیریت است. اما برای ملاحظات امنیتی، اکثر شرکتها این رابط را در حالت عمومی غیرفعال میکنند، بنابراین ما به راه دیگری برای دسترسی به صفحه مدیریت نیاز داریم. اگر مقاله قبلی ما را به دقت خوانده باشید، ممکن است ویژگی “WebVPN” را به خاطر بیاورید! WebVPN یک پروکسی است که به اتصال به هر جایی کمک می کند. بنابراین، بیایید به خودش وصل شویم.
بله، این SSRF است!
در اینجا ما از یک ترفند کوچک برای دور زدن حفاظت های SSRF استفاده می کنیم.
آها! از طریق SSRF ما، اکنون می توانیم رابط را لمس کنیم! سپس، آخرین مانع ظاهر شد. ما هیچ رمز عبور متنی ساده ای از مدیران نداشتیم. وقتی پرل می خواهد داده ها را با رویه های بومی مبادله کند، مانند پسوند Perl در C++ یا وب سرور، از کش برای ذخیره داده ها استفاده می کند. مشکل این است که Pulse Secure فراموش می کند که داده های حساس را پس از تبادل پاک کند، به همین دلیل است که می توانیم رمزهای عبور متن ساده را در حافظه پنهان به دست آوریم. اما عملاً اکثر مدیران فقط برای اولین بار وارد سیستم خود می شوند، بنابراین دریافت رمز عبور متن ساده مدیر دشوار است. تنها چیزی که به دست آوردیم، هش رمز عبور در قالب sha256(md5_crypt(salt,…)) است…
اگر در شکستن هش تجربه داشته باشید، میدانید که چقدر سخت است. بنابراین…
ما یک AWS 72 هستهای را برای شکستن آن راهاندازی کردیم.
ما هش را شکستیم و RCE را با موفقیت دریافت کردیم! من فکر می کنم ما خوش شانس هستیم زیرا از نظر ما، یک سیاست رمز عبور بسیار قوی در کارکنان توییتر وجود دارد. اما به نظر می رسد این سیاست در مورد مدیر اعمال نمی شود. طول رمز عبور مدیر تنها ده است و اولین کاراکتر B است. این در مراحل اولیه صف کرک ما است تا بتوانیم هش را در عرض 3 ساعت بشکنیم.
ما همه یافتههای خود را به توییتر گزارش کردیم و بالاترین جایزه را از آنها دریافت کردیم. اگرچه ما نمی توانیم آن را ثابت کنیم، اما به نظر می رسد این اولین اجرای کد از راه دور در توییتر است! اگر به گزارش کامل علاقه مند هستید، می توانید لینک HackerOne را برای جزئیات بیشتر بررسی کنید.
چگونه چنین حملاتی را کاهش دهیم؟ در اینجا ما چندین توصیه را ارائه می کنیم.
اولین مورد گواهی سمت مشتری است. همچنین موثرترین روش است. بدون گواهی معتبر، اتصال مخرب در طول مذاکره SSL حذف خواهد شد! دومی، احراز هویت چند عاملی است. اگرچه ما این بار توییتر 2FA را شکستیم، اما با یک تنظیم مناسب، MFA همچنان می تواند سطح حملات متعدد را کاهش دهد. سپس، حسابرسی گزارش کامل را فعال کنید و به یاد داشته باشید که آن را به یک سرور گزارش خارج از مرز ارسال کنید.
همچنین، فهرست دارایی شرکت خود را به طور منظم انجام دهید و در مشاوره امنیتی فروشنده مشترک شوید. مهمتر از همه، همیشه سیستم خود را به روز نگه دارید!
شرکت ما، DEVCORE، حرفه ای ترین خدمات تیم قرمز را در آسیا ارائه می دهد. در این بخش جایزه، بیایید در مورد چگونگی بیشتر کردن تیم قرمز قرمز صحبت کنیم!
ما همیشه می دانیم که در عملیات تیم قرمز، رایانه شخصی ارزشمندتر است! چندین روش قدیمی برای به خطر انداختن کلاینتهای VPN از طریق SSL VPN وجود دارد، مانند حمله water-hole و جایگزینی عامل VPN. این ویژگی «logon script» است. تقریباً در هر VPN SSL مانند OpenVPN، Fortinet، Pulse Secure و غیره ظاهر می شود. میتواند اسکریپتهای مربوطه را برای نصب فایل-سیستم شبکه یا تغییر جدول مسیریابی پس از برقراری اتصال VPN اجرا کند. می تواند از این ویژگی برای آلوده کردن تمام مشتریان VPN استفاده کند! در اینجا ما از Pulse Secure به عنوان مثال استفاده میکنیم و نشان میدهیم که چگونه نه تنها SSL VPN را به خطر بیندازیم، بلکه همه کلاینتهای متصل خود را نیز در اختیار بگیریم:
خوب، اینجا پایان این سری حمله به SSL VPN است! از یافتههای ما، SSL VPN یک سطح حمله بزرگ است که تعداد کمی از محققان امنیتی در آن جستجو میکنند. ظاهراً سزاوار توجه بیشتری است. ما امیدواریم که این نوع سریال بتواند سایر محققان را تشویق کند تا در این زمینه مشارکت کنند و امنیت شرکت ها را افزایش دهند! ما تحقیقات ابتکاری بیشتری را در آینده منتشر خواهیم کرد 🙂
انیمه یک کلمه ژاپنی معروف است که به معنای انیمیشن دستی یا کامپیوتری است. در زبان محاوره ای، انیمه شکل کوتاه شده انیمیشن است. "انیمه" انگلیسی همه انواع فیلم های انیمیشن را بدون در نظر گرفتن منشأ یا سبک توصیف می کند.
خارج از فرهنگ ژاپنی، انیمه ای شبیه به انیمه ژاپنی به عنوان انیمیشن متاثر از انیمیشن شناخته می شود. بسیاری از سایت های انیمه رایگان وجود دارند که می توانید برای لذت تماشای خود به انیمه رایگان دسترسی داشته باشید. با این حال، در دهه 1960 و سالهای بعد پس از آثار اوسامو تزوکا، کاریکاتوریست، مخاطبان داخلی زیادی پیدا کرد. انیمه به اشکال مختلفی مانند بازیهای ویدیویی، رمانهای لایت و کمیک ژاپنی که به عنوان مانگا نیز شناخته میشود، توزیع میشود. با این حال، بیش از 430 شرکت تولید کننده انیمه هستند. با فراگیر شدن زیرنویسهای برنامهریزیشده و دوبلههای خارجی، انیمه به یک موفقیت بینالمللی تبدیل شده است. از طریق اینترنت، سایت های زیادی برای دانلود رایگان انیمه وجود دارد. از بین تمام وب سایت های رایگان برای دانلود انیمه، در اینجا ده مورد از بهترین سایت های انیمیشن رایگان در سال 2021 آورده شده است.
سلام آخرین قسمت از سری VPN است. اگر هنوز مقالههای قبلی را نخواندهاید، در اینجا پیوندهای سریع برای شما وجود دارد:
پس از اینکه ما تحقیق خود را در Black Hat منتشر کردیم، به دلیل شدت زیاد و تأثیرات بسیار زیاد، مورد توجه و بحثهای زیادی قرار گرفت. بسیاری از مردم مایل به اخبار دست اول هستند و نمیدانند که چه زمانی این اکسپلویت (به خصوص Pulse Secure preAuth one) منتشر خواهد شد. در واقع، ما به سادگی میتوانیم بدون هیچ نگرانی، کل این اکسپلویتها را کنار بگذاریم و در معرض دید رسانههای زیادی قرار بگیریم. با این حال، به عنوان یک شرکت SECURITY، مسئولیت ما این است که جهان را امن تر کنیم. بنابراین ما تصمیم گرفتیم که افشای عمومی را به تعویق بیندازیم تا به جهان زمان بیشتری برای اعمال وصله ها بدهیم!
متاسفانه، سوء استفاده ها توسط شخص دیگری فاش شد. آنها را می توان به راحتی در GitHub[1] [2] [3] و exploit-db[1] پیدا کرد. راستش را بخواهید، نمیتوانیم بگوییم که آنها اشتباه میکنند، زیرا باگها از چندین ماه پیش کاملاً رفع شدهاند، و زمان خود را صرف تغییر/تولید/تولید معکوس کردهاند. اما واقعاً جای بحث برای جامعه امنیتی است: اگر یک سلاح هستهای دارید، چه زمانی برای افشای عمومی آماده است؟ از آمار Bad Packet، تعداد زیادی Fortune 500، ارتش ایالات متحده، دولت ها، موسسات مالی و دانشگاه ها نیز تحت تأثیر این موضوع قرار دارند. حتی 10 سرور ناسا برای این باگ در معرض دید قرار دارند. بنابراین، این افشاگریهای عمومی زودهنگام واقعاً این نهادها را مجبور میکند تا SSL VPN خود را ارتقا دهند، این بخش خوب است.
از سوی دیگر، بخش بد این است که تعداد فزایندهای از باتنتها که اینترنت را اسکن میکنند در این میان وجود دارد. یک اطلاعات همچنین اشاره می کند که در حال حاضر یک گروه APT چین وجود دارد که از این باگ سوء استفاده می کند. این یک فاجعه اینترنتی است. ظاهراً دنیا هنوز آماده نیست. بنابراین، اگر Palo Alto، Fortinet یا Pulse Secure SSL VPN خود را بهروزرسانی نکردهاید، لطفاً آن را در اسرع وقت بهروزرسانی کنید. Pulse Secure برای مدت طولانی در صف تحقیقات ما بوده است زیرا زیرساخت حیاتی Google بود که یکی از اهداف بلندمدت ما است. با این حال، Google از مدل امنیتی Zero Trust استفاده میکند، و بنابراین VPN اکنون حذف شده است.
ما در اواسط دسامبر سال گذشته شروع به بررسی Pulse Secure کردیم. در 2 ماه اول چیزی نگرفتیم. Pulse Secure سبک کدنویسی و آگاهی امنیتی خوبی دارد به طوری که یافتن باگهای پیش پا افتاده دشوار است. اینجا یک مقایسه جالب است، ما فایل دلخواه را با خواندن CVE-2018-13379 در FortiGate SSL VPN در اولین روز تحقیق خود پیدا کردیم…
Pulse Secure نیز عاشق پرل است و تعداد زیادی پسوند Perl را در C++ می نویسد. تعامل بین Perl و C++ نیز برای ما گیج کننده است، اما با آن بیشتر آشنا شدیم در حالی که زمان بیشتری را برای حفاری در آن صرف کردیم. بالاخره اولین خون را در 8 مارس 2019 گرفتیم! این یک سرریز مبتنی بر پشته در رابط مدیریت است! اگرچه این اشکال آنقدرها مفید نیست، پیشرفت تحقیقات ما از آن زمان به بعد رو به رو شد، و ما باگ های بیشتری را کشف کردیم.
ما همه یافته های خود را در 22 مارس 2019 به Pulse Secure PSIRT گزارش کردیم. . پاسخ آنها بسیار سریع است و این آسیب پذیری ها را جدی می گیرند! پس از چندین تماس کنفرانسی با Pulse Secure، آنها تمام اشکالات را فقط ظرف یک ماه برطرف کردند ، و وصله ها را در 24 آوریل 2019 منتشر کردند. میتوانید مشاوره امنیتی دقیق را بررسی کنید!
زمان بسیار خوبی برای کار با Pulse Secure است. از دیدگاه ما، Pulse Secure مسئول ترین فروشنده در بین تمام فروشندگان SSL VPN است که اشکالات را به آنها گزارش کرده ایم!
ما در مجموع 7 آسیب پذیری پیدا کرده ایم. این لیست است. ما هر یک را معرفی خواهیم کرد، اما روی CVE-2019-11510 و CVE-2019-11539 بیشتر تمرکز می کنیم. admin) Stack Buffer Overflow
اسکریپت /dana/cs/cs.cgi شناسه جلسه را در جاوا اسکریپت ارائه میکند. از آنجایی که نوع محتوا روی application/x-javascript تنظیم شده است، میتوانیم حمله XSSI را برای سرقت کوکی DSID انجام دهیم!
حتی بدتر، حفاظت CSRF در Pulse Secure SSL VPN مبتنی بر DSID. با این XSSI، میتوانیم تمام حفاظت CSRF را دور بزنیم!
CVE-2019-11538: خواندن فایل دلخواه پس از تأیید(کاربر)[ازطریقNF19659034]دو آسیبپذیری زیر (CVE-2019-11538 و CVE-2019-11508) بر پیکربندیهای پیشفرض تأثیر نمیگذارند. تنها در صورتی ظاهر میشود که ادمین اشتراکگذاری NFS را برای کاربران VPN پیکربندی کند.
اگر مهاجم بتواند هر فایلی را در سرور NFS راه دور کنترل کند، فقط میتواند یک پیوند نمادین به هر فایلی مانند /etc/passwd ایجاد کند. ، و آن را از رابط وب بخوانید. علت اصلی این است که پیاده سازی NFS سرور راه دور را به عنوان یک دایرکتوری واقعی لینوکس سوار می کند و اسکریپت /dana/fb/nfs/nfb.cgi بررسی نمی کند که آیا فایل مورد دسترسی یک پیوند نمادین است یا خیر. !
CVE-2019-11508: نوشتن فایل دلخواه پس از تأیید (کاربر) از طریق NFS
این فایل کمی شبیه به قبلی است، اما با یک بردار حمله متفاوت!
هنگامی که مهاجم بارگذاری میکند یک فایل ZIP به NFS از طریق رابط وب، اسکریپت /dana/fb/nfs/nu.cgi نام فایل را در ZIP پاک نمی کند. بنابراین، یک مهاجم می تواند یک فایل ZIP مخرب بسازد و مسیر را با ../ در نام فایل طی کند! هنگامی که Pulse Secure از حالت فشرده خارج شد، مهاجم می تواند هر چیزی را که می خواهد در هر مسیری آپلود کند!
CGI-سرور [22950]: segfault در 61616161 آی پی 0000000002a80afd SP 00000000ff9a4d50 خطا 4 در DSHC.so [2a2f000+87000]
CVE-2019-11510: خواندن فایل دلخواه پیش از تأیید
در واقع، این شدیدترین اشکال در این زمان است. در اجرای وب سرور است. همانطور که در اسلایدهای ما ذکر شد، Pulse Secure وب سرور و پشته معماری خود را از ابتدا پیاده سازی می کند. اعتبارسنجی مسیر اصلی بسیار دقیق است. با این حال، از نسخه 8.2، Pulse Secure ویژگی جدیدی به نام HTML5 Access معرفی کرد، این ویژگی برای تعامل با Telnet، SSH و RDP توسط مرورگرها است. به لطف این ویژگی جدید، اعتبارسنجی مسیر اصلی شل میشود.
به منظور مدیریت منابع استاتیک، Pulse Secure یک IF-CONDITION جدید ایجاد کرد تا اعتبارسنجی مسیر اصلی را گسترش دهد. کد به اشتباه از request->uri و request->filepath استفاده می کند، به طوری که ما می توانیم /dana/html5acc/guacamole/[2] انتهای 194592 را مشخص کنیم. رشته کوئری برای دور زدن اعتبارسنجی و ایجاد request->filepath به هر فایلی که می خواهید دانلود کنید! ]/dana/html5acc/guacamole/ دوباره در میانه راه. در غیر این صورت، فقط میتوانید پسوندهای فایل محدودی مانند json.، xml. یا . درخواستها
آخرین مورد یک تزریق فرمان در رابط مدیریت است. ما خیلی زود این آسیب پذیری را پیدا کردیم، اما در ابتدا نتوانستیم راهی برای سوء استفاده از آن پیدا کنیم. زمانی که ما در وگاس بودیم، یکی از دوستانم به من گفت که قبلاً همان باگ را پیدا کرده بود، اما راهی برای سوء استفاده از آن پیدا نکرد، بنابراین به فروشنده گزارش نداد.
با این حال، ما این کار را انجام دادیم. ، و ما از آن به روشی بسیار هوشمندانه سوء استفاده می کنیم 🙂
علت اصلی این آسیب پذیری بسیار ساده است. در اینجا یک قطعه کد از /dana-admin/diag/diag.cgi:
# ...$options=tcpdump_123(299129129]691[6000000] CGI :: پرم ( "گزینه" ))؛ # ... زیر tcpdump_options_syntax_check { من $ options=shift;return$optionsifسیستمسیستم[19659042-$9659042](UMdn$9042]0$9659042[UMdn$9045)>&1")==0؛بازگشتundef؛09[1]
آنقدر واضح و سرراست است که همه می توانند به این نکته اشاره کنند که یک فرمان تزریقی در پارامتر options وجود دارد! با این حال، آیا به همین راحتی است؟ نه!
برای جلوگیری از آسیب پذیری های احتمالی، Pulse Secure سختی های زیادی را روی محصولات خود اعمال می کند! مانند بررسی یکپارچگی سیستم، سیستم فایل فقط خواندنی و ماژولی برای اتصال همه فراخوانهای خطرناک پرل مانند system، open و این ماژول بک تیک25]029 DSSAFE.pm نامیده می شود. تجزیه کننده خط فرمان خود را پیاده سازی می کند و تغییر مسیرهای I/O را در Perl دوباره پیاده سازی می کند. در اینجا قطعات کد در Gist است.
از قطعات کد، می توانید ببینید که جایگزین سیستم اصلی شده است و بررسی های زیادی را در __parsecmd انجام می دهد. همچنین بسیاری از شخصیتهای بد مانند:
[&*(){}[]`;|?n~<>] را مسدود میکند.
بررسیها بسیار سختگیرانه هستند به طوری که ما نمیتوانیم هیچ دستوری را تزریق کنیم. ما چندین راه برای دور زدن آن تصور کردیم و اولین چیزی که از ذهن من خارج شد تزریق استدلال است. ما تمام آرگومان هایی را که TCPDUMP پشتیبانی می کند فهرست کردیم و دریافتیم که -z postrotate-command ممکن است مفید باشد. اما نکته غم انگیز این است که TCPDUMP در Pulse Secure برای پشتیبانی از این ویژگی شاداب خیلی قدیمی است (نسخه 3.9.4، سپتامبر 2005)، بنابراین ما شکست خوردیم:(
در حین بررسی سیستم، متوجه شدیم که اگرچه webroot فقط خواندنی است، اما همچنان میتوانیم از مکانیسم کش سوء استفاده کنیم. Pulse Secure نتیجه الگو را در /data/runtime/tmp/tt/ ذخیره میکند تا سرعت رندر اسکریپت را افزایش دهد. بنابراین تلاش بعدی ما این است که یک فایل را از طریق آرگومان -w write-file در دایرکتوری کش الگو بنویسید. با این حال، نوشتن یک فایل چند زبانه در هر دو فرمت PCAP و Perl غیرممکن به نظر می رسد.
همانطور که به نظر می رسد به پایان رسیده بودیم. برای تزریق آرگومان، سعی کردیم در پیاده سازی DSSFAFE.pm عمیق تر بگردیم تا ببینیم آیا چیزی وجود دارد که بتوانیم از آن استفاده کنیم یا خیر. در اینجا نقصی در تجزیه کننده خط فرمان پیدا کردیم. اگر یک I/O ناقص وارد کنیم. ریدایرکت، بقیه قسمت تغییر مسیر کوتاه می شود. اگرچه این یک نقص کوچک است، اما به ما کمک کرد تا I/O r را دوباره کنترل کنیم. جهت های الکترونیکی! با این حال، مشکل اینکه ما نمیتوانیم یک اسکریپت معتبر Perl تولید کنیم، همچنان ما را آزار میدهد.
ما در اینجا گیر کردیم، و زمان آن رسیده است که خارج از جعبه فکر کنیم. ایجاد یک اسکریپت معتبر Perl از طریق STDOUT دشوار است، آیا میتوانیم Perl را فقط توسط STDERR بنویسیم؟ پاسخ بله است. هنگامی که TCPDUMP را مجبور می کنیم که یک فایل غیرموجود را از طریق -r read-file بخواند. خطا را نشان میدهد:
tcpdump: [filename]: چنین فایل یا فهرستی وجود ندارد
به نظر میرسد که میتوانیم « جزئی» پیام خطا را کنترل کنیم. سپس نام فایل print 123# را امتحان کردیم، و جادو اتفاق افتاد!
tcpdump: print 123#: چنین فایل یا دایرکتوری وجود ندارد
$ tcpdump -d-r'print 123#' 2>&1 | پرل –
123
اکنون پیام خطا به یک اسکریپت پرل معتبر تبدیل می شود. چرا؟ خوب، بیایید اکنون یک درس Perl 101 داشته باشیم!
همانطور که می بینید، Perl از برچسب GOTO پشتیبانی می کند، بنابراین tcpdump: در Perl یک برچسب معتبر می شود. سپس بقیه را با هشتگ کامنت می گذاریم. با این ترفند خلاقانه، اکنون میتوانیم هر پرل معتبری را تولید کنیم!
در نهایت، از یک نماد ورودی/خروجی ناقص < برای فریب دادن DSSAFE.pm استفاده میکنیم و تجزیهکننده فرمان را تغییر مسیر میدهیم. STDERR به دایرکتوری کش! این اکسپلویت نهایی است:
tcpdump:$x==[1965917] 19659126]$x#: چنین فایل یا فهرستی وجود ندارد
هنگامی که این کار را انجام دادیم، میتوانیم صفحه مربوطه را برای اجرای دستور خود واکشی کنیم:
$ curl https://sslvpn/dana-na/auth/setcookie.cgi
boot bin home lib64 mnt opt proc sys usr var
داده ها و غیره lib گم شده + یافت شده ماژول های pkg sbin tmp
...
تا کنون، کل بخش فنی این تزریق فرمان به پایان رسیده است. با این حال، ما فکر میکنیم که ممکن است راه خلاقانه دیگری برای بهرهبرداری از این وجود داشته باشد، اگر یکی را پیدا کردید، لطفاً به من بگویید! ما به نظارت بر اینترنت ادامه دادیم تا زمان پاسخگویی هر شرکت بزرگ را اندازه گیری کنیم. توییتر یکی از آنهاست. آنها به خاطر برنامه پاداش باگ و خوب برای هکرها شناخته شده اند. با این حال، سوء استفاده از یک روز بلافاصله پس از انتشار پچ نامناسب است. بنابراین ما 30 روز صبر می کنیم تا توییتر SSL VPN خود را ارتقا دهد. اولین کاری که هر روز صبح انجام دادیم این بود که بررسی کنیم آیا توییتر SSL VPN خود را ارتقا می دهد یا خیر! زمان فراموش نشدنی برای ما بود 😛
ما در 28 مه 2019 شروع به هک کردن توییتر کردیم. در طی این عملیات با موانع متعددی مواجه می شویم. اولین مورد این است که اگرچه میتوانیم رمز عبور متن ساده کارکنان توییتر را بدست آوریم، اما هنوز نمیتوانیم به دلیل احراز هویت دو عاملی وارد SSL VPN آنها شویم. در اینجا دو راه برای دور زدن آن پیشنهاد می کنیم. اولین مورد این است که ما مشاهده کردیم توییتر از راه حل Duo استفاده می کند. در این راهنما آمده است:
امنیت برنامه Duo شما به امنیت کلید مخفی شما (کلید) مرتبط است. آن را مانند هر اعتبار حساسی ایمن کنید. آن را با افراد غیرمجاز به اشتراک نگذارید و تحت هیچ شرایطی آن را برای کسی ایمیل نکنید!
بنابراین اگر بتوانیم کلید مخفی را از سیستم استخراج کنیم، میتوانیم از Duo API برای دور زدن 2FA استفاده کنیم. با این حال، ما یک راه سریعتر برای دور زدن آن پیدا کردیم. توییتر ویژگی Roaming Session را فعال کرد که برای افزایش تحرک استفاده میشود و اجازه میدهد یک جلسه از چندین مکان IP انجام شود.
با توجه به این ویژگی « راحت»، ما فقط میتوانیم پایگاه داده جلسه را دانلود کرده و کوکیهای خود را جعل کنیم. برای ورود به سیستم آنها!
تا کنون، ما میتوانیم به اینترانت توییتر دسترسی داشته باشیم. با این وجود، هدف ما دستیابی به اجرای کد است! به نظر مهم تر از دسترسی به اینترانت است. بنابراین ما میخواهیم اشکال تزریق فرمان (CVE-2019-11539) را با هم زنجیره کنیم. خوب، در اینجا، ما با مانع دیگری روبرو شدیم. این رابط مدیریت محدود است!
همانطور که قبلاً ذکر کردیم، اشکال ما در رابط مدیریت است. اما برای ملاحظات امنیتی، اکثر شرکتها این رابط را در حالت عمومی غیرفعال میکنند، بنابراین ما به راه دیگری برای دسترسی به صفحه مدیریت نیاز داریم. اگر مقاله قبلی ما را به دقت خوانده باشید، ممکن است ویژگی “WebVPN” را به خاطر بیاورید! WebVPN یک پروکسی است که به اتصال به هر جایی کمک می کند. بنابراین، بیایید به خودش وصل شویم.
بله، این SSRF است!
در اینجا ما از یک ترفند کوچک برای دور زدن حفاظت های SSRF استفاده می کنیم.
آها! از طریق SSRF ما، اکنون می توانیم رابط را لمس کنیم! سپس، آخرین مانع ظاهر شد. ما هیچ رمز عبور متنی ساده ای از مدیران نداشتیم. وقتی پرل می خواهد داده ها را با رویه های بومی مبادله کند، مانند پسوند Perl در C++ یا وب سرور، از کش برای ذخیره داده ها استفاده می کند. مشکل این است که Pulse Secure فراموش می کند که داده های حساس را پس از تبادل پاک کند، به همین دلیل است که می توانیم رمزهای عبور متن ساده را در حافظه پنهان به دست آوریم. اما عملاً اکثر مدیران فقط برای اولین بار وارد سیستم خود می شوند، بنابراین دریافت رمز عبور متن ساده مدیر دشوار است. تنها چیزی که به دست آوردیم، هش رمز عبور در قالب sha256(md5_crypt(salt,…)) است…
اگر در شکستن هش تجربه داشته باشید، میدانید که چقدر سخت است. بنابراین…
ما یک AWS 72 هستهای را برای شکستن آن راهاندازی کردیم.
ما هش را شکستیم و RCE را با موفقیت دریافت کردیم! من فکر می کنم ما خوش شانس هستیم زیرا از نظر ما، یک سیاست رمز عبور بسیار قوی در کارکنان توییتر وجود دارد. اما به نظر می رسد این سیاست در مورد مدیر اعمال نمی شود. طول رمز عبور مدیر تنها ده است و اولین کاراکتر B است. این در مراحل اولیه صف کرک ما است تا بتوانیم هش را در عرض 3 ساعت بشکنیم.
ما همه یافتههای خود را به توییتر گزارش کردیم و بالاترین جایزه را از آنها دریافت کردیم. اگرچه ما نمی توانیم آن را ثابت کنیم، اما به نظر می رسد این اولین اجرای کد از راه دور در توییتر است! اگر به گزارش کامل علاقه مند هستید، می توانید لینک HackerOne را برای جزئیات بیشتر بررسی کنید.
چگونه چنین حملاتی را کاهش دهیم؟ در اینجا ما چندین توصیه را ارائه می کنیم.
اولین مورد گواهی سمت مشتری است. همچنین موثرترین روش است. بدون گواهی معتبر، اتصال مخرب در طول مذاکره SSL حذف خواهد شد! مورد دوم احراز هویت چند عاملی است. اگرچه ما این بار توییتر 2FA را شکستیم، اما با یک تنظیم مناسب، MFA همچنان می تواند سطح حملات متعدد را کاهش دهد. سپس، حسابرسی گزارش کامل را فعال کنید و به یاد داشته باشید که آن را به یک سرور گزارش خارج از مرز ارسال کنید.
همچنین، فهرست دارایی شرکت خود را به طور منظم انجام دهید و در مشاوره امنیتی فروشنده مشترک شوید. مهمتر از همه، همیشه سیستم خود را به روز نگه دارید!
شرکت ما، DEVCORE، حرفه ای ترین خدمات تیم قرمز را در آسیا ارائه می دهد. در این بخش جایزه، بیایید در مورد چگونگی بیشتر کردن تیم قرمز قرمز صحبت کنیم!
ما همیشه می دانیم که در عملیات تیم قرمز، رایانه شخصی ارزشمندتر است! چندین روش قدیمی برای به خطر انداختن کلاینتهای VPN از طریق SSL VPN وجود دارد، مانند حمله water-hole و جایگزینی عامل VPN. این ویژگی «logon script» است. تقریباً در هر VPN SSL مانند OpenVPN، Fortinet، Pulse Secure و غیره ظاهر می شود. میتواند اسکریپتهای مربوطه را برای نصب فایل-سیستم شبکه یا تغییر جدول مسیریابی پس از برقراری اتصال VPN اجرا کند. می تواند از این ویژگی برای آلوده کردن تمام مشتریان VPN استفاده کند! در اینجا ما از Pulse Secure به عنوان مثال استفاده میکنیم و نشان میدهیم که چگونه نه تنها SSL VPN را به خطر بیندازیم، بلکه همه کلاینتهای متصل خود را نیز در اختیار بگیریم:
خوب، اینجا پایان این سری حمله به SSL VPN است! از یافتههای ما، SSL VPN یک سطح حمله بزرگ است که تعداد کمی از محققان امنیتی در آن جستجو میکنند. ظاهراً سزاوار توجه بیشتری است. ما امیدواریم که این نوع سریال بتواند سایر محققان را تشویق کند تا در این زمینه مشارکت کنند و امنیت شرکت ها را افزایش دهند! ما تحقیقات ابتکاری بیشتری را در آینده منتشر خواهیم کرد 🙂