文章总结: 本文介绍了一个Spring内存马的检测和卸载工具,能够识别controller基于Bean名称、URL模式和注解的映射以及interceptor类型的内存马。工具部署简单,只需将两个类放入controller包并修改相关配置,即可通过界面扫描和卸载内存马。作者在实际项目中进行了测试,并讨论了可能遇到的Java版本兼容性、扫描限制、dump源字节码限制以及权限控制等问题。该工具为Spring应用提供了一种实用的内存马应急响应方案。 综合评分: 89 文章分类: WEB安全,应用安全,漏洞分析,应急响应,安全工具
关于spring内存马的解决思路分享
原创
洞洞拐
安服小兵洞洞拐
2025年12月14日 15:00 河南
·项目地址
https://github.com/h3ll0yoyo9527-techhttps://gitee.com/beiyouyun
1、使用方式介绍
1.1、部署
·项目依赖(spring项目应该都有这个依赖):
·拖:把两个类拖入controller包。把前端文件拖入/src/main/resource/static目录
·改:包名称。添加信任的controller:MS_C_SKController类的isEssentialClassByName方法(不需要添加自身,已经在后边代码排除扫描自身了)。
·启动项目后,刷新页面即可。
·注意:controller卸载工具按方法名卸载(同一个类的其他方法不受影响)、interceptor工具按照类卸载(卸载指定类名的所有拦截器实例,interceptor其实也没多少,关注度也不大)
1.2、测试(写一个漏洞点,动态加载冰蝎马)
2、实际项目部署
·实际整一个springboot项目搞一下:
https://gitee.com/aun/Timo#https://gitee.com/link?target=http%3A%2F%2F42.194.205.137
·改好数据库连接密码,把两个类和两个前端文件复制过去(包文件名都不用改,自动改了)
·访问http://127.0.0.1:8080/login,触发了拦截器,需要登录:admin/123456
3、可能遇到的问题
·java版本,这个是最烦人的。jdk1.8、springboot2.4.5和2.6试过。按理说就是一个正常的功能类代码,应该不至于版本上有大问题,大多会出现些语法问题。
·某些类型的内存马可能无法扫描到,可能内存马的处理器不一样。可以扫出:controller基于Bean名称的映射、基于URL模式的映射、基于注解的映射。Interceptor利用的不多。
·有磁盘类文件的可以dump,没有磁盘类文件的无法dump源字节码。如果点击dump后会有报错是正常现象。如果真需要dump,可以用阿尔萨斯反编译,可以看前一篇文章。
·是否考虑权限及拦截问题。涉及内部控制器,如果泄露也会很麻烦。部署到测试项目后一定要考虑此文件无鉴权,如果其他的类被鉴权是扫描不到的。可以考虑让这个文件在访问的时候也带上鉴权凭证,比如上边的“二、1.1实际项目部署”,就是需要先登录后才可以访问。
·思路介绍看后续文章
查看原文:《关于spring内存马的解决思路分享》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论