Java-webshell 排查
参考:
简介#
本次分享为 java webshell 排查初级。抛砖引玉
java 获取 web 权限的 shell,包括:
落地webshell:
- 普通一句话木马
- 冰蟹、蚁剑、哥斯拉等 webshell 管理工具自带 webshell
无文件 webshell:
- 动态注册 servlet/filter/listener(使用 servlet-api 的具体实现)
- 动态注册 interceptor/controller(使用框架如 spring/struts2)
- 动态注册使用职责链设计模式的中间件、框架的实现(例如 Tomcat 的 Pipeline & Valve,Grizzly 的 FilterChain & Filter 等等)
- 使用 java agent 技术写入字节码。wsmemshell
排查方法:调试 jvm,因为所有的 java 代码都得加载到 jvm 中运行
用到的工具:
arthas Java诊断利器Arthas
copagent java 内存马提取工具
java-memshell-scanner jsp 脚本,识别 filter 、servlet 型内存马
D盾、河马webshell 查杀、在线文件分析平台、火眼金睛。
behinder 、godzilla 、 antsword 、wsmemshell
常见排查技巧#
使用 arthas
直接使用 arthas 找所有的类即可,因为 jsp 编译过后的类名末尾都会带上 jsp 后缀。
sc *_jsp*

sc *_jsp$*
常见的连接工具的 webshell ,都会使用 在 webshell 落地文件内创建内部类,而内部类都是通过 $ 标识的 。

classloader -l
通过 classloader 去看 org.apache.jasper.servlet.JasperLoader
加载的类,落地的 webshell jsp 文件都是通过该类去加载

使用 copagent,其输出的 allLoadedClasses.txt 按照加载顺序展示出jvm 加载的所有类。此处可以从下往上依次去找

工具使用技巧#
arthas#

在jvm中导出可疑类,导出路径默认为 pwd 路径。
jad --source-only org.apache.jsp.webshells.behinder_002d4_0_4_jsp > z.java

若排查到了内存马,通常的处置方式是进行重启业务服务器,而 arthas 提供了redefine 、retransform 机制,可以直接对 jvm 中的类进行替换。

copagent#
copagent 可以扫描jvm,导出可疑的字节码,并进行反编译。输出物中通常需要关注的有三个:

作者:chenyun
出处:https://www.cnblogs.com/starrys/p/17127191.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通