关于Tomcat Filter型内存马的介绍资料有很多,但是Jetty Filter型内存马的资料很少,本文将要参照Tomcat Filter型内存马的设计思路,介绍Jetty Filter型内存马的实现思路和细节。
本文将要介绍以下内容:
Jetty调试环境搭建
实现思路
实现代码
Zimbra环境下的Filter型内存马
相关参考资料:
https://github.com/feihong-cs/memShell/blob/master/src/main/java/com/memshell/jetty/FilterBasedWithoutRequest.java
https://blog.csdn.net/xdeclearn/article/details/125969653
参考资料1是通过JmxMBeanServer获得webappclassloaer,进而通过反射调用相关方法添加一个Filter
参考资料2是通过Thread获得webappclassloaer,进而通过反射调用相关方法添加Servlet型内存马的方法
我在实际测试过程中,发现通过JmxMBeanServer获得webappclassloaer的方法不够通用,尤其是无法在Zimbra环境下使用
因此,最终改为使用Thread获得webappclassloaer,进而通过反射调用相关方法添加Filter型内存马。
1.添加Filter
Jetty下可用的完整代码如下:
2.枚举Filter
(2)通过Thread获得webappclassloaer,通过反射读取_filters属性来枚举Filter
在Zimbra环境下,思路同样为使用Thread获得webappclassloaer,进而通过反射调用相关方法添加Filter型内存马
但是由于Zimbra存在多个名为WebAppClassLoader的线程,所以在添加Filter时需要修改判断条件,避免提前退出,在实例代码的基础上直接修改即可
Filter型内存马的优点是不需要写入文件,但是会在服务重启时失效
本文介绍了Jetty Filter型内存马的实现思路和细节,给出了可供测试的代码,分享了Zimbra环境的利用方法。