File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed
Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 2323[ Shiro框架相关的安全问题 - 7个] ( https://github.com/4ra1n/JavaSecInterview/tree/master/shiro )
2424
2525[ Log4j2组件相关的安全问题 - 6个] ( https://github.com/4ra1n/JavaSecInterview/tree/master/log4j2 )
26+
27+ [ 内存马专题 - 6个] ( https://github.com/4ra1n/JavaSecInterview/tree/master/memshell )
Original file line number Diff line number Diff line change 1+ ## 内存马
2+
3+ - Tomcat和Spring内存马分别有哪些(★)
4+
5+ Tomcat内存马有:Filter型,Servlet型,Listener型,Java Agent型
6+
7+ Spring内存马有:Controller型,Interceptor型
8+
9+
10+
11+ - Servlet/Filter内存马查杀手段是怎样的(★★★)
12+
13+ 直接能想到的办法是利用Java Agent遍历所有JVM中的class,判断是否是内存马
14+
15+ 例如使用阿里的arthas分析,查看是否存在恶意的类名,然后删除
16+
17+ 或者使用c0ny1师傅的java-memshell-scanner项目,从Tomcat API角度删除
18+
19+
20+
21+ - Filter内存马查杀时候有什么明显特征吗(★★★)
22+
23+ 首先是类名可能是恶意的,或者报名和项目名不符,可以一眼看出
24+
25+ 其次优先级肯定是第一位的,这由内存马的特性决定,重点关注第一个Filter
26+
27+ 观察ClassLoader是否是不正常的,以及是否存在对应的Class文件
28+
29+
30+
31+ - 如何实现无法删除的Servlet/Filter内存马(★★★★)
32+
33+ 有一种思路是再` destroy ` 方法中加入再注册内存马的代码,但并不是所有删除方式都会触发` destroy ` 方法
34+
35+ 所以另外的思路是跑一个不死线程,循环检测该内存马是否存在,以及注册的功能
36+
37+
38+
39+ - 内存马如何持久化(★★★)
40+
41+ 内存马持久化这个问题必须要往本地写文件
42+
43+ 一般来说可以往Tomcat里写字节码或者直接改写依赖的Jar,再` doFilter ` 等位置插入恶意字节码
44+
45+ 4ra1n师傅提到的修改Tomcat的Lib也是一种手段
46+
47+
48+
49+ - Java Agent内存马的查杀(★★★)
50+
51+ 网上师傅提到用` sa-jdi.jar ` 工具来做,这是一个JVM性能检测工具,可以dump出JVM中所有的Class文件,尤其重点关注` HttpServletr.service ` 方法,这是Agent内存马常用的手段
You can’t perform that action at this time.
0 commit comments