Tomcat日志中查找安全漏洞的关键步骤与方法
Tomcat的核心日志文件集中在logs目录下,其中与安全分析最相关的两类日志为:
localhost_access_log.2025-04-25.txt):记录所有HTTP请求的详细信息(IP地址、时间、请求方法、URL、状态码等),是检测外部攻击的主要来源;catalina.out或localhost.<date>.log):记录运行时异常(如SQL语法错误、权限拒绝、类加载失败等),可反映系统被利用的痕迹。'、双引号"、OR 1=1、UNION SELECT等),例如:GET /login.jsp?username=admin'--&password=123 HTTP/1.1(--为SQL注释符,用于绕过密码验证);java.sql.SQLException: Incorrect syntax near ''),说明攻击者通过注入非法SQL语句触发了数据库报错。<script>、alert()、onerror=等),例如:GET /search?q=<script>alert(1)</script> HTTP/1.1;http://evil.com/attack.html),且请求携带合法用户会话Cookie(如JSESSIONID=xxxx),则可能是CSRF攻击;POST /upload)且文件名包含可疑扩展名(如.jsp、.jspx、.php),例如:POST /upload?filename=test.jsp HTTP/1.1;FileUploadException或文件路径泄露(如/WEB-INF/classes/下的非法文件);若上传失败,可能出现Invalid file type等提示,说明攻击者在尝试突破文件类型限制。404 Not Found错误(如同一IP在1分钟内请求100次不存在的页面),可能是扫描工具(如Nikto、DirBuster)在探测敏感路径;GET请求,占用大量带宽或线程池资源,可能是DDoS攻击;/admin、/manager/html(Tomcat管理后台)、/WEB-INF/config.xml(配置文件)等敏感路径,说明攻击者在尝试未授权访问。grep、awk等命令快速筛选关键信息,例如:grep "404" /opt/tomcat/logs/access_log(查找所有404错误);grep "SQLException" /opt/tomcat/logs/catalina.out(查找SQL异常);conf/logging.properties中调整日志级别(如org.apache.catalina.level=DEBUG),捕获更多细节(如请求参数、会话信息),但需平衡性能与日志量;logging.properties设置日志分割(如java.util.logging.FileHandler.limit=50000,限制单个日志文件大小为50MB),避免日志文件过大导致分析困难;conf/server.xml限制管理后台访问IP(如<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />),启用HTTPS加密通信;