CVE-2018-2894 Weblogic 任意文件上传
WebLogic 这类中间件大部分实现是 编译好的.class或.jar文件。需要用反编译和静态分析的方法进行代码审计(ai说的,我不会1)
复现
开启容器并查看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)

更多推荐

所有评论(0)