Fastjson漏洞常见问题
- Fastjson漏洞原理
Fastjson autoType处理json对象时,没有对@type字段进行完整的安全性验证,攻击者可以传入危险的类并调用危险类连接RMI服务器,通过恶意类执行恶意代码,实现远程代码执行漏洞。

- Fastjson漏洞危害
远程代码执行RCE:控制服务器
敏感数据泄露:读取数据库、配置文件等
拒绝服务(Dos):构造畸形JSON导致CPU/内存耗尽
供应链攻击:影响依赖Fastjson的第三方应用 - Fastjson漏洞修复
严格限制反序列化的数据来源
升级Fastjson,
关闭autoType
改用jackson或Gson库
设置WAF,拦截包含@type、$ref等关键字的请求
使用安全地配置,设置白名单
严格限制服务器出站流量,只允许访问必要地服务器和端口(最小权限原则) - Fastjson漏洞流量攻击案例


- Fastjson漏洞攻击流量进行绕过waf操作,如何研判是恶意告警?
绕waf核心:隐藏恶意域名或隐藏攻击载荷。
常见绕过技术包括:
字符编码/加密:Hex编码、Unicode转义(\u0041代表'A')、base64编码等。
特定语法特征:利用fastjson的@type特性,使用LLL、{、【等符号指向数组或内部类。
ALias别名或未知利用链:利用目标环境中已知的、在Fastjson中配置了别名的合法类,该别名可能不存在WAF黑名单中,但该类的某个属性存在利用链。
研判
fastjson反序列化攻击成功的标志通常是目标服务器向外发起网络连接。
1、网络层告警:
出口连接告警:向非信任的、通常是公网上的IP发起连接;LDAP、RMI、DNS等协议。
DNS查询告警:使用DNS来隐藏地传输信息或绕过网络限制,异常的子域名查询、域名长度异常或看起来像随机字符串查询。
2、主机层/EDR告警
可疑进程创建:java进程创建子进程,如cmd.exe、bash、powershell。
命令行参数:java进程的命令行中包含可疑的-C参数或执行了编码后的命令。
敏感文件访问:java进程访问/etc/passwd、
权限提升:java进程尝试调用高权限操作。
3、日志分析
HTTP请求异常:POST请求的Body部分包含大量转义字符(\u002d)、base64编码字符串、或明显的@type字段。
Content-Type:修改content-type值来绕过简单的waf过滤规则。
Fastjson错误日志:短时间内大量parse error、autotype is not support等异常,此类错误日志是遭受扫描或攻击的强烈信号。
JNDI注入相关错误:可能会看到连接恶意LDAP/RMI服务器失败javax.naming.CommunicationException、找不到恶意类等错误java.lang.ClassNotFoundException。
Fastjson反序列化漏洞攻击成功如何判断?
反序列化漏洞的本质是让服务端执行任意代码。
1.出站网络连接:java应用服务器突然向外部的、未知的IP地址或域名发起网络连接(服务器网络监控:使用netstat -antp 命令查看异常ESTABLISHED连接。防火墙/IPS/IDS日志:查看是否有内部服务器主动连接外部可疑IP,尤其是非标准端口,如1234、4444、53等。云平台流量日志)
2.DNS查询:查看服务器上的DNS缓存记录。查看内部DNS服务器或公共DNS解析器的查询日志,寻找可疑域名。
3.进程创建:出现异常的、Java进程(java或tomcat用户)启动的子进程,例如cmd.exe,/bin/bash,curl,wget,powershell等。
文件系统操作:写入文件:在web目录下写入webshell(如.jsp,.jspx文件),创建或修改文件:在临时目录或用户目录下创建恶意类文件、木马程序或挖矿程序。


应急响应
1、检查网络连接:运行netstat -antp | grep ESTA 查看所有建立连接的进程和外部地址。重点关注不熟悉的IP和端口。
2、检查进程:使用ps aux | grep java 或top 命令查看是否有异常java进程或高资源占用的未知进程。
3、查找webshell:立即使用扫描工具或手动检查web应用的根目录和所有子目录,查找最近创建的、可疑的.jsp文件。
4、
5、如果条件允许,可以在沙箱或测试环境中重放攻击载荷,观察其具体行为,从而在生产环境中更有针对性地寻找痕迹。


浙公网安备 33010602011771号