破阵试炼复现

取证

webshell被删除了

题目描述与目标

题目提示:系统里有一个 Tomcat,某天收到通知称系统被攻击,webshell 已被删除。要求找到攻击者残留的痕迹并获取 flag。

已知:拿到服务器登录权限(root)。

目标:通过日志/缓存/残留文件进行取证,定位攻击痕迹,拿到 flag。

“webshell 被删除”说明不能靠访问 shell 本体,而要找:

Tomcat 日志(访问痕迹、执行痕迹)

Tomcat JSP 编译缓存(work/ 目录)

临时目录残留(/tmp、/dev/shm 等)

定时任务/后门等(一般兜底)

JSP webshell 被删,但 Tomcat 会把 JSP 编译成 .java/.class 缓存在 work/ 目录。

所以即使原始 JSP 删除,work/ 里仍可能残留“后门逻辑”,甚至直接泄露 flag。

  1. 确认 Tomcat 进程与路径

    先定位 Tomcat 的运行目录,确认 catalina.base / catalina.home

    1
    ps -ef |grep tomcat

    1

  2. 初步检查日志

    1
    2
    cd /opt/apache-tomcat-8.5.100/logs
    ls

    尝试在 catalina.out 中搜索 flag:

    1
    grep -n "flag" catalina.out

    结果无命中,说明 flag 不在启动日志里

  3. 检查 Tomcat work 目录(JSP 编译缓存)

    work 目录存放 JSP 编译后的 java/class 文件,是此题的关键突破口。

    进入 work:

    1
    2
    cd /opt/apache-tomcat-8.5.100/work
    ls

    按 Tomcat 默认结构逐层进入:

    1
    2
    cd Catalina/localhost/a/org/apache/jsp
    cat login_jsp.java
  4. 得到flag

    1
    String cls = request.getParameter("flag{13dca8e7-347c-4d1e-94b6-c96754b442a6}");

暗影迷踪

一、题目分析

服务器运行 Tomcat

攻击者植入后门

提供 flagcheck 用于校验是否清理干净

目标:彻底清除后门,使 flagcheck 通过

  1. 根据第一题直接到达

    1
    cd /opt/apache-tomcat-8.5.100/webapps

    发现异常应用目录 a,其中存在可疑文件:

    1
    /opt/apache-tomcat-8.5.100/webapps/a/login.jsp

    该 JSP 中存在动态加载并执行恶意代码的逻辑,判定为 Web 后门(JSP 内存马)。

  2. Tomcat 缓存残留确认

    Tomcat 会将 JSP 编译并缓存到 work 目录,即使删除 JSP 文件,缓存仍可能存在。

    缓存路径为:

    1
    /opt/apache-tomcat-8.5.100/work/Catalina/localhost/a/

    若不清理该目录,后门仍会被检测到。

  3. 后门清理

    删除 Web 后门:

    1
    2
    rm -rf /opt/apache-tomcat-8.5.100/webapps/a/login.jsp
    rm /opt/apache-tomcat-8.5.100/webapps/examples/login.jsp

    清除 Tomcat 缓存(关键)

    1
    rm -rf /opt/apache-tomcat-8.5.100/work/Catalina/localhost/*

    删除攻击者残留文件

    1
    rm -f /var/crash/tomcat

    清理定时任务

    1
    crontab -e

诡异的命令执行

只有搜索flag即可得到flag