文章总结: 本文详细介绍了Tomcat内存马的查杀技术,包括Servlet、Filter、Listener和Valve四种类型的内存马检测与清除方法。通过获取StandardContext类定位内存马,并提供了具体的代码实现和测试案例。文章解释了如何通过反射获取内部数据结构进行操作,并解答了关于pipeline接口的疑问,强调了接口不具体实现方法的概念。 综合评分: 87 文章分类: WEB安全,漏洞分析,安全工具,实战经验,渗透测试
tomcat内存马再回头、找查杀工具底层类
原创
洞洞拐
安服小兵洞洞拐
2025年12月16日 00:00 河南
·项目地址
https://github.com/h3ll0yoyo9527-techhttps://gitee.com/beiyouyun
〇、前言
·c0ny1大佬之前发了tomcat内存马的查杀工具:获取上下文,再获取映射管理工具进行查杀。主要的管理映射的方法找standardContext类即可找到,下面就是我找的部分方法。还有额外的是通过继承得来的,需要去父类中找。dump方法仍无法下载直接打到内存中的文件。
·关于怎么找到的具体的类,就是网上文章写的那样,打断点,上下调式,文章写了好多类名和方法。不过确实,如果不知道这个底层类,可能都不知道写的是啥,就知道从这蹦到那。
·注入文件网上很多,也可以找AI写,相关文章也很多。实在找不到,私信我。
·工具没有优化很多,只做了拆分,有些禁止卸载的逻辑并未添加等。毕竟不是我写的。尊重原创。
1、Servlet查杀(具体路径找最下方的那行字)
·代码自行下载使用,或使用原版scanner也可。这里已经找到了底层类,查杀工具通过调用来进行查杀。
·测试
·访问注入接口
·利用注入
·排查卸载
2、Filter查杀
·测试
·访问注入接口
·利用注入
·排查卸载
3、Listener查杀
·而卸载方法,通过反射获取内部数据结构后直接操作。而StandardContext是通过set方法重置Listener数组的,没有remove方法。
·测试
·访问注入接口
·利用注入
·排查卸载
4、Valve查杀
·standardContext没有直接的getPipeline()方法,是一层层继承过来的。
·我查到了基础接口
·所以思路仍然是:先获取上下文standardContext,获取pipeline对象,获取接口方法。(具体实现自行看代码)
·注意vavle型由于自身特性,如果注入之后出现空白页面,无法运行成功,可以尝试在注入文件中添加getNext().invoke(request, response); 确保请求继续执行
·测试
·访问注入接口
·利用注入
·排查卸载即可
5、疑问解决
·疑问:接口并不具体实现方法,为什么获取的是pipeline接口(我点击了定义名称pipeline前面的结构名称Pipeline我跳转到了接口界面),按理说V.jsp应该调用pipeline接口的具体实现类里的查杀方法才对。
·其实是个人ctrl+左键点习惯了,应该去找具体的实例的,可能无法直接跳转过去,需要自己按照继承关系去找。反正记住:接口并不具体实现方法
。
查看原文:《tomcat内存马再回头、找查杀工具底层类》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论