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)
3.处理办法
3.1临时处理办法
删除wls-wsat组件,然后重启weblogic(weblogic安装路径和domain名等根据自己实际情况修改)
rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war rm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat cd /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进行重启即可。
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_dir mv 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关于打补丁时要不要停weblogic,按习惯是都先停了再打,但是按实际试验看不停就打除了打时服务可能会卡一点外功能也都正常。从原理上看,安装补丁的过程是归档有问题的文件然后使用新文件替代;卸载补丁的过程是移除该补丁相关的文件然后从归档文件中还原原先的文件,从这角度上看不会造成功能缺失。由于前述的缓存到内存所以功能未重启前功能也正常。
2打了补丁之后一样要重启weblogic才能生效,这是验证过的。
4.POC
严谨的安全工作者,讲究“no exp say jb”,在github上可以找到两个,一个python版本一个java版本,这都没试过但意思感觉和手头上的差不多应该没什么问题
https://github.com/search?utf8=%E2%9C%93&q=CVE-2017-10271&type=
参考:
http://www.cnvd.org.cn/webinfo/show/4331
http://blog.nsfocus.net/weblogic-solution/
http://blog.nsfocus.net/weblogic-xmldecoder-rce/