【技术原创】Java利用技巧——AntSword-JSP-Template的优化
2022-10-14 12:6:39 Author: 嘶吼专业版(查看原文) 阅读量:14 收藏

在之前的文章《Java利用技巧——通过反射实现webshell编译文件的自删除》曾介绍了通过反射实现AntSword-JSP-Template的方法。对于AntSword-JSP-Template中的shell.jsp,访问后会额外生成文件shell_jsp$U.class。《Java利用技巧——通过反射实现webshell编译文件的自删除》中的方法,访问后会额外生成文件shell_jsp$1.class。

在某些特殊环境下,需要避免额外生成.class文件。本文将以Zimbra环境为例,介绍实现方法,开源代码,记录细节。

本文将要介绍以下内容:

· 实现思路

· 实现代码

基于《Java利用技巧——通过反射实现webshell编译文件的自删除》中的方法,访问后会额外生成文件shell_jsp$1.class,这里可以通过构造器避免额外生成.class文件。

在具体使用过程中,需要注意如下问题:

(1)反射机制中的构造器

正常调用的代码:

通过反射实现的代码:

(2)选择合适的defineClass()方法

在ClassLoader类中,defineClass()方法有多个重载,可以选择一个可用的重载。

本文选择defineClass(byte[] b, int off, int len)

(3)SecureClassLoader

使用构造器时,应使用SecureClassLoader,而不是ClassLoader

示例代码:

为了方便比较,这里给出每种实现方法的代码:

(1)test1.jsp

来自AntSword-JSP-Template中的shell.jsp,代码如下:

保存在Zimbra的web目录:/opt/zimbra/jetty_base/webapps/zimbra/

通过Web访问后在目录/opt/zimbra/jetty_base/work/zimbra/jsp/org/apache/jsp/生成以下文件:

· _test1_jsp.java

· _test1_jsp.class

· _test1_jsp$U.class

(2)test2.jsp

来自《Java利用技巧——通过反射实现webshell编译文件的自删除》中通过反射实现AntSword-JSP-Template的方法,代码如下:

通过Web访问后生成以下文件:

· _test2_jsp.java

· _test2_jsp.class

· _test2_jsp$1.class

(3)test3.jsp

基于test2.jsp,通过构造器实现,代码如下:

通过Web访问后生成以下文件:

· _test3_jsp.java

· _test3_jsp.class

(4)test4.jsp

基于test3.jsp,不使用base64Decode(),代码如下:

通过Web访问后生成以下文件:

· _test4_jsp.java

· _test4_jsp.class

在代码实现上需要注意Java语言中数组必须先初始化,然后才可以使用。

本文分享了一种不额外生成.class文件的实现方法,对于开源的代码test4.jsp,还可以应用到Java文件的编写中。


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247552091&idx=1&sn=061377d83ca103c5d0ddbe36e914d2e8&chksm=e915dc61de6255770aee47e7bdf1d50bc6814a99def28b64ed63164faa547c08e28f7c1864c9#rd
如有侵权请联系:admin#unsafe.sh