Git Product home page Git Product logo

ysomap's Introduction

YSOMAP

Platforms Java version License

Ysomap is A helpful Java Deserialization exploit framework based on ysoserial

0x00 闹着玩系列一:仍在开发中

DONE

  • CommonsCollections系列,可达成远程jar载入、命令执行、代码执行、发起jndi效果
  • RMIRegistryExploit 包括最初的和绕过方式,(支持到JDK8u232_b09版本),原理
  • RMIListener 原JRMPListener
  • RMIRefListener 配合jndi使用,利用原理
  • SimpleHTTPServer 挂载恶意的class文件或jar文件,填写具体代码或需执行的命令即可
  • URLDNS
  • LDAPRefListener、LDAPLocalChainListener 前者使用reference的方式,后者使用目标环境下的反序列化利用链,原理
  • RMIConnectWithUnicastRemoteObject 增加JRMP反连Payload,这部分暂时没有在攻击RMI Registry的时候成功?虽然原理上为绕过方法之一,但在测试时并未成功,原因第0x07部分
  • JMXInvokeMBean 增加对JMX Server的攻击,原理
  • JMXMLetExploit 利用MLet的形式动态加载远程MBean.jar文件
  • JMXEvilMLetServer 挂载恶意MLet.xml文件和jmxmletpayload.jar文件,jar文件可执行任意命令,任意代码执行暂时没写
  • 支持fastjson JdbcRowSetImpl、TemplatesImpl gadget,原理
  • 支持XStream EventHandler、ImageIO、LazyIterator、Groovy gadget,原理
  • 修正RMIConnectWithUnicastRemoteObject,使得RMIRegistryExploit可攻击到<8u242版本

TODO

0x01 起因

在实际分析ysoserial的利用链时,有时候会觉得框架写的太死,有以下几个缺点:

  1. 同一个利用链如果想改变一下最后的利用效果,如命令执行改成代码执行,我们需要改写这个利用链或者是重新增加一个利用链。这时,我们其实可以看到利用链的前半部分是不变的,变的只是后续的利用效果。
  2. ysoserial仅实现了常规的序列化利用链,对于类似JSON格式的序列化利用链,以当前的这个框架扩展起来会比较麻烦

所以萌生了开发一个更加灵活的框架来扩展反序列化利用链,也就是当前这个试验品ysomap。

0x02 原理

我将利用链切分成了两个部分payloadbullet

  1. payload:指代利用链的前序部分
  2. bullet:指代最终利用链可达成的效果

实际案例分析

CommonsCollection1和3,在分析时我们可以看到实际1和3的区别在于1使用的是InvokerTransformer,而3使用的是templatesImpl的方式。那么提取相同的前序payload部分,我们只需写两个不同的bullet即可。而且这两个bullet也同样能被用在其他的payload上。

实际还有就是我在写RMIRegistryExploit时,也有这种可将不变部分重用的地方,而无需2,3之类的出现。

0x03 使用方法

生成

使用mvn clean package -DskipTests

生成的jar位于cli/target/ysomap-cli-0.0.1-SNAPSHOT-all.jar

执行java -jar ysomap-0.0.1-SNAPSHOT-all.jar

payload默认生成obj.ser文件在当前目录,为序列化后的数据。

基础使用

框架采用方式跟msf类似

总体的workflow:

调用一个exploit

  1. use exploit xxxx设置一个exploit
  2. show options获得当前exploit需要配置的信息,如果需要设置一个gadget则use payload xxx
  3. 设置完成后run

调用一个payload

  1. use payload xxxx 设置一个payload
  2. show options获得当前payload的配置信息,会提示可以选择的bullet信息
  3. use bullet xxxx 给当前的payload装上子弹
  4. show options可以看到包括payload和bullet的配置信息
  5. 配置完成后run,payload模式会自动在当前目录下生成一个obj.ser文件

可使用的命令

1.查看当前可用的exploits/payloads/bullets

list [exploits|payloads|bullets]

2.使用指定的bullet/payload/expliot

use [bullet|payload|exploit] name

3.查看当前的设置选项

show options

4.设置当前的选项

set key value

5.运行当前的payload/exploit

run

6.查看当前运行着的exploits sessions

sessions

7.停止某一session

删除所有kill all

删除指定kill 0

8.其余的看help

0x04 感谢

@ysoserial:https://github.com/frohoff/ysoserial

ysomap's People

Contributors

lalajun avatar wh1t3p1g avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.