第80篇:Weblogic上传漏洞在不知绝对路径情况下拿shell方法

dd11a1a010506cfb043ed27261cbb5a7.png

 Part1 前言 

大家好,我是ABC_123。Weblogic曾经爆出一个上传漏洞,漏洞编号是CVE-2018-2894,这个漏洞利用起来稍微有点麻烦,很多朋友由于不知道绝对路径而没法上传shell,从而放弃对其的进一步利用,ABC_123曾经搭环境尝试了各种方法去解决这个问题,接下来给出自己的研究成果。

建议大家把公众号“希潭实验室”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。

51e5e67e591e3c87dc0d8ec599c148db.jpeg

 Part2 技术研究过程 

  • 上传漏洞利用步骤及分析

首先复习一下weblogic上传漏洞利用过程,一般情况下,存在上传漏洞的页面是/ws_utc/config.do,在“Work Home Dir”处会自带一个绝对路径,一般是/u01/oracle/user_projects/domains/base_domain/tmp/WSTestPageWorkDir,然后可以结合上述路径更改为如下路径,接着上传jsp文件获取一个webshell。

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

20b86e721ada0b32546c7a60c983d8b3.png

上传成功之后,根据返回的网页源码,将jsp的webshell的时间戳与相对路径结合,就可以得到webshell的完整URL地址了。

dacdc9853e206dcdf2a8cb2e6e09baee.png

但是我们经常遇到的情况是“当前的工作目录”是空的,或者是被其它攻击者给随意更改成错误的路径,导致不知道绝对路径导致上传webshell失败,那如何解决这个问题呢?

3619d2be5a3878334ca9e24fb2cef4cc.png

首先我们做一下尝试,将绝对路径更改为以servers/开头的相对路径,发现也是可以上传成功的。通过试验我们发现,此处仅需要知道servers/开头的相对路径即可,这在一定程度上,降低了getshell的难度。

servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css。

81f8af396439710e13b3b0e3dcbc8710.png

这里需要注意的是,上述路径中/AdminServer/在不同的weblogic安装环境中可能不一样的,它可能是/Server-0/或者/app_server1/,它可能是管理服务器名称,也可能是被管服务器(MS)名称。

0fcbbf6626e4a9860a0704b788522618.png

路径中的/4mcj4y/值也不是固定的,它是由/AdminServer/结合另一个变量计算出来的,所以我们只需要知道/AdminServer/处的值就好办了。如下图所示,github上有很多通过当前weblogic服务器名称计算出该值的脚本程序。

add5476a1832e69b3f8411b2f8c20337.png

  • IIOP协议获取相对路径

经过研究发现,如果目标weblogic端口的iiop协议开放的话,直接向iiop协议端口7001或者其它端口发送一个数据包,在返回数据包中就会有获取相对路径最关键的服务器实例名称(此处是AdminServer)。

34f5eebb382b5ac26ca2e372c96be6ee.png

知道了AdminServer这个值,就可以使用脚本计算出完整的相对路径了,就可以上传webshell了。

  • 通过报错泄露路径

通过报错的方法,也可以不断获取完整的绝对路径,这种方法有时候能成功,有时候不能成功,我也没深入研究为什么。这个方法实测效果不太好,但是有时候可以作为探测目标绝度路径是否存在的一种方法。在“Work Home Dir”处填入“servers”,然后点击提交,会弹出一个报错页面,其中就会泄露一部分绝对路径。

554a9257e5bc07965df6c2230193518f.png

  • XXE漏洞获取weblogic的绝对路径

经过仔细观察发现,此上传漏洞的编号是CVE-2018-2894,在CVE-2018-2894编号附近,有一个XXE漏洞CVE-2018-3246,因为两个漏洞编号相近,所以两个漏洞理论上会同时存在。因此如果目标环境出网的情况下,我们通过这个XXE漏洞获取到weblogic的路径,然后再利用上传漏洞获取webshell。

8120a4c315fc2de48c7d8991e60d488c.png

e1e8de67c324c93a3499873e3c36003f.png

 Part3 总结 

本文中ABC_123给出了3种方法,各有优缺点,实战中结合起来用,基本上可以搞定这个上传漏洞的利用。

方法1:报错获取绝对路径,缺点是不一定每次都能报错,而且有时候报错出来的路径不全。

方法2:IIOP协议可以获取AdminServer,但是目标weblogic端口必须没有屏蔽IIOP协议。

方法3:XXE漏洞获取绝对路径,但是目标weblogic必须得能够出网。

41838c247e069b55d552b9221de1ac4a.png

公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。

Contact me: 0day123abc#gmail.com(replace # with @)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/193827.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码

基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于世界杯优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

java 实现串口通讯

1、引入依赖 <dependency><groupId>org.scream3r</groupId><artifactId>jssc</artifactId><version>2.8.0</version> </dependency>2、配置启动串口 Component public class ContextHolder implements ApplicationContextAw…

LeetCode【12】整数转罗马数字

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/m0_71120708/article/details/128769894 代码&#xff1a; public String intToRoman(int num) {String[] thousands new String[] {"", "M", "MM", "MMM"};String[] hun…

python基础练习题库实验3

题目1 编写一个程序&#xff0c;根据以下定价计算成本。 Number of itemsCost1-50每件3美元 邮费: 10美元超过50每件2美元 邮寄&#xff1a;免费 举个例子&#xff1a; 代码 items_num input("Enter the number of items: ") items_num_i int(items_num) ite…

linux如何重置root密码

目录 当我们想要重置root管理员密码时&#xff0c;我们可以有两种方法进行&#xff1a; 方法一、init方法 1、重启系统&#xff0c;在下图所示界面按e键 2、随后进入以下界面&#xff0c;、将ro修改为rw&#xff0c;在行末尾添加init/bin/sh。​编辑 3、随后按Ctrlx启动到s…

预定义宏指令

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {printf("%s\n", __FILE__);printf("%d\n", __LINE__);printf("%s\n", __DATE__);printf("%s\n", __TIME__);return 0; } 运行结果&#xff1a;

记录将excel表无变形的弄进word里面来

之前关于这个问题记录过一篇文章&#xff1a; 将excel中的表快速复制粘贴进word中且不变形-CSDN博客 今天记录另外一种方法&#xff1a;举例表述&#xff0c;excel表如图&#xff1a; 按F12&#xff0c;出现“另存为...”对话框&#xff0c;选择“单个文件网页”&#xff0c;…

算法 LeetCode 题解 | 最小栈

大家好&#xff0c;我是木川 一、题目描述 请你设计一个 最小栈 。它提供 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除…

宏--offsetof使用

文章目录 宏介绍结构体测试代码运行结果 宏介绍 宏--offsetof(type, member)&#xff0c;type就是结构的类型&#xff0c;member就是需要的成员名。表达式的结果是一个size_t的值&#xff0c;表示这个指定成员开始存储的位置距离结构开始存储的位置偏移几个字节结构体 typede…

FISCO BCOS 3.0【03】配置和使用pythonSDK

官方技术文档&#xff1a;https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/index.html 我们在官方技术文档的基础上&#xff0c;进行&#xff0c;对文档中一些不清楚的地方进行修正 依赖软件 Ubuntu sudo apt install -y zlib1g-dev libffi6 libffi-dev wget git初始化…

漫谈广告机制设计 | 万剑归宗:聊聊广告机制设计与收入提升的秘密(2)

书接上文漫谈广告机制设计 | 万剑归宗&#xff1a;聊聊广告机制设计与收入提升的秘密&#xff08;1&#xff09;&#xff0c;我们谈到流量作为一种有限资源&#xff0c;其分配方式&#xff08;或者交易方式&#xff09;也经历了几个阶段&#xff1a;第一个是谈判定价阶段&#…