揭秘Log4j2漏洞的四个关键点
本文已制作成视频为大家讲解:揭秘Log4j2漏洞的四个关键点 环境搭建我们写一个小例子,来跟一下Log4j2漏洞中的方法调用 先添加maven依赖 12345678910<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version></dependency><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version></dependency> 编写测试代码 123456789import org.apache.lo ...
沉浸式体验 fastjson1.2.80的Groovy利用链
本文已制作成视频带大家沉浸式体验 fastjson1.2.80的Groovy利用链 该漏洞为浅蓝师傅在kcon2022的《Hacking JSON》议题中提出来的,下面给出会议ppt的链接 https://github.com/knownsec/KCon/blob/master/2022/Hacking%20JSON%E3%80%90KCon2022%E3%80%91.pdf 一、 漏洞绕过原理该漏洞适用的fastjson版本为 ( 1.2.72 , 1.2.80 ] 在学习漏洞之前,我们需要了解一些前置知识 前置知识1:类继承自期望类,且不在黑名单,就可以被fastjson正常的反序列化并加入到缓存 判断当前类继承自期望类,加载该类并加入缓存对应代码在ParserConfig#checkAutoType中: 前置知识2:fastjson在1.2.73版本的修改中,对方法JavaBeanDeserializer#createInstance进行了修改。当类属性与显示指定的期望类不相同时,会对该类属性进行实例化,被实例化之后的属性(包括setter方法的参数、public ...
通过Sanitizer让CodeQL查询到正确的path
一、问题描述大家在使用CodeQL复现历史漏洞时,可能经常会碰到查询出来的Path和实际执行的不一致的问题,例如: 在复现Log4j2 RCE漏洞时,我们debug实际执行的路径是这样的: 但是在CodeQL查询出这样一条Path 实际执行时调用的是DefaultReliabilityStrategy类的log方法,但是查询结果中却是AwaitCompletionReliabilityStrategy类的 二、问题分析通过观察源码 我们发现这两个类都实现了LocationAwareReliabilityStrategy接口 所以在分析以下代码时: 1((LocationAwareReliabilityStrategy) strategy).log(this, getName(), fqcn, location, marker, level, message, throwable) CodeQL不能确定此处实际使用的是哪个实现了LocationAwareReliabilityStrategy接口的实现类,所以数据流会传播到LocationAwareReliabilityStra ...
一文学会RocketMQ远程命令执行漏洞(CVE-2023-33246)
本文首发于FreeBuf https://www.freebuf.com/articles/web/367614.html 1.了解RocketMQ RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件 下面画个图简单理解一下RocketMQ的消息收发模型与漏洞相关的点:参考 Broker节点启动后会在NameServer节点进行注册。 DefaultMQAdminExt类可以通过与 NameServer 交互来获取和修改相关配置信息。 FilterServerManager类用于管理过滤服务器(Filter Server)的类。过滤服务器负责处理消息过滤规则的注册、更新和删除,以及消息过滤的评估和匹配。(产生漏洞的类) 2.环境搭建参考RocketMQ 最新漏洞手把手复现 CVE-2023-33246 docker 拉取镜像 12docker pull apache/rocketmq:4.9.1docker pull apacherocketmq/rocketmq-console:2.0.0 启动NameServer 1docker run ...
从Java Agent到内存马
本文首发于FreeBuf https://www.freebuf.com/articles/web/367614.html 一、初识Java Agent参考:https://lsieun.github.io/java-agent/s01ch01/java-agent-overview.html 在 Java Agent 当中,核心的作用是进行 bytecode instrumentation(字节码插桩) 1.Java Agent启动方式对于.class文件修改(插桩)有三种不同的时机:![image-20230515205703449.png](/images/从Java Agent到内存马.assets/1685066853_64701465ec31f24320a10.png!small)图片引用自:https://lsieun.github.io/java-agent/s01ch01/java-agent-overview.htmlJava Agent只关注正在加载和加载后的情况 对应这两种时机,有两种启动Java Agent的方式: 命令 ...
PomEye|一款java第三方组件版本识别及漏洞检测GUI工具
本文首发于FreeBuf https://www.freebuf.com/sectool/366383.html 在Java代码审计中,我们经常需要对引用的第三方组件进行审计。但是我们手工去查看项目中每个组件的版本并去搜索相关漏洞实在是有些繁琐。为了解决这个问题,我先是在网上找相关的工具,用起来也不太顺手。于是乎,我使用Python写了一个用起来还算顺手的工具,分享给大家。下面简单介绍一下该工具并讲解一下整个项目的架构。 工具地址:PomEye 工具简介 打开工具后可以上传单个pom.xml文件或者整个maven项目 程序会自动检测pom.xml文件中的组件版本,当子项目的组件版本未知时递归的查找其父项目的该组件的版本号。 然后程序会根据识别出的组件版本利用第三方漏洞库查询组件漏洞全部检测完毕后会打开组件信息界面组件信息界面分为上下两部分: 上半部分是项目依赖的所有的第三方组件信息,包括组件的版本、漏洞等级和来源pom文件。 当点击某个组件所在行时,下方会展示出该组件在当前版本下的所有漏洞详情,漏洞详情包括:漏洞名称、危险等级、影响版本、CVE编号、CWE编号、漏洞详情及sny ...
自己动手写Filter型内存马
本文首发于FreeBuf https://www.freebuf.com/articles/web/365501.html 在学习了白日梦组长师傅的《java内存马专题1-servlet内存马》后深受启发,决定自己去探索学习一下Filter型内存马,收获颇多,在此分享给大家。 一、神奇的tomcat为了学习tomcat内存马,我们应该先了解一下tomcat的基本结构 Tomcat = WEB 服务器 + Servlet 容器 Connector做的事情: 监听网络端口 接收网络请求 读取请求中的字节流,并将字节流转换为Request对象 将Request对象发送到Container ,同时接收Container 返回的Response对象 转换Response对象为字节流并响应网络请求 小结:Connector是Tomcat与外部连接的通道,接收各种不同协议的网络请求 为了学习tomcat内存马,我们需要重点关注的是处理内部 Servlet的Container Container使用Pipeline-Valve管道来处理request对象: Valve表示管道 ...
实战|使用Turbo Intruder寻找短信轰炸漏洞
首发于FreeBuf https://www.freebuf.com/vuls/364750.html 近日,在对某个网站进行漏洞挖掘时,发现一个会导致短信轰炸的逻辑漏洞。在用户注册页面,可以获得发送手机验证码的数据包,然后并发的发送该数据包,导致同一个手机号收到大量验证码,造成短信轰炸漏洞。 Turbo IntruderTurbo Intruder 是一个 Burp Suite 的插件,用于发送大量 HTTP 请求并分析结果。它旨在通过处理需要异常速度、持续时间或复杂性的攻击来补充 Burp Intruder。插件下载地址:https://github.com/PortSwigger/turbo-intruder关于安装插件中遇到的一些问题,可以看我另一篇博客:Burpsuite安装Turbo Intruder插件报错问题 默认脚本race.py解析Turbo Intruder自带了很多优秀的脚本,我们来分析一下待会儿会用到的race.py脚本。 首先,这个脚本定义了一个名为queueRequests的函数,它接受两个参数:target 和 wordlists。 在函数内部 ...
初窥weblogic漏洞之XMLDecoder和T3反序列化漏洞
首发于FreeBuf https://www.freebuf.com/articles/web/363612.html 声明 感谢奇安信 CERT提出《WebLogic安全研究报告》一文和其中提出的搭建WebLogic环境的工具。本文为学习和复现此文章后进行的总结与反思,并做了相应的补充。注:文中引用部分均已标注 Oracle WebLogic Server 是一个统一的可扩展平台,专用于开发、部署和运行 Java 应用等适用于本地环境和云环境的企业应用。它提供了一种强健、成熟和可扩展的 Java Enterprise Edition (EE) 和 Jakarta EE 实施方式。 1.什么是web中间件web中间件是服务器上web端口的翻译官。用户发送http请求到80端口。中间件负责解析请求,告诉服务器用户要请求哪些文件,并根据文件类型调用相应的脚本语言进行解析。(接受处理http请求,返回html或json) web中间件作用:路由、身份认证、日志、缓存 例子: Servlet、JSP、Spring MVC、weblogic 区分web中间件和web容器: Web ...
Burpsuite安装Turbo Intruder插件报错问题
文末附上修改好并重新编译的jar包 项目场景看别人文章时,发现一款神仙插件Turbo Intruder,准备安装下来 先是在Burpsuite商店安装,发现不能用,使用时报错,然后去github把源码下载下来安装 https://github.com/PortSwigger/turbo-intruder 问题描述安装后,准备使用它自带的脚本跑一下 发现报错,查看日志发现是以下错误 123456There was an error executing your Python script. This is probably due to a flaw in your script, rather than a bug in Turbo Intruder :) If you think it is a Turbo Intruder issue, try out this script: https://raw.githubusercontent.com/PortSwigger/turbo-intruder/master/resources/examples/debug.py For ...