Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为Java 对象,但是fastjson有漏洞,因为我们需要有检测工具去检测,那fastjson有漏洞检测工具吗?下面来我们就来给大家讲解一下。
我们在渗透测试发现fastjson资产情况下,找不到利用工具,这里推荐一款图形化的工具
1.下载地址
https://github.com/nex121/FastjsonEXP
2.利用工具实现Fastjson 1.2.47 远程命令执行漏洞
靶场:Vulhub靶场,docker启动。
vulhub/fastjson/1.2.47-rce
docker-compose up -d
1.检测漏洞是否存在
这里我们在输入目标地址的时候,要输入http,否则可能不能解析。
如果存在fastjson漏洞的话,会弹出存在漏洞的弹框。
2.漏洞利用
在下载连接里有两个连接地址,第一个是工具,第二个是利用脚本。我们将这两个放在同一目录下。
然后,按照下面步骤
在第三步监听后,会创建监听
然后,执行第四步和第五步之后,点击发送,会执行命令。
我们去容器中查看命令是否执行成功,可以看到已经创建成功了。
这里还有远程的使用方法,只要把fastjson_tool.jar放在远程服务器(linux)的root目录下
输入账号密码后,点击测试看是否连接成功。成功后,直接在下面输入攻击地址,再输入版本号,点击发送即可。
fastjson如何处理日期?
fastjson处理日期的API很简单,例如:
JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")
使用ISO-8601日期格式
JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);
全局修改日期格式
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd"; JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
反序列化能够自动识别如下日期格式:
ISO-8601日期格式
yyyy-MM-dd
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm:ss.SSS
毫秒数字
毫秒数字字符串
.NET JSON日期格式
new Date(198293238)
fastjson处理日期的问题还是很简单的,如果遇到日期问题的,我们按照以上的方法就可以解决了,另外,fastjson检测漏洞工具可以参考以上步骤哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: