复现

开启容器并查看weblogic的管理员密码

# 拉取镜像并启动容器(后台运行)
docker-compose up -d
# 查看容器状态与端口(默认7001端口)
docker ps
# 查看WebLogic管理员密码(用户:weblogic)
docker-compose logs | grep password

开启 Web 服务测试页

  • weblogic+ 查到的密码登录http://Kali-IP:7001/console

  • 进入base_domain → 配置 → 高级,勾选启用 Web 服务测试页,保存并激活更改

访问漏洞配置页面

访问 http://Kali-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

点击提交保存。

上传jsp木马,文件名shell.jsp

先创建jsp文件,代码如下,密码为fafa

然后点击安全,添加,上传shell.jsp文件,提交

通过浏览器的开发者工具查看返回的时间戳

访问木马文件,路径为http://Kali-IP:7001/ws_utc/css/config/keystore/[时间戳]_shell.jsp。发现可访问,上传成功。

用蚁剑连接获取webshell

笔记:

漏洞本质核心:

未授权访问 + 任意文件上传 + 上传路径可外网访问

  • 未授权/ws_utc/config.do 不用登录就能进

  • 可设置上传目录Work Home Dir 可以自定义路径

  • 无文件类型检查上传 jsp 不拦截、不重命名、不解析

  • 上传目录对外可访问写入到 war/css/ 下,能直接 URL 访问执行

war包格式:

myapp.war
├─ index.jsp    # 网站首页(直接能访问)
├─ css/         # 样式文件目录(可访问)
├─ js/          # 脚本文件目录(可访问)
└─ WEB-INF/     # 受保护目录(外网绝对不能直接访问)
  • 根目录文件 / 文件夹(css、js、index.jsp):都是给用户看的、能直接访问的资源

  • WEB-INF/:是 Java Web 的「后台仓库」,放配置文件、类文件、敏感代码,用户绝对不能直接访问

URL 映射规则:「网址」和「服务器文件」的对应关系

URL = 应用上下文路径 + war 包内的文件路径

  • 应用上下文路径:/ws_utc

  • war 包内文件路径:/css/config/keystore/时间戳_shell.jsp

  • 最终访问 URL:http://IP:7001/ws_utc/css/config/keystore/时间戳_shell.jsp

  • 对应服务器磁盘真实路径:war/css/config/keystore/时间戳_shell.jsp

Work Home Dir 路径是怎么来的?

进入容器

#查看正在运行的容器
docker ps
#进入容器
docker exec -it cve-2018-2894-weblogic-1 bash

找这个应用在容器里的真实磁盘位置

/ws_utc应用上下文路径(context path),对应 WebLogic 里的 ws-testclient 应用(WebService 测试客户端)

应用名(ws-testclient)。是 WebLogic内部对这个应用的称呼,就是这个应用在 WebLogic 服务器里的 “小名”,对应的是容器里真实的应用文件夹

上下文路径(/ws_utc)。是这个应用对外的访问入口前缀,就是我们在浏览器里访问这个应用时,URL 里必须带的路径,是给用户 / 攻击者访问用的。

Web 服务测试页。是 WebLogic 的一个开关配置,默认是关闭的;只有在/console后台勾选开启后,WebLogic 才会自动把ws-testclient应用部署到服务器上,同时绑定/ws_utc作为它的访问路径

find / -name "*ws-testclient*"

com.oracle.webservices.wls.ws-testclient-app-wls:就是 ws_utc 应用的包名

进入上面的应用目录,你会看到一个随机字符串命名的文件夹,4mcj4y。进入这个随机目录,你会看到一个 war/ 文件夹

  • 核心知识点war 就是 Java Web 应用的Web 根目录

    • 所有能被外网访问的静态资源(css、js、图片)、JSP 文件,都放在 war/

    • war/ 目录对应的外网访问路径,就是应用的上下文路径 /ws_utc/

选择一个既能写又能访问的文件,css/:满足✅(静态资源目录,默认可写、可访问,没有权限限制)

最终拼接出Work Home Dir路径

上传文件的路径怎么看,以及为什么是时间戳命名?

WebLogic 这类中间件大部分实现是 编译好的 .class.jar 文件。需要用反编译和静态分析的方法进行代码审计(ai说的,我不会1)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐