
امسح شبكة IP الخاصة بك وحدد المضيفين الذين لديهم ثغرة CVE-2021-44228 المحتملة في مكتبة log4j.
قم بمسح شبكة IP الخاصة بك وحدد المضيفين الذين قد يكون لديهم ثغرة CVE-2021-44228 في مكتبة log4j.
هناك أدوات أفضل وأكثر تقدمًا لتدقيق الأمان، لكن الكثير منها يتطلب برامج اختراق تجارية أو خدمة أو برنامج خارجي تابع لجهة ثالثة.
هذا السكربت كُتب ليكون أداة صغيرة وسريعة ومستقلة. لن يؤكد أن خوادمك وأجهزتك آمنة بنسبة 100%. اعتبره واحدًا من العديد من الأدوات التي يجب استخدامها لتدقيق بيئة تكنولوجيا المعلومات لديك. يمكن استخدامه على عناوين IP خاصة وعامة.
السكربت ليس عرضًا لاستغلال log4shell. لن يتسبب في أي ضرر أو يحاول تنفيذ كود عن بُعد.
ينشئ السكربت طلب HTTPS (للمنافذ المنتهية بـ 443) أو HTTP (لجميع المنافذ الأخرى)، مع سلسلة نصية خاصة في الحقول: User-Agent وX-Api-Version وX-Forwarded-For. هذه السلسلة الخاصة تكون بالصيغة ${jndi:ldap://some_listen_host:port}.
إذا تم استخدام مكتبة log4j الضعيفة لتسجيل نشاط المستخدم (طلب http الخاص بنا) في أي مكان في المسار "مستخدم -> خدمة | موازنات تحميل -> أمان -> خوادم -> تسجيل"، فإنها ستقوم بتحليل سلسلة JNDI ومحاولة إنشاء جلسة LDAP إلى some_listen_host:port الخاص بنا.
إذا قمنا بمراقبة حركة المرور على some_listen_host:port ورصدنا مثل هذه الحزم، يجب فحص مصدرها بشكل أعمق.
المنافذ الافتراضية التي يتم إرسال طلبات http(s) إليها هي 80 و8080 و443 و8443.
يمكن أن يكون هذان المضيفان نفس الجهاز.
على مضيف الاستماع، ابدأ tcpdump لالتقاط الحزم المستلمة على منفذ TCP مجاني. مثال:
tcpdump -nn -i ens160 tcp port 12345
على مضيف Linux، قم بتشغيل السكربت مع المعلمات المطلوبة. مثال:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
سيقوم هذا باختبار شبكة 192.168.0.0/24 محاولًا تشغيل اتصال TCP إلى مضيف الاستماع 192.158.0.3 على المنفذ 12345.
راقب مخرجات tcpdump على مضيف الاستماع. الأهداف المشتبه في إصابتها بثغرة log4j ستقوم بتحليل سلسلة JNDI ومحاولة إنشاء اتصال LDAP.
من غير الفعال وبطيء جدًا مسح جميع المنافذ. نظرًا لاستخدام مكتبة log4j في العديد من المنتجات، حدد أولاً منافذ الويب المستخدمة في بيئتك. قم بتشغيل السكربت مع قائمة المنافذ المخصصة لديك.
هناك العديد من العناصر التي يمكن أن تمنع السكربت والأدوات الأخرى من اكتشاف ثغرة log4j خارجيًا. بعضها: جدران الحماية للشبكة والخوادم، جدران حماية تطبيقات الويب، منافذ tcp مخصصة، عدم تسجيل البرامج/الخدمات للأحداث منخفضة الأهمية (مثل طلب http العادي الخاص بنا)، وصول السكربت إلى عنوان IP بدلاً من اسم المضيف المطلوب، إلخ...
تحقق دائمًا من إشعارات المشروع مفتوح المصدر أو البائع للحصول على تفاصيل حول مشكلة log4j.
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.