首先使用冰蝎创建一个内存马
成功进入内存马界面
接下来尝试使用findshell查杀,项目主页为
https://github.com/4ra1n/FindShell
服务器上首先部署代码,执行
git clone https://github.com/4ra1n/FindShell.git
然后进入到FindShell目录,打包项目,执行(如果没有mvn命令需要先yum -y install apache-maven安装)
mvn package
打包后在target目录下生成FindShell-1.0.jar文件
通过官方文档得知检测命令为
java -jar FindShell.jar --pid [目标JVM的PID]
我们首先通过jps命令获取jvm的pid
再执行
java -jar FindShell-1.0.jar --pid 2230
发现内存马
如果需要自行分析内容,可以增加--debug参数,执行
java -jar FindShell-1.0.jar --pid 2230 --debug
这样dump出来的class文件会放到out目录下,我们也可以自行反编译class文件分析,下图为反编译看到的内存马内容
发现内存马就需要清理,鉴于内存马可能有多个,且程序也有可能无法全部查出来,有条件的情况下,最好还是可以重启tomcat
----------------20220317补充--------------
参考文章https://xz.aliyun.com/t/10910
程序为了减少dump过多导致性能等问题,做了黑名单,满足黑名单名称的类才会进行dump分析,默认dump的文件比较少,因此我做了下简单修改,让程序不过分影响性能的情况下尽量多dump一些文件分析
1.修改src/main/java/org/sec/util/NameFilter.java 33行if (klassName.contains(k)) {为if (klassName.toLowerCase().contains(k)) { 使其匹配class名称时忽略大小写
2.修改src/main/java/org/sec/Constant.java 增加keyword,框起来的是我自己增加的
增加了cmd,filter,servlet三个
3.修改后重新执行mvn package打包即可