和 TemplatesImpl 链的区别TemplatesImplBCEL是否需要 SupportNonPublicField✅ 必须❌ 不需要环境依赖无需要 Tomcat(tomcat-dbcp)利用难度条件苛刻相对宽松不需要 代价就是依赖 Tomcat 环境,目标没有 tomcat-dbcp 依赖就打不了。 getConnection()环境准备pom.xml 加上 Tomcat 依赖:<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp
version>1.2.24</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp tomcat-dbcp: 结合tomcat-dbcp这个类进行组合达到触发fastjson的目的: tomcat-dbcp里面有一个BasicDataSource类,在反序列化的时候会调用getConnection
第二种利用方式则需要应用部署在Tomcat应用环境中,因为Tomcat应用环境自带tomcat-dbcp.jar 对于SpringBoot这种自带Tomcat可以直接以单个jar文件部署的需要在maven中配置tomcat-dbcp 利用环境需要实际下载Tomcat应用环境或者在maven中配置如下依赖: <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp
or 8u113 ) fastjson两种利用方式 - 出网或者不能出网 1.服务器出网 使用jndi注入 -ldap -rmi 2.服务器不能出网 直接本地反序列化 -BasicDataSource(tomcat-dbcp :7.x,tomcat-dbcp:9.x,commons-dbcp:1.4) -TemplatesImpl 出网 jndi利用,其中分为rmi或者ldap,使用ldap限制比rmi小 rmi利用 java $r$d6uG$e5$_$H$X$vT$R$C$A$A"} 黑白盒测试方法 利用链及版本 Payload PayloadType Dependencies BasicDataSource local tomcat-dbcp :7.x, tomcat-dbcp:9.x, commons-dbcp:1.4 JdbcRowSetImpl jndi Fastjson 1.2.47及以下 TemplatesImp local need
s, true); 0x02 利用链 添加tomcat依赖 <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp
</dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp
1.2.24</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp 依赖tomcat-dbcp,直接看利用链。利用链没有太乱,比较简单。
/depycode/fastjson-local-echo 适用场景: fastjson <= 1.2.24 1.2.33 <= fastjson <= 1.2.47 jdk <= 8u251 存在 tomcat-dbcp