
أداة تقوم بتشغيل اختبار للتحقق مما إذا كان أحد تطبيقاتك متأثرًا بالثغرات الأمنية الأخيرة في log4j: CVE-2021-44228 و CVE-2021-45046
log4shell.tools هي أداة تسمح لك بتشغيل اختبار للتحقق مما إذا كان أحد تطبيقاتك متأثرًا بالثغرات الحديثة في log4j: CVE-2021-44228 و CVE-2021-45046.
هذا هو الكود الذي يشغل https://log4shell.alexbakker.me. إذا كنت ترغب في فحص الكود أو تشغيل نسخة في بيئتك الخاصة، فأنت في المكان الصحيح.
تقوم الأداة بإنشاء معرف فريد لك للاختبار به. بعد النقر على 'بدء'، سنقوم بإنشاء نص يشبه هذا: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. انسخه والصقه في أي مكان تعتقد أنه قد ينتهي به الأمر إلى المرور عبر log4j. على سبيل المثال: مربعات البحث، حقول النماذج أو رؤوس HTTP.
عندما ترى نسخة قديمة من log4j هذه السلسلة، ستقوم بعمل بحث DNS للحصول على عنوان IP الخاص بـ *.dns.log4shell.tools. إذا حدث ذلك، يُعتبر ذلك أول علامة على الثغرة الأمنية لتسرب المعلومات. بعد ذلك، ستحاول إجراء طلب بحث LDAP إلى log4shell.tools:12345. تستجيب الأداة بوصف لفئة Java، بالإضافة إلى رابط للحصول عليها. قد تحاول log4j حتى جلب ملف الفئة. ستعيد الأداة رمز 404 وتختتم الاختبار.
تم اختبار الأداة مع Go 1.16. تأكد من تثبيته (أو إصدار أحدث من Go) وقم بتشغيل الأمر التالي:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
سيكون الملف الثنائي متاحًا في $GOPATH/bin
بما أن هذه الأداة تُجمع في ملف ثنائي واحد، كل ما عليك فعله هو تشغيلها لبدء استضافة نسخة من log4shell.tools بنفسك. لجعلها قابلة للوصول من أجهزة أخرى في شبكتك، ستحتاج إلى تمرير بعض العلامات لمنع الأداة من الاستماع فقط على واجهة الحلقة المحلية. إذا كنت تعرض هذا للإنترنت، فربما ترغب أيضًا في وضع وكيل عكسي أمام خادم HTTP. تجاهل خيارات DNS الآن، فهي ليست ضرورية للنشر الداخلي البسيط.
للحصول على القائمة الكاملة للعلامات المتاحة، قم بتشغيل log4shell-tools-server -h:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
تستخدم الأداة نظام التخزين في الذاكرة بشكل افتراضي. إذا كنت بحاجة إلى استمرار نتائج الاختبار عبر عمليات إعادة التشغيل، فقد ترغب في استخدام نظام Postgres بدلاً من ذلك.
خادم DNS معطل افتراضيًا، لأن خيارات تكوينه محددة حاليًا بشكل كبير للإعداد في https://log4shell.alexbakker.me. أخبرني إذا كنت ترغب في المساعدة في جعلها أكثر عمومية.