扫描你的IP网络,确定可能存在log4j库CVE-2021-44228漏洞的主机。
目前已有更优秀的进阶安全审计工具,但许多需要商业渗透软件或外部第三方服务/软件。
本脚本编写为快速且独立的轻量级工具。它不会确认你的服务器和设备100%安全。请将其视为用于审计IT环境的众多工具之一。可用于私有和公网IP地址。
脚本不是log4shell漏洞利用演示。它不会造成任何伤害或尝试执行远程代码。
脚本创建一个HTTPS(端口以443结尾)或HTTP(所有其他端口)请求,在字段User-Agent、X-Api-Version和X-Forwarded-For中包含特殊字符串。该特殊字符串格式为${jndi:ldap://some_listen_host:port}。
如果在“用户 -> 服务 | 负载均衡 -> 安全 -> 服务器 -> 日志”的路径中,有使用易受攻击log4j库记录用户活动(我们的http请求)的地方,它会解析JNDI字符串并尝试向我们的some_listen_host:port建立LDAP会话。
如果我们监听了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网络,尝试触发到监听主机192.158.0.3端口12345的TCP连接。
在监听主机上监控tcpdump输出。疑似存在log4j漏洞的目标将解析JNDI字符串并尝试建立LDAP连接。
扫描所有端口效率极低且非常慢。由于log4j库已被众多产品使用,请先确定你的环境中使用了哪些Web端口。使用自定义端口列表运行脚本。
有太多因素可能阻碍脚本及其他工具从外部发现log4j漏洞。其中一些因素包括:网络和服务器防火墙、Web应用防火墙、自定义TCP端口、软件/服务不记录低严重性事件(如我们普通的HTTP请求)、脚本访问IP地址而非所需主机名等……
请务必查阅开源项目或软件供应商关于log4j问题的公告以获取详细信息。
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
扫描主机,利用log4j+jndi进行外部连接。
必需参数:
-e LISTENHOST, --listenhost LISTENHOST
用于监控tcp连接的主机[:端口]。可以是与运行脚本相同的主机。
可选参数:
-h, --help 显示帮助信息并退出
-V, --version 显示版本并退出
-p PORTS, --ports PORTS
可选,被测试主机端口的逗号分隔列表。默认:80,8080,443,8443
-l LOG, --log LOG 可选,将输出附加到自定义日志文件。默认:./log4j-quick-scan.log
位置参数:
target 扫描目标:CIDR格式的IP网络。