第一种方案如下
- 使用SerialKiller替换进行序列化操作的ObjectInputStream类;
- 在不影响业务的情况下,临时删除掉项目里的 "org/apache/commons/collections/functors/InvokerTransformer.class"文件。
ObjectInputStream类为JRE的原生类,InvokerTransformer.class为weblogic基础包中的类,对上 述两个类进行修改或删除,实在无法保证对业务没有影响。如果使用上述的修复方式,需要大量的测试工作。且仅仅删除 InvokerTransformer.class文件,无法保证以后不会发现其他的类存在反序列化漏洞。
基于项目比较庞大用的比较多。我就果断使用了第二个方案关键是简单
第一种方案如下
1、打补丁p20780171_1036_Generic.zip
2、打补丁22248372_1036012_Generic.zip
3、打补丁。。。
步骤如下:
1、测试漏洞
Java -jar Test.jar weblogic xxx.xxx.xxx.xxx 7001 F:/a.txt执行该操作后,如果该IP上的电脑生成a.txt文件,证明漏洞存在(此命令为window下操作,linux下修改文件路径,暂未测试)。
2、到weblogic官网下载补丁包
(p20780171_1036_Generic.zip、p22248372_1036012_Generic.zip)10.3.6对应的补丁包p22248372_1036012_Generic.zip ,补丁包需要依赖于一个大的升级包,所以需要把p20780171_1036_Generic.zip也下载下来。
3、安装补丁步骤
1、登录linux的weblogic用户,切换到/home/weblogic/Oracle/Middleware/utils/bsu/目录下。
2、确认当前weblogic版本,并确认所有域的进程全部关闭
./bsu.sh -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3/ -status=applied -verbose –view
3、查看是否存在/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir 目录,没有的需要手工创建。
4、将补丁包上传到/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir目录下
5、首先打大的升级包,解压p20780171_1036_Generic.zip
unzip p20780171_1036_Generic.zip
EJUW对应就是后面命令的patchlist
6、执行补丁安装命令。
./bsu.sh -install -patch_download_dir=/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir -patchlist=EJUW -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 –verbose
7、打序列化的补丁包,解压p22248372_1036012_Generic.zip
unzip p22248372_1036012_Generic.zip
./bsu.sh -install -patch_download_dir=/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir -patchlist=ZLNA -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 –verbose
8、在打ZLNA补丁包时,遇到了内存溢出的问题。需要修改bsu.sh脚本,将内存调大。
9、启动weblogic的域,查看输出日志。确定版本是否生效。
weblogic 反序列化漏洞补丁
https://pan.baidu.com/s/1hrGJNNI