Ysoserial Part 1 —— 源码分析

admin 2022年7月6日08:40:07评论81 views字数 876阅读2分55秒阅读模式


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

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

Ysoserial整个项目,主要包括:

1.exploit类,用于远程attack

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

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

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

Ysoserial Part 1 —— 源码分析

 

都知道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

Ysoserial Part 1 —— 源码分析

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


四、参考链接




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



原文始发于微信公众号(赛博少女):Ysoserial Part 1 —— 源码分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月6日08:40:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ysoserial Part 1 —— 源码分析http://cn-sec.com/archives/820325.html

发表评论

匿名网友 填写信息