Tomcat日志文件利用
字数 1841 2025-08-30 06:50:11

Tomcat日志文件利用与配置文件分析教学文档

1. 文件读取漏洞利用案例

1.1 初始信息收集

  • 目标站点:https://xxxx:60119
  • 发现file路径,是一个SOAP WSDL接口
  • 接口需要token认证,但file?wsdl页面显示了存在的操作方法

1.2 文件读取与上传

  • 通过构造请求实现文件读取
  • 发现两个上传接口:
    • 上传文件接口:需要认证
    • 上传图片接口:无需认证,存在任意文件上传漏洞但会验证文件内容是否为图片

1.3 供应商源码结构分析

  • 通过云盘搜索找到供应商系统源码(非目标系统)
  • 分析目录结构发现系统集成了多种中间件
  • 通过../../路径遍历读取中间件配置:
    • 成功读取mysql/my.ini
    • 发现Tomcat目录结构tomcat\RUNNING.txt

1.4 关键配置文件读取

  • 读取conf/server.xml发现:
    • 默认webapps目录被修改为webapp
    • 网站部署路径信息

1.5 Tomcat日志文件利用

  • 日志文件路径:tomcat/logs/
  • 日志文件命名格式:localhost_access_log.YYYY-MM-DD.txt
  • 在日志中发现GET传递的token,利用该token成功登录后台
  • 后台存在任意文件上传漏洞

2. 目录映射错误案例

2.1 目录扫描发现

  • 发现binconflogs等Tomcat相关目录
  • 网站根目录被错误设置为Tomcat目录

2.2 配置文件读取绕过

  • 直接读取conf/server.xml返回403
  • 使用/;/conf/server.xml绕过路径限制
  • 发现Tomcat工程路径指向非标准位置

2.3 配置文件分析

  • web.xml不存在(Tomcat部署可以省略web.xml)
  • 读取WEB-INF/classes/application.yml获取:
    • 鉴权配置
    • 日志配置
    • 文件存储信息

2.4 日志文件分析

  • application.yml发现日志配置指向logback-spring.xml
  • 日志文件路径:/logs/zzxxxx/log_level.log
  • 绕过.log文件读取限制:使用;.txt后缀
  • 从日志中发现:
    • 敏感信息泄露
    • 报错信息包含调用栈和类名

2.5 源码定位

  • 根据日志中的类名定位class文件:
    • /WEB-INF/classes/com/xxx/xxx/controller/SysUserController.class
    • 通过类依赖关系逐步发现更多类文件

3. 漏洞成因分析

3.1 server.xml错误配置

  • 问题配置:
    <Host name="localhost" appBase="" unpackWARs="false" autoDeploy="true">
    
  • appBase属性:
    • 作用:指定虚拟主机部署Web应用的物理目录路径
    • 为空时:默认使用$CATALINA_HOME(Tomcat安装目录)

3.2 本地复现

  • appBase置空后:
    • Tomcat会将安装目录作为Web根目录
    • 导致可以访问Tomcat所有目录和文件

4. 攻击路径总结

4.1 配置文件利用路径

  1. 读取server.xml
  2. 获取网站部署路径
  3. 读取网站配置文件(web.xml/application.yml等)
  4. 读取网站代码
  5. 发现漏洞利用点

4.2 日志文件利用路径

  1. 分析Tomcat各类日志
  2. 发现敏感信息泄露
  3. 获取token或凭证
  4. 利用信息提升权限

5. 防御建议

  1. 正确配置server.xml中的appBase属性
  2. 限制对Tomcat目录的访问
  3. 对日志文件进行访问控制
  4. 避免在日志中记录敏感信息
  5. 使用安全的文件上传验证机制
  6. 对路径遍历攻击进行防护

6. 关键知识点

  1. Tomcat目录结构:

    • bin/:启动脚本
    • conf/:配置文件
    • logs/:日志文件
    • webapps/:默认应用部署目录
  2. 重要配置文件:

    • server.xml:主配置文件
    • web.xml:应用部署描述文件
    • context.xml:上下文配置
  3. 日志文件类型:

    • catalina.out:标准输出和错误
    • localhost_access_log.*.txt:访问日志
    • localhost.*.log:其他日志
  4. 绕过技巧:

    • 路径限制绕过:/;/path/to/file
    • 文件后缀限制:.log;.txt
  5. Spring相关配置文件:

    • application.yml/application.properties
    • logback-spring.xml
Tomcat日志文件利用与配置文件分析教学文档 1. 文件读取漏洞利用案例 1.1 初始信息收集 目标站点: https://xxxx:60119 发现 file 路径,是一个SOAP WSDL接口 接口需要token认证,但 file?wsdl 页面显示了存在的操作方法 1.2 文件读取与上传 通过构造请求实现文件读取 发现两个上传接口: 上传文件接口:需要认证 上传图片接口:无需认证,存在任意文件上传漏洞但会验证文件内容是否为图片 1.3 供应商源码结构分析 通过云盘搜索找到供应商系统源码(非目标系统) 分析目录结构发现系统集成了多种中间件 通过 ../../ 路径遍历读取中间件配置: 成功读取 mysql/my.ini 发现Tomcat目录结构 tomcat\RUNNING.txt 1.4 关键配置文件读取 读取 conf/server.xml 发现: 默认 webapps 目录被修改为 webapp 网站部署路径信息 1.5 Tomcat日志文件利用 日志文件路径: tomcat/logs/ 日志文件命名格式: localhost_access_log.YYYY-MM-DD.txt 在日志中发现GET传递的token,利用该token成功登录后台 后台存在任意文件上传漏洞 2. 目录映射错误案例 2.1 目录扫描发现 发现 bin 、 conf 、 logs 等Tomcat相关目录 网站根目录被错误设置为Tomcat目录 2.2 配置文件读取绕过 直接读取 conf/server.xml 返回403 使用 /;/conf/server.xml 绕过路径限制 发现Tomcat工程路径指向非标准位置 2.3 配置文件分析 web.xml 不存在(Tomcat部署可以省略web.xml) 读取 WEB-INF/classes/application.yml 获取: 鉴权配置 日志配置 文件存储信息 2.4 日志文件分析 从 application.yml 发现日志配置指向 logback-spring.xml 日志文件路径: /logs/zzxxxx/log_level.log 绕过.log文件读取限制:使用 ;.txt 后缀 从日志中发现: 敏感信息泄露 报错信息包含调用栈和类名 2.5 源码定位 根据日志中的类名定位class文件: /WEB-INF/classes/com/xxx/xxx/controller/SysUserController.class 通过类依赖关系逐步发现更多类文件 3. 漏洞成因分析 3.1 server.xml错误配置 问题配置: appBase 属性: 作用:指定虚拟主机部署Web应用的物理目录路径 为空时:默认使用 $CATALINA_HOME (Tomcat安装目录) 3.2 本地复现 将 appBase 置空后: Tomcat会将安装目录作为Web根目录 导致可以访问Tomcat所有目录和文件 4. 攻击路径总结 4.1 配置文件利用路径 读取 server.xml 获取网站部署路径 读取网站配置文件(web.xml/application.yml等) 读取网站代码 发现漏洞利用点 4.2 日志文件利用路径 分析Tomcat各类日志 发现敏感信息泄露 获取token或凭证 利用信息提升权限 5. 防御建议 正确配置 server.xml 中的 appBase 属性 限制对Tomcat目录的访问 对日志文件进行访问控制 避免在日志中记录敏感信息 使用安全的文件上传验证机制 对路径遍历攻击进行防护 6. 关键知识点 Tomcat目录结构: bin/ :启动脚本 conf/ :配置文件 logs/ :日志文件 webapps/ :默认应用部署目录 重要配置文件: server.xml :主配置文件 web.xml :应用部署描述文件 context.xml :上下文配置 日志文件类型: catalina.out :标准输出和错误 localhost_access_log.*.txt :访问日志 localhost.*.log :其他日志 绕过技巧: 路径限制绕过: /;/path/to/file 文件后缀限制: .log;.txt Spring相关配置文件: application.yml / application.properties logback-spring.xml