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 目录扫描发现
- 发现
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错误配置
- 问题配置:
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="true"> 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.propertieslogback-spring.xml