1.简介
该系列主要分析各JAVA反序列化漏洞利用链的实际过程,主要用于代码审计。
例如常见的CC链,或者用于入门分析的URLdns链。
2.关于JAVA反序列化的本质
想要分析JAVA的反序列漏洞,那么首先,也是必须搞明白的是反序列化的本质到底是什么,是针对对象还是类,还是属性或者函数,这些概率需要搞清楚。
在JAVA反序列化过程中,JVM会根据字节流中的信息查找相应的类定义,并使用该类定义来创建对象实例,然后根据字节流中的信息设置对象的属性值等状态信息。因此,反序列化是针对对象的,而非类本身。
所以我们需要明白我们序列化的类一定是目标系统有定义的类,而不是自己凭空捏造一个类来序列化,这样目标系统是无法反序列化成功的。也就是说我们没办法编写自己的函数直接在目标系统中执行的。
因此反序列化漏洞的实质是通过嵌套编写对象定义属性值来达到执行目标系统中已有的我们想要执行的那个函数。
3.反序列化漏洞利用链分析流程
在以下所有流程中,我们所选取的类必须满足以下两个条件:
实现了Serializable接口,否则不可进行序列化,就更不存在什么反序列化。
必须为目标机器程序中存在的类。
...
网络安全
未读1.Fastjson分析1.1.fastjson常用方法首先需要明白JSON类的几个方法分别是,toJSONString,parse,parseObject(String text),parseObject(String text, Class clazz)。
toJSONString 是将对象序列化为JSON字符串,实现的是序列化操作,调用的Getter方法。
parse是将字符串反序列化对象,实现的是反序列化操作,调用的是Setter方法。
parseObjectt(String text) 是先调用parse方法进行反序列化操作调用Setter方法,再调用toJSON进行序列化操作,调用Getter方法。
parseObject(String text, Class clazz)是反序列化为指定的类,而不会调用toJSON方法进行序列化操作,因此只调用Setter方法。
以上所有方法在1.2.24默认请求下都可以通过@type注解指定反序列化的类。
1.2.调用流程分析那么我们来具体分析一下Fastjson中parseObjectt(String text) 通过 @type ...
网络安全
未读1.若依项目介绍 Ruoyi(若依)是一款基于Spring Boot和Vue.js开发的快速开发平台。它提供了许多常见的后台管理系统所需的功能和组件,包括权限管理、定时任务、代码生成、日志管理等。Ruoyi的目标是帮助开发者快速搭建后台管理系统,提高开发效率。
若依有很多版本,其中使用最多的是Ruoyi单应用版本(RuoYi),Ruoyi前后端分离版本(RuoYi-Vue),Ruoyi微服务版本(RuoYi-Cloud),Ruoyi移动版本(RuoYi-App)。
本系列会对这些版本的历史漏洞进行一一复现。
2.文章目录
RuoYi
RuoYi-Vue
RuoYi-Cloud(待更新)
RuoYi-App(待更新)
1. 什么是 Prompt Injecting(提示词注入)?大语言模型(DeepSeek、ChatGPT、Claude、Gemini…etc)在生成文本时依赖于输入的提示词(Prompt),但攻击者可以通过精心设计的提示,让 AI 偏离既定规则,生成本不应提供的内容。这种攻击被称为提示词注入(Prompt Injection)。
2. 为什么要进行 Prompt Injecting?大部分的大模型在出厂的时候会进行三种类型的防御:
前检测(Pre-Detection):用户输入到大模型响应的同时,同步用另一个模型检测用户的输入是否合法。
后检测(Post-Detection):大模型输出的时候,同步使用另一个模型/过滤系统进行输出检测,防止大模型输出不该说的内容(例如某些敏感话题)。
模型对齐(Alignment):利用 RLHF(Reinforcement Learning from Human Feedback),使得模型进行安全对齐某些观点,比如在谈到政治话题时避而不谈,或者只输出一方观点。
这使得模型的可用性、可信度在某些场合大幅度下降,比如 nsfw(Not ...
1.frida核心概念:动态二进制插桩
插桩: 在程序执行流的关键位置插入额外的代码。
动态: 在程序运行时进行插桩,无需修改源代码或重新编译目标程序。
二进制: 直接作用于编译后的可执行文件(二进制文件)。
Frida 的实现: Frida 通过将一个小型引擎(frida-core)注入到目标进程(如 Android App, iOS App, Windows 桌面程序, macOS 应用等)中实现。这个引擎在目标进程内部运行一个 JavaScript 运行时环境(V8 引擎),允许你执行 JS 脚本并与目标进程的地址空间交互。
1.1.安装
frida是开源工具,直接在github下载即可,版本要求,
在选择安装的版本之前,需要先确定手机的系统和CPU的架构
可以通过以下命令获取CPU架构
12PS C:\Users\GaoMu> adb shell getprop ro.product.cpu.abiarm64-v8a
根据不同的安装系统版本适配不同的frida版本
同时我的系统是安卓11,因此我选择下载frida16的这个版本
使用adb push 推送解压 ...
1.四大组件Android 的四大核心组件是应用开发的基础框架,它们各自承担独特职责并通过系统协同工作:
Activity(活动)
作用:用户交互的界面载体,如一个屏幕页面(例如微信聊天窗口、购物APP商品页)。
特点:管理生命周期(onCreate(), onResume()等),通过Intent启动其他组件。
示例:登录界面、主菜单页面。
Service(服务)
作用:后台执行长时间任务(无界面),如下载文件、播放音乐。
类型:
Started Service(启动后独立运行)
Bound Service(被其他组件绑定调用)
注意:主线程运行,需开子线程防卡顿。
Broadcast Receiver(广播接收器)
作用:监听系统/应用广播事件(如电量不足、网络变化),并触发响应。
使用方式:
静态注册(AndroidManifest.xml声明,常驻监听)
动态注册(代码中注册,灵活控制生命周期)
示例:监听开机完成事件、自定义应用消息推送。
Content Provider(内容提供者)
作 ...
1.Java内存马简介1.1.Java内存马的本质无文件驻留的Web后门,通过直接修改JVM运行时内存中的关键组件实现攻击。其核心特性:
无文件落地 - 不写入磁盘,规避传统文件查杀
驻留于中间件进程 - 寄生在Tomcat/Jetty/WebLogic等容器的JVM中
动态注册恶意端点 - 运行时注入Filter/Servlet/Controller等组件、
1.2.常见内存马分类
传统Web应用型
利用Servlet容器(如Tomcat)的Context存储核心组件映射关系,通过动态注册恶意组件实现驻留。
框架型
Spring MVC:Controller处理请求,Interceptor实现类似Filter的功能。
Spring WebFlux:使用WebFilter替代传统Filter,适用于响应式编程。
中间件型
针对中间件管道式设计(如Tomcat的Valve链、Grizzly的Filter链),在关键路径插入恶意处理器。
其他类型
线程型:创建不可停止的线程绕过GC,永久驻留内存。
RMI型:动态启动RMI服务暴露后门 ...
在网络安全渗透测试中,隧道技术是突破内网限制、实现隐蔽通信的关键手段。常见的隧道技术及工具可分为以下几类,结合不同协议和应用场景,以下是详细总结:
一、隧道技术分类1. 网络层隧道技术
ICMP隧道:通过ICMP协议封装数据,绕过防火墙限制。例如,icmpsh和PingTunnel工具支持ICMP流量伪装,适用于网络层隐蔽通信。
IPv6隧道:将IPv6数据包封装在IPv4中传输,用于跨网络环境的数据传输。
2. 传输层隧道协议
TCP/UDP隧道:通过TCP或UDP协议转发流量,常用工具如netcat(瑞士军刀)、lcx(轻量级端口转发),支持灵活的网络调试和流量中转。
常规端口转发:如SSH的本地/远程端口转发(ssh -L和ssh -R),通过加密通道实现内网穿透。
3. 应用层隧道技术
SSH隧道:利用SSH协议加密通信,支持动态代理(ssh -D)和端口映射,适用于安全远程访问。
HTTP/HTTPS隧道:通过HTTP协议伪装流量,工具如httptunnel和stunnel,适用于绕过HTTP代理限制并加密通信。
DNS隧道 ...
k8s云安全1.k8s架构 做k8s横向移动首先我们需要搞懂k8s的基础架构。
Kubernetes(k8s)的基础架构是一个分布式系统,由控制平面(Master节点)和工作节点(Node节点)组成,各组件协同工作以实现容器化应用的自动化部署、扩展和管理。以下是其核心架构的详细说明:
1. 控制平面(Control Plane / Master 节点)主节点可以理解为一台实际运行的主机,具有集群中最高的控制权限。
负责集群的全局决策和资源调度,通常包含以下组件:
1.1 API Server(kube-apiserver)
作用:集群的前端接口,处理所有REST请求(如kubectl命令),验证并更新集群状态到etcd。
特点:唯一直接与etcd交互的组件,支持水平扩展。
1.2 Scheduler(kube-scheduler)
作用:将新创建的Pod调度到合适的Node上,基于资源需求(CPU/内存)、亲和性规则、数据位置等策略。
流程:监听API Server的未调度Pod,选择最优节点。
1.3 Controller Manager(kube-co ...
网络安全
未读Docker Escape0.容器环境确认获得到一个shell之后我们首先需要判断的是当前是否处于容器环境中,否则后续的一切渗透可能都将会受阻。
那么如何判断?
以下是判断当前环境是否为容器环境的常见方法,适用于 Docker、LXC 等容器环境:
1. 检查 /proc/1/cgroup 文件容器环境的进程控制组(cgroup)信息通常包含 docker、kubepods(Kubernetes)等标识。命令:
1cat /proc/1/cgroup
判断依据:
如果输出中包含 /docker/、/lxc/ 或 kubepods 等关键字,则为容器环境。
物理机或虚拟机通常显示 / 或系统默认的层级(如 systemd)。
2. 检查 /.dockerenv 文件Docker 容器启动时会在根目录生成此文件(其他容器如 LXC 无此文件)。命令:
1ls -l /.dockerenv
判断依据:若文件存在,则极可能是 Docker 容器环境。
3. 检查 /proc/mounts 中的挂载信息容器中挂载的文件系统通常包含 overlay(Docker 默认存储驱动)或 a ...