Ysoserial Part 1 —— 源码分析

Posted 赛博少女

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ysoserial Part 1 —— 源码分析相关的知识,希望对你有一定的参考价值。


开个坑,还没有很整体的看过ysoerial里面的链,打算拿出点时间来看。

今天首先整体看下ysoserial的整体源码结构。大概看了下,没有对每个类进行很细致看,后面会对每个链进行逐一分析。

Ysoserial整个项目,主要包括:

1.exploit类,用于远程attack

2.payload生成类,用于根据gadget生成序列化字节码

3.辅助类,序列化、反序列化、字符串处理、反射等重复性操作封装为辅助类

4.gadget,主要定义为定义好的利用链

 

都知道ysoserial有两种使用方式

java -jar  执行payload文件夹中类,本地生成序列化的攻击载荷

java -cp  指定在exploit包中的主类执行,用于远程攻击 多为JRMP相关


一、本地载荷生成入口类ysoserial.GeneratePayload




Ysoserial Part 1 —— 源码分析

 

二、payloads




每一个Payload实现了ysoserial.payloads.ObjectPayload接口

接口中有一个ysoserial.payloads.ObjectPayload#getObject 方法,用来返回待序列化的有效载荷对象,参数为反序列化时需要在目标执行的命令。

Ysoserial Part 1 —— 源码分析

ObjectPayload中还有一个内部类ysoserial.payloads.ObjectPayload.Utils

getPayloadClasse方法在入口文件中用于通过传入的参数(也就是类名)获取对应的class,通过Class.forname() 实现

Ysoserial Part 1 —— 源码分析

ysoserial.payloads.ObjectPayload.Utils#makePayloadObject,于getObject功能类似,主要在exploit执行时调用Payload时用

Ysoserial Part 1 —— 源码分析

拿URLDNS举例,回头再看Payload类  main+getobject

PS:annotaion注解、util 封装了一些反射方法


四、参考链接




https://www.cnblogs.com/tr1ple/p/12437310.html


This browser does not support music or audio playback. Please play it in Weixin or another browser.

以上是关于Ysoserial Part 1 —— 源码分析的主要内容,如果未能解决你的问题,请参考以下文章

java反序列化-ysoserial-调试分析总结篇

ysoserial CommonsColletions2分析

java安全——ysoserial工具URLDNS链分析

ysoserial分析7u21和URLDNS

java安全——ysoserial工具URLDNS链分析

java安全——ysoserial工具URLDNS链分析