FastJson是一款由阿里开发的Java库,专门用于Bean与JSON之间的高效转换。它提供了toJSONString和parseObject方法,用于Java对象与JSON格式字符串的双向转换。然而,FastJson在1.2.24版本存在远程命令执行漏洞,源于其在解析JSON时,未对`@type`字段进行充分的安全检查。漏洞原理是,Fastjson在反序列化过程中,如果用户输入的JSON包含恶意`@type`,它会尝试实例化指定类并调用其set/get方法,这可能导致恶意代码执行。攻击者通过构造特定格式的JSON,可以利用这个漏洞执行远程命令,获取敏感信息,甚至对服务器数据进行操控。要复现这个漏洞,首先需要环境准备,包括安装Docker、vulhub、Java 8、Maven和相关的安全工具。然后,在1.2.24-rce版本的Fastjson中,通过curl发送JSON格式的POST请求,如果返回正常,就表明存在漏洞。需要注意权限问题,确保恶意代码能够执行。通过搭建HTTP服务和RMI服务,以及DNSlog的利用,可以成功地远程执行命令并回显结果。随着Fastjson版本的更新,漏洞策略也在不断调整,例如1.2.41-rce版本通过去掉className中的特定字符进行防护,但仍有绕过方法。1.2.43-rce版本增加了对特定字符串开头的判断,需要通过添加特殊字符来规避。1.2.47-rce以后,autotype默认关闭,但缓存机制可能导致新的漏洞形式。总结来说,FastJson的远程命令执行漏洞源于其对用户输入的JSON类型字段处理的不严谨,攻击者利用这个漏洞进行恶意代码执行,因此在使用FastJson时,务必确保其版本安全,对用户输入进行严格的验证和过滤,以防止此类漏洞的发生。