文章预览
概述 Rhino 是完全使用 Java 编写的 JavaScript 的开源实现,使 Java 可以调用 js 脚本,实现脚本语言与 Java 语言的数据交换 如果使用了与 Ubuntu 或 Debian 捆绑在一起的 OpenJdk,则可能依然存在此条利用链 这里使用的依赖版本为 rhino-javascript-1.7R2 MozillaRhino1 ScriptableObject 首先看看官方的解释 这是 Scriptable 接口的一个默认实现,这个类提供了很多方法,能够通过这些方法定义 JavaScript 对象的多种属性和方法 我们看看 Scriptable 接口的解释 这个接口是所有javaScript对象都必须要实现的,提供了属性的管理和转换执行功能 在这个类中存在有调用链中相关的一个属性 slots ,是一个使用 transient 修饰的 Slot 数组 对于 Slot 类,他是一个抽象类,我们需要关注他的子类 GetterSlot 存在有两个属性 getter / setter 接下来我们来看看这条链子的入口点 NativeError 跟进 org.mozilla.javascript
………………………………