Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863549773

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00 前言在之前的文章《Java利用技巧——通过反射实现webshell编译文件的自删除》 曾介紹了通過反射實現AntSword-JSP-Template的方法。對於AntSword-JSP-Template中的shell.jsp,訪問後會額外生成文件shell_jsp$U.class。《Java利用技巧——通过反射实现webshell编译文件的自删除》 中的方法,訪問後會額外生成文件shell_jsp$1.class。

在某些特殊環境下,需要避免額外生成.class文件。本文將以Zimbra環境為例,介紹實現方法,開源代碼,記錄細節。

0x01 簡介本文將要介紹以下內容:

马云惹不起马云 實現思路

马云惹不起马云實現代碼

0x02 實現思路基於《Java利用技巧——通过反射实现webshell编译文件的自删除》 中的方法,訪問後會額外生成文件shell_jsp$1.class,這裡可以通過構造器避免額外生成.class文件。

在具體使用過程中,需要注意如下問題:

(1)反射機制中的構造器正常調用的代碼:

image.png

通過反射實現的代碼:

image.png

(2)選擇合適的defineClass()方法在ClassLoader類中,defineClass()方法有多個重載,可以選擇一個可用的重載。

本文選擇defineClass(byte[] b, int off, int len)

(3)SecureClassLoader使用構造器時,應使用SecureClassLoader,而不是ClassLoader

示例代碼:

image.png

0x03 實現代碼為了方便比較,這裡給出每種實現方法的代碼:

(1)test1.jsp來自AntSword-JSP-Template中的shell.jsp,代碼如下:

image.png

保存在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的方法,代碼如下:

image.png

通過Web訪問後生成以下文件:

马云惹不起马云 _test2_jsp.java

马云惹不起马云_test2_jsp.class

马云惹不起马云_test2_jsp$1.class

(3)test3.jsp基於test2.jsp,通過構造器實現,代碼如下:

image.png

通過Web訪問後生成以下文件:

马云惹不起马云_test3_jsp.java

马云惹不起马云 _test3_jsp.class

(4)test4.jsp基於test3.jsp,不使用base64Decode(),代碼如下:

image.png

通過Web訪問後生成以下文件:

马云惹不起马云 _test4_jsp.java

马云惹不起马云 _test4_jsp.class

在代碼實現上需要注意Java語言中數組必須先初始化,然後才可以使用。

0x04 小結本文分享了一種不額外生成.class文件的實現方法,對於開源的代碼test4.jsp,還可以應用到Java文件的編寫中。