执行命令相关
static{}、{}、constructor():
Class.forName会执行static{}
.newInstance会执行所有三个
new也会执行三个
Class.class一个也不执行
defineClass不会执行static{},需要再Class.newInstance()
学了一手ScriptEngineManager:
1 | EL: 貌似有问题 |
Spel+scriptEngine最强资料:
1 | https://www.mi1k7ea.com/2019/04/05/Spring-Data-Rest%E4%B9%8Bcve-2017-8046%E5%88%86%E6%9E%90/ |
1 | Runtime.getRuntime().exec("/bin/bash -c open${IFS}-a${IFS}calculator"); //可以 |
反序列化触发点:
ObjectInputStream.readObject // 流转化为Object
ObjectInputStream.readUnshared // 流转化为Object
XMLDecoder.readObject // 读取xml转化为Object
Yaml.load // yaml字符串转Object
XStream.fromXML // XStream用于Java Object与xml相互转化
ObjectMapper.readValue // jackson中的api
JSON.parseObject // fastjson中的api
JRMP Fuzz Gadget
很多时候需要Fuzz Gadget,这里有三个思路:
- sleep,这个不多说,burp那个插件就是这个思路。
- DNS,这个不多说,burp那个插件也有这个思路。
- JRMP,这个比较骚,比如能JRMPClient打出来,我们可以写一个Evil JRMPListener,枚举所有gadget,然后结合DNS即可快速fuzz