WebLogic 是美国 Oracle 公司出品的一个 Application server,确切的说是一个基于 JAVA EE 架构的中间件,WebLogic 是用于开发、集成、部署和管理大型分布式 Web应用、网络应用和数据库应用的 Java应用服务器。将 Java 的动态功能和 Java Enterprise 标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
本环境模拟了一个真实的 Weblogic 环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。漏洞复现的过程分别通过利用这两种漏洞获得 Weblogic 管理后台登录的账号,最终通过 Weblogic 后台应用部署功能上传War包(JSP 大马)获得 WebShell。
War 包 是用来进行 Web 开发时一个网站项目下的所有代码,包括前台HTML/CSS/JS 代码,以及后台 JavaWeb 的代码。当开发人员开发完毕时,就会将源码打包给测试人员测试,测试完后若要发布则也会打包成 War 包进行发布。Weblogic 部署 Web 应用的过程可参见:WebLogic部署Web应用并绑定域名。
环境 | 版本 |
---|---|
Weblogic | 10.3.6(11g) |
Java | 1.6 |
漏洞环境基于 Ubuntu 虚拟机的 Vulhub 集成靶场,执行命令docker-compose up -d
启动靶场容器:
环境启动后,访问 http://your-ip:7001/console
,即为 Weblogic 后台:
本环境存在弱口令:
账户 | 密码 |
---|---|
weblogic | Oracle@123 |
Weblogic 弱口令批量检测工具: WeblogicWeakPwd 。
假设不存在弱口令,如何对 Weblogic 进行渗透?
本环境前台模拟了一个任意文件下载漏洞,来验证一下。访问http://your-ip:7001/hello/file.jsp?path=/etc/passwd
可见成功读取 passwd 文件:
下载并打开 passwd 文件:
或者直接 BurpSuite 读取也行:
那么,该漏洞如何进一步利用从而获得登录账户信息呢?下面将利用上述任意文件下载漏洞读取 Weblogic 后台的用户密码密文与密钥文件。
Weblogic 密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于 base_domain下,名为 SerializedSystemIni.dat
和config.xml
,在本环境中为 ./security/SerializedSystemIni.dat和./config/config.xml(基于当前目录 /root/Oracle/Middleware/user_projects/domains/base_domain)。
1、SerializedSystemIni.dat
是一个二进制文件,所以一定要用 burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在 Burp 里选中读取到的那一串乱码,右键选择 copy to file 就可以保存成一个文件:
2、config.xml
是base_domain的全局配置文件,所以乱七八糟的内容比较多,找到其中的
的值,即为加密后的管理员密码:
3、从 Github 下载 Weblogic 的解密工具,与上述SerializedSystemIni.dat
文件一起保存到本地,如下图所示:
4、解密密文,获得 Weblogic 后台用户的密码:
拿到 Weblogic 后台的登录账户和密码之后,可以进入后台上传 War 木马文件获得 WebShell。
1、输入账号名、密码登录之后进入后台管理界面 -> 部署 -> 安装:
2、在安装页面点击上载文件:
3、然后选择制作好的 war 木马文件包,点击下一步:
4、War 木马文件包的制作方法:准备一个 JSP 大马文件(Githhub下载):xxx.jsp
,将其压缩为 test.zip,然后重命名为 test.war,test 即为部署成功大马存放的目录:
5、一直下一步(这里注意点击的是上边的下一步,不要点错了):
6、然后点击完成-保存:
7、部署完成:
8、访问大马文件http://IP:7001/test/JspSpy.jsp
,需要验证密码:
9、查看JSP大马文件JspSpy.jsp
的连接密码:
10、成功连接大马:
11、使用大马进行命令执行、内网端口扫描:
12、最后使用大马进行内网端口扫描:
至此,利用 Weblogic 弱口令、任意文件下载,已成功上传大马获得 WebShell,攻击结束。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
Tomcat7 + 支持在后台部署 War 文件,可以直接将 Webshell 部署到 Web 目录下。当然,有个前提条件,那就是需要能登录后台,且对应用户有相应权限。War 包可以放在Tomcat下的 webapps 或 word 目录,当Tomcat服务器启动时,War包即会随之解压源代码来进行自动部署。
1、假设能访问到某系统的 Tomcat 管理后台且存在弱口令,暴力破解得之:
2、输入弱密码 tomcat:tomcat
,进入后台,找到 War 部署:
3、先将 jsp 大马压缩为zip,再将zip后缀改名为war,然后上传war包:
4、点击上传:
5、可以发现已经上传成功!尝试访问:http://192.168.0.132:8080/bmjoker/bmjoker.jsp
,成功访问上传的 jsp 大马:
本文参考文章:
1、Vulhub官方教程;
2、Weblogic漏洞系列-后台上传文件getshell;
3、Weblogic漏洞总结;
4、WebLogic部署Web应用并绑定域名。