产品安全漏洞说明及方案 产品安全漏洞说明及方案
01_产品安全漏洞说明及解决方案
02_第三方安全漏洞说明及解决方案
  • 004_Was环境基于IBM JDK1.7及JDK1.8反序列化漏洞报错解决方案
  • 漏洞说明
  • 问题原因
  • 解决方案

# 004_Was环境基于IBM JDK1.7及JDK1.8反序列化漏洞报错解决方案

# 漏洞说明

java.io.ObjectInputStream反序列化流时,存在安全漏洞,导致EOS的应用,在未登录状态下登录,只要发起post请求,就会触发参数的反序列化。

Window环境执行打包jar如下图报错:

# 问题原因

rt的压缩算法和默认jar的压缩算法不一致导致。

# 解决方案

修改源码的rt.jar路径,执行命令

  1. 修改rt.jar路径,修改代码如下:

    public class SerialKillerGenerator {
    
        public static void main(String[] args) throws Throwable {
    
            String javaHome = System.getProperty("java.home");
    //        System.out.println(javaHome);
    //        FileInputStream in = new FileInputStream(javaHome + "/lib/rt.jar");
            FileInputStream in = new FileInputStream(
       "xxxrt-compile/rt1.jar");
            JarInputStream jarInputStream = new JarInputStream(in);
    

    修改rt1.jar路径: FileInputStream in = new FileInputStream( "xxx/rt-compile/rt1.jar");

    将IBM的jre/lib/rt.jar, 解压到一个rt的目录。

  2. 修改gen.bat 参考如下:

    set "JAVA_HOME=D:\ibm_jdk1.7_x64"
    echo %JAVA_HOME%
    if "%JAVA_HOME%"=="" (
     echo "Please specify the JDK path."
    ) else (
     "%JAVA_HOME%/bin/java" -version
     echo "javac"
     "%JAVA_HOME%/bin/javac" -cp asm-7.1.jar -encoding utf8 com/primeton/SerialKillerGenerator.java java/io/SerialKiller.java
     echo "inject killer"
     "%JAVA_HOME%/bin/java" -cp asm-7.1.jar;. com.primeton.SerialKillerGenerator
     echo "Complate !!!"
    )
    

    注意:要设置jdk的路径,不能用jre的路径,IBM 的jre/bin目录下没有javac命令,导致编译会失败

  3. jar -cfv rt1.jar * 进行打包,然后用rt1.jar放入jre/lib中,将那个代码的rt.jar路径改为rt1.jar,运行gen.bat就可以。

← 003_Apache Log4j 1.X 漏洞说明及解决方案 005_Spring Cloud Netflix SSRF漏洞说明及方案 →